程序图:
1. 语句覆盖
定义: 选择足够的测试用例,使得运行这些测试用例时,被测试程序的每个语句至少执行一次
测试数据: x=4,y=2,z=0
2. 判定覆盖
定义:选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结果至少出现一次
测试数据:
1. x=3, y=3, z=0 (sacbd a为真,b为假)
2. x=1, y=2, z=0 (sabed a为假,b为真)
3. 条件覆盖
定义:选择足够的测试用例,使得选择这些测试用例时,判定中的每个条件的所有可能结果至少出现一次
测试数据:
1. x=1,y=2,z=0 (sacbed)
2. x=2,y=1,z=1 (sabed)
问题:满足了条件覆盖标准,但判定B为假的结果并未发现
4. 条件/判定覆盖
定义: 选择足够的用例,使得运行这些用例时,判定中每个条件的所有可能结果至少出现一次,并且每个判定结果也出现一次
测试数据:
1. x=4,y=2,z=0 (sacbed, a为真,b为真)
2. x=1,y=1,z=1 (sabd, a为假,b为假)
5. 条件给合覆盖
定义: 每个判定中条件结果的所有可能组合至少出现一次
测试数据:
判断a的条件组合:
1. y>1,z=0
2.y>1,z!=0
3. y<=1,z=0
4.y<=1,z!=0
判断b的条件组合:
可以选择4个测试用例来覆盖:
x=4,y=2,z=0 (sacbed)
x=1,y=2,z=1 (sabed)
x=2,y=1,z=0 (sabed)
x=1,y=1,z=1 (sabd)
有些路还是覆盖不到 sacbd
6. 路径覆盖
定义: 程序的每条可能执行到的路径至少经过一次
数据:
1. x=4,y=2,z=0 (sacbed)
2. x=3,y=3,z=0 (sacbd)
3. x=2,y=1,z=0 (sabed)
4. x=1,y=1,z=1 (sabd)
问题:不能代替条件覆盖和条件组合覆盖