边界测试基础
边界测试就是依据各数据类型预先定义的边界值,自动生成测试用例进行测试。VU把边界测试作为完整测试的第三阶段,即在完成基本功能测试、白盒测试后,还要运行边界测试
在
达到100%的语句、条件、分支、路径覆盖后,可以说测试完整性已经非常高了,为什么还要运行边界测试呢?因为有一种常见的代码错误是白盒覆盖不能发现
的:忘记考虑特殊输入!由于白盒覆盖是以代码为基础的,如果处理特殊输入的代码不存在,白盒覆盖当然不会发现"某某代码未覆盖"了
特殊输入一般跟数据类型有关,并且未处理特殊输入常常导致程序产生异常,根据这两个条件,预先为数据类型定义特殊的值(边界值),依据这些边界值自动生成测试用例进行测试,常常能够发现意料之外的错误,这就是边界测试
边界测试很简单,只要打开"边界测试开关",运行测试时就会同时执行边界测试
假如这里没有考虑输入可能是空指针
测试时也没有考虑到空指针输入
已经完成白盒覆盖了,但是并没有发现忘记判断空指针的问题。
现在运行一下边界测试
打开边界测试开关就可以运行边界测试。
这是边界测试开关
再次运行测试后,VU报告产生了一个异常,点击它看一下是什么原因
当输入为空指针时,产生了异常。发现了问题,解决起来就简单了:在代码中加入处理空指针输入的代码,重新完成白盒覆盖
有些程序错误并不会产生异常,可以浏览输入输出数据来查看是否有错误。看一下这个最简单的示例
打开边界测试开关后,运行测试
有26个测试用例。VU会把人工建立的最后一个测试用例设为当前用例,因此可以看出,人工建立的测试用例只有1个,其他25个都是自动生成的边界测试用例
右击打开快捷菜单
由于VU把人工建立的最后一个测试用例设为当前用例,因此,下一个就是边界测试用例了,便以浏览边界测试的输入输出
两个负数相加,结果等于0
两个负数相加,结果等于一个很大的正数
到这里,应该可以发现问题了:当输入很大或很小时,会产生溢出错误
各种数据类型都可以定义边界值,如果参数的数据类型未定义边界值,打开边界测试开关后,编译时会产生错误。
边界测试也可以断言预期输出,及过滤部分输入,后续章节会进一步讨论