第三步:用自动用例捕捉漏网之鱼
还是上面的例子,假如程序员完全忘了有空指针这回事,把代码写成这样:
voidFunc(int* p) { *p = 0; } |
由于判断p是否为空指针的代码不存在,白盒覆盖当然不会提示“某某代码或某某分支未覆盖”,因此,白盒覆盖不能发现“程序员未处理某些特殊输入”形成的错误,即使达到了无与伦比的白盒覆盖率,仍然不能保证找出所有等价类。
程序员会忘记处理哪些输入呢?常见的输入一般是不会记的,否则程序的起码功能都未实现,容易忘记的是一些"偏僻"的输入,例如,空指针、空字符串、很大的数、很小的数、合法取值边界附近的值等等,从输入的角度来看,这些特殊值通常跟数据类型有关,从程序的行为来看,这些特殊输入常常会导致崩溃、产生异常,或超时,即具有行为特征,正好是自动用例可以发现的,因此,可以利用自动用例来捕捉“程序员未处理某些特殊输入”形成的错误。这就是“三步法”中的第三步。
版权声明:本文出自VisualUnit的51Testing软件测试博客:http://www.51testing.com/?35658
原创作品,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。