覆盖率测试分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
1、语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每一个语句至少执行一次,其覆盖标准无法发现判定中逻辑运算的错误。
2、判定覆盖是指选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结果至少出现一次,但若程序中的判定是有几个条件联合构成时,它未必能发现每个条件的错误。
3、条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支。
4、判定/条件覆盖是使判定中每个条件的所有可能结果至少出现一次,并且每个判定本身的所有可能结果也至少出现一次。
5、条件组合覆盖是使每个判定中条件结果的所有可能组合至少出现一次,因此判定本身的所有可能解说也至少出现一次,同时也是每个条件的所有可能结果至少出现一次。
6、路径覆盖是每条可能执行到的路径至少执行一次。
结合具体程序说明:
1 if(a>0 || b>0)
2 {
3 //...
4 }
5 else
6 {
7 //...
8 }
1、测试用例设计为 (1,-1)、(-1,-1),即可满足语句覆盖率为100%
2、同样(1,-1)、(-1,-1),也能满足判定覆盖率为100%,但是不满足条件覆盖率为100%
3、要想让条件覆盖率为100%,还需要增加b>0的情况,即(1,-1)、(-1,1),但是不满足判定覆盖率为100%
4、要想判定/条件覆盖率为100%,需要设计(1,1)、(-1,-1)
5、要想条件组合覆盖率为100%,需要设计(1,1)、(1,-1)、(-1,1)、(-1,-1)
总结:语句覆盖是一种最弱的覆盖,判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆盖外最强的,路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。