第四章 测试用例的设计
软件测试的最关键因素是:在所有可能的测试用例中,哪个自己最有可能发现最多的错误?
测试方法分类:
黑盒测试 白盒测试
等价类划分 语句覆盖
边界值分析 判定覆盖
因果图分析 条件覆盖
错误猜测 判定/条件覆盖
多重条件覆盖
白盒测试
逻辑覆盖测试
语句覆盖:从完全路径准则出发,程序中的每条语句都要执行一遍;但不一定能执行到每个判断的每个分支;
判定覆盖或分支覆盖要求必须编写足够的测试用例,使得每个判断都至少有一个为真或假的输出结果。即每个分支路径都要执行一遍。
判定覆盖通常可以满足语句覆盖。由于每条语句都是在要么从分支语句开始,要么从程序入口点开始的某条子路径上,如果每条分支路径都被执行到了,那么每条语句也应该被执行到了。但是,仍然还有至少三种例外情况:
*程序中不存在判断。
*程序或子程序/方法有着多重入口点。只有从程序的特定入口点进入时,某条特定的语句才能执行到。
*在ON单元( on-unit)里的语句。遍历每条分支路径并不一定能确保所有的ON单元都能执行到。
比判定覆盖更强一些的准则是条件覆盖。在条件覆盖情况下,要编写足够的测试用例以确保将一个判断中的每个条件的所有可能的结果至少执行一次。因为就如同判定覆盖的情况一样,这并不总是能让每条语句都执行到,因此作为对这条准则的补充就是对程序或子程序,包括ON单元的每一个入口点都至少调用一次。
判定/条件覆盖准则