谈谈最近的一个让我印象深刻的错误
最近一次让我印象深刻的error发生在Web大作业上。我的作业是写一个网上通缉系统,其中一个功能是管理员能够进入后台管理界面对其他用户的权限进行查看和更改。我完成这个功能后只使用了一个管理员账号对系统中的一个普通用户进行了权限更改测试,测试通过后我就认为这个功能被我顺利地实现了。
在整个系统完成,其它功能也进行了测试以后,我删除了数据库中所有的测试信息,认为项目展示不会有什么问题了。
项目展示那天,我在等待展示时创建了新的管理员账号和普通账号测试功能,然后我发现使用管理员账号在后台更改普通用户权限时,虽然提交后网页提示更改成功,但是页面刷新后普通用户的权限并没有改变,尝试更改别的用户的权限结果依然如此。我赶紧查看了更改数据库相关的代码,没有发现逻辑上有什么问题,但是更改提交后数据库中并没有发生任何改变。此时快轮到我展示了。
最后在查看在网页上提交更改的代码时,我发现我写的代码存在一些问题,会导致无论我请求更改的是哪个用户,最后提交的get请求都是将id为2的用户的权限更改为某某。而先前进行测试时,我测试更改的普通用户的id正好是2。这次测试,更改的普通用户的id不再是2了,所以错误才体现了出来。
这个bug虽然不算复杂,但是由于我测试使用的用例不足,导致它通过了测试,差点产生了非常严重的后果。这给了我很大的教训。像通过get请求传送id这么简单的过程也是可能出现错误的,所以在设计测试用例时应该充分的测试到所有的代码逻辑。软件测试就是这样,你永远也不会得出软件已经没有错误的结果,所以不经过充分测试而对自己的软件具有自信是不可取的。