当前位置:文档之家› 软件工程--白盒测试技术 ppt课件

软件工程--白盒测试技术 ppt课件


a >1 || c < 1 T 4
6} 7 c = b+c;
F 5
c=b+c
c=c/a c=c+1
输出:3.5 -2
5. 条件组合覆盖准则
设计足够的测试用例,使得判定中每个条件的所有 可能组合至少出现一次,并且每个判定结果也至少 出现一次。
7.6 白盒测试技术
白盒测试 的原则
对程序模块的所有独立 执行路径至少测试一次
对所有的逻辑判定取 “真”与取“假”的两种情况
都至少测试一次。
在循环的边界和可操作范围 内执行循环体
测试内部数据结构的有效性, 完成边界条件的测试。
执行路径:520个


近似为1014个


等 于
如果1ms完成一
20
个测试
No
测试用例
覆盖的判断条件
通过路径
1 a=2,b= -1,c= -2
T1,F2,T3,F4
?
2 A=-1,b=2,c= 3
F1,T2,F3,T4
?
虽然覆盖了所有条件,但不能保证多个判定 分支均被覆盖到
4、 判定—条件覆盖准则
设计足够测试用例,使得判定中的所有条件可 能取值至少执行一次,同时,所有判定的可能 结果至少执行一次。
值为假分支
条件中的取值有 被忽略的情况
a=2,b=1,c=3 a= -2,b=1,c= -3
a >0 && b > 0 T
c=c/a
判定覆盖仍是弱覆 盖标准!
F a >1 || c < 1 T
c=c+1
Bug
F c=b+c
输出:3.5 -2
3. 条件覆盖准则 设计测试用例,使得每个判断中每个条
c = c / a; } if ( a >1 || c > 1 ){
c= c+1; } c = b+c;
M a >0 && b > 0 T
F
N a >1 || c > 1 T
F
c=b+c
c=c/a c=c+1
M=.T. 且 N=.T. M=.F. 且 N=.F.
1
M a >0 && b > 0 T 2
c=c+1
F 5
c=b+c
P1:1-2-4 P2:1-2-5
P3:1-3-4
P4:1-3-5
测试用例集
对于判定M: 条件a>0:取值为真为T1,取值为假为F1 条件b>0:取值为真为T2,取值为假为F2 对于判定N: 条件a>1:取值为真为T3,取值为假为F3 条件c>1:取值为真为T4,取值为假为F4
× Case1 2 0 3 √ Case2 2 1 3
a >0 && b > 0 T F
a >1 || c > 1 T F c=b+c
c=c/a c=c+1
Case2输出:c=3.5
思考:
Case2:a=2, b=1, c=3
如果M为:a >0 || b > 0; N为:a >1&&c > 1,
M a >0 || b > 0

需3170年
迪杰斯特拉定律:穷尽测试永远不可能
一、 逻辑覆盖 1. 语句覆盖 2. 判定覆盖 3. 条件覆盖 4. 判定-条件覆盖 5. 条件组合覆盖 6. 路径覆盖
1. 语句覆盖 设计测试用例,使被测程序中的每个
可执行语句至少被执行一次
例题
int a, b; double c; if ( a >0 && b > 0 ){
c = c / a; } if ( a >1 || c > 1 ){
c= c+1; } c = b+c;
a >0 && b > 0 T F
a >1 || c > 1 T F c=b+c
c=c/a c=c+1
M=.T. 且 N=.T.
M
a >0 && b > 0 T
F
N
a >1 || c > 1 T
条件M取值为假分支 条件N取值为假分支
路径 P1
P4
判定—条件覆盖准则的不足
a=2,b=1,c=3 a= -2,b=1,c= -3
1
int a, b; double c
1 if ( a >0 && b > 0 ){
2 c = c / a;
3}
Bug
a >0 && b > 0 T 2
F 3
4 if ( a >1 || c <1 ){ 5 c= c+1;
判定-条件覆盖能同时满足判定、条件两种覆盖 标准。
例题
int a, b; double c if ( a >0 && b > 0 ){
c = c / a; } if ( a >1 || c > 1 ){
c= c+1; } c = b+c;
1
M a >0 && b > 0 T 2 c=c/a
F 3
F
c=b+c
c=c/a c=c+1
Case1:a=2, b此=语0,句c=未3覆盖
用例 a b c
× Case1 2 0 3
Case2 2 1 3
a >0 && b > 0 T F
a >1 || c > 1 T F c=b+c
c=c/a c=c+1
Case2输入:a=2, b=1, c=3
用例 a b c
件 double c if ( a >0 && b > 0 ){
c = c / a; } if ( a >1 || c > 1 ){
c= c+1; } c = b+c;
M a >0 && b > 0 T 2
F 3
c=c/a
N a >1 || c > 1 T 4
N a >1 || c > 1 T 4
F 5 c=b+c
c=c+1
测试用例集
为了使被测程序得到充分测试,不仅每个条件需要 被覆盖,而且每个条件的组合也应该被覆盖到。
No
测试用例
覆盖的判断分支
判定条件
1 a=2,b= 1,c= 3 T1,T2,T3,T4 条件M取值为真分支 条件N取值为真分支
2 a= -1,b= -2,c= -5 F1,F2,F3,F4
Bug
T
c=c/a
测试用例与测试结果有设么 F
变化?
N a >1 && c > 1 T
F
c=c+1
c=b+c
Bug
语句C覆as盖e2是输出弱:覆c盖=3标.5 准!
2. 判定覆盖准则
设计测试用例,使被测程序中的每个判断的 取真分支和取假分支都被测试用例至少执行 一次
例题
int a, b; double c if ( a >0 && b > 0 ){
F 3
N a >1 || c > 1 T 4
F 5 c=b+c
c=c/a c=c+1
设计测试用例及预期结果
测试用例
No
测试用例
覆盖的判断分支
输出结果
1 a=2,b=1,c=3 判断M取值为真分支和判断N取 值为真分支
c=3.5
2 a= -2,b=1,c= -3 判断M取值为假分支和判断N取
c=-2
相关主题