模拟一下输入:
这个数字远超了2000的限额,但是竟然预定成功了.这个2147483647是不是很眼熟?没错,这是int类型的最大值,因为这个值再加上1000的时候超出了int类型的范围,所以结果反而变成了负的。一句话归结其原因:数字越界使校验条件失效。
所以在单元测试中,有一项测试叫做边界测试(也有叫做临界测试),如果一个方法接受的是int类型,那么以下三个值是必测的:0、正最大、负最小。如果这三个值都没问题,这个方法才是比较安全可靠的。
其中正最大和负最小是边界值,如果这三个值没有问题,方法才是安全可靠的.我们的例子就是因为缺少边界测试,导致生产系统产生了严重的偏差.
就算你再Web界面做出了严格严谨的校验,但其实也只能防普通用户(这里普通用户指不懂HTML、不懂HTTP、不懂Java的简单使用者),而对于高手,这些校验基本上就是摆设,通过对数据进行拦截分析,再写个模拟器进行发送,一切的前段校验就都变成了浮云!!
所以,必要的数据验证要放在服务端进行。
本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5424950.html,如需转载请自行联系原作者