一、概念
语句覆盖/代码行覆盖:目标☞保证程序中每一条语句最少执行一次,其覆盖标准无法发现判定中逻辑运算的错误;
判定覆盖/分支覆盖:是指选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结果至少出现一次,
但若程序中的判定是有几个条 件联合构成时,它未必能发现每个条件的错误;
条件覆盖:是指选择足够的测试用例,使得运行这些测试用例时,
判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支;
条件组合覆盖:是使每个判定中条件结果的所有可能组合至少出现一次,因此判定本身的所有可能解说也至少出现一次,
同时也是每个条件的所有可能结果至少出现一次;
路径覆盖: 是每条可能执行到的路径至少执行一次,试图覆盖软件中的所有路径;
语句覆盖是一种最弱的覆盖,
判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖,
路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。
条件组合覆盖是除路径覆盖外最强的
二、测试的时候:
条件组合覆盖为主, 路径覆盖为辅
三、帮助理解的小例子(借鉴他人)
if A and B then Action1
if C or D then Action2
①语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得A=true B=true C=true 即可。
②分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。上例需要设计测试用例使其分别满足下列条件即可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。
③条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。上例中第一个判断应考虑到A=true,A=false,B=true,B=false第二个判断应考虑到C=true,C=false,D=true,D=false,所以上例中可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false。④路径覆盖:要求覆盖程序中所有可能的路径。所以可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false(3)A=true,B=true,C=false,D=false(4)A=false,B=false,C=true,D=true。