通过Elisabeth Hendrickson的试题试题,我看到了以下建议:
数:32768 (2^15) 32769 (2^15+ 1) 65536 (2^16) 65537 (2^16 +1) 2147483648 (2^31) 2147483649 (2^31+ 1) 4294967296 (2^32) 4294967297 (2^32+ 1)
有人知道测试所有这些案例的原因吗?我的直觉符合开发人员可能使用的数据类型(整数、长、双.)
同样,对于Strings:
(255、256、257、1000、1024、2000、2048或更多字符)
发布于 2012-08-14 16:05:35
这些代表边界
整数
测试接近公共边界的值,以测试是否正确处理溢出(在各种整数类型中,算术溢出;在可能会使缓冲区溢出的长字符串情况下,缓冲区溢出)。
字符串
我怀疑诸如255、256、1000、1024、2000、2048这样的建议是基于经验/观察得出的,即一些开发人员可能会分配一个他们认为“无论如何都足够大”的固定大小的缓冲区,并且没有检查输入。这种态度导致了缓冲区溢出攻击。
发布于 2012-08-14 16:05:42
这些边界值接近于最大有符号short、最大unsigned short和int相同。测试它们的原因是查找在典型数据类型的边框值附近发生的bug。
例如,您的代码使用了签名的short,并且您有一个测试,测试的内容刚好在这类类型的最大值之上。如果第一个测试通过,而第二个测试失败,您可以很容易地看出,short上的溢出/截断是原因。
发布于 2012-08-14 16:06:41
这些数字是栅栏两边的边框(+1、0和-1),表示“整圆”计算机号码,它们总是2的幂。那些2的幂也不是随机的,它们代表整数精度的标准选择-- 8、16、32等位宽。
https://stackoverflow.com/questions/11956302
复制相似问题