目录
知识点:
例题 :
知识点:
语句覆盖:设计足够多的测试用例,使得被测试程序中的“ 每条可执行语句至少被执行一次”
- 优点:可通过源码观察直观地得到测试用例,无须细分每个判定表达式。
- 缺点:只对程序逻辑中的可执行语句的显式错误起作用,隐藏在程序中的其他错误无法准确测试。
判定覆盖:设计足够多的测试用例,使得被测试程序中的“每个判断的“真”、“假”分支至少被执行一次”
- 优点:测试的路径比语句覆盖多一倍,因此具有比语句覆盖更强的测试能力,而且判定覆盖与语句覆盖一样简单,无须细分每个判定即可得到测试用例。
- 缺点:一般程序中的判断语句是由多个逻辑条件组合而成,因此仅仅判断其最终结果,而忽略每个条件的各种取值情况,必定会导致部分测试路径遗漏。
条件覆盖:设计足够多的测试用例,使得被测试程序中的每个判断语句中的“每个逻辑条件的可能值至少被满足一次”
- 优点:一般而言条件覆盖比判定覆盖要强,因为条件覆盖使判定条件中每个条件都取到了不同的结果,而判定覆盖无法保证这一点。
- 缺点:条件覆盖只能保证每个条件都取到不同的结果,但无法保证每种判定结果都满足。
判定-条件覆盖:设计足够多的测试用例,使判断中“每个条件的所有可能取值至少执行一次”(条件覆盖),与此同时还保证“每个判断本身所有结果也至少执行一次”(判定覆盖)。即同时满足100%判定覆盖和100%条件覆盖的标准。
- 优点:弥补了判定覆盖和条件 覆盖各自的缺陷
- 缺点:当程序中还有多个判断结构时,容易出现不同的条件组合导致不同的结果,但判定/条件覆盖并未考虑这种条件组合的情况。
条件组合覆盖:又称组合覆盖,是指“每个判断语句中的各个条件的各种可能组合都至少执行一次”,因此条件组合覆盖的测试用例可满足判定覆盖、条件覆盖以及判定/条件覆盖。
- 优点:以同时满足判定覆盖、条件覆盖、判定/条件覆盖,可弥补三者的不足,从而对程序做更严格的测试,覆盖率更高。
- 缺点:需要考虑程序中所有的判断结构,并将判断结构中的各条件的所有可能组合都至少执行一次,因此设计的 测试用例数量较多,执行所花费的时间也会更长。
路径覆盖:考虑所有可能执行的路径。
优点:路径覆盖是 6 种逻辑覆盖方法中 覆盖率最高的白盒测试用例设计方法。
缺点:当需要考虑程序中所有可能执行的路径,尤其是判断结果比较多时,测试用例的设计量就会很大,测试用例的编写就会比其他方法耗时更多,整个测试过程也会被拉长。
例题 :
//被测程序 1 int doWork(int x,int y,int z) { 2 int k=0,j=0; 3 if((x>3)&&(z<10)) { 4 k=x*y-1; 5 j=sqrt(k); } 6 if((x==4)||(y>5)) { 7 j=x*y+10; 8 j=j%3; } 9 return j; }
1. 分析程序,画出程序流程图
2. 根据程序流程图对程序进行白盒测试:
① 语句覆盖,语句块,执行至少1次。
② 判定覆盖,判定节点,整体,真,假,执行至少1次。
③ 条件覆盖,判定节点,局部,真,假,执行至少1次。
④ 判定-条件覆盖,判定节点,整体,局部,真,假,执行至少1次。
⑤ 条件组合覆盖,判定节点,内部条件的组合,跨判定节点的条件组合无需考虑。
⑥ 路径覆盖,判定节点,真,假,至少执行1次。
3.测试用例:
(1)语句覆盖
用例编号
x
y
z
覆盖语句
Case1
4
6
8
3,4,5,6,7,8,9
(每行代码对应的编号)
(2)判定覆盖
x>3 && z<10 :P1
(x==4)||(y>5): P2
用例编号
x
y
z
P1
P2
覆盖路径
Case1
5
3
9
T
F
abceghi
Case2
4
6
11
F
T
abdefhi
(3)条件覆盖
x>3 : C1
z<10 : C2
x==4 : C3
y>5 : C4
用例编号
x
y
z
C1
C2
C3
C4
P1
P2
覆盖路径
CASE1
4
6
8
T
T
T
T
T
T
abcefhi
CASE2
2
4
12
F
F
F
F
F
F
abdeghi
CASE3
5
4
8
T
T
F
F
T
F
abceghi
CASE4
4
6
12
T
F
T
T
F
T
abdefhi
(4)判定-条件覆盖
用例编号
x
y
z
C1
C2
C3
C4
P1
P2
覆盖路径
CASE1
4
6
8
T
T
T
T
T
T
abcefhi
CASE2
2
4
12
F
F
F
F
F
F
abdeghi
(5) 条件组合覆盖
x>3 && z<10 :
x==4)||(y>5):
用例编号
x
y
z
C1
C2
C3
C4
P1
P2
覆盖路径
CASE1
5
5
7
T
T
F
F
T
F
abceghi
CASE2
4
5
12
T
F
T
F
F
T
abdefhi
CASE3
5
6
12
F
F
F
T
F
T
abdefhi
CASE4
4
5
8
T
T
T
F
T
T
abcefhi
CASE5
5
6
8
T
T
F
T
T
T
abcefhi
CASE6
2
4
12
F
F
F
F
F
F
abdeghi
(6) 路径覆盖
用例编号
x
y
z
C1
C2
C3
C4
P1
P2
覆盖路径
CASE1
4
6
8
T
T
T
T
T
T
abcefhi
CASE2
2
4
12
F
F
F
F
F
F
abdeghi
CASE3
5
4
8
T
T
F
F
T
F
abceghi
CASE4
4
6
12
T
F
T
T
F
T
abdefhi