白盒测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
记录语句的执行次数而插入的。虚线框中的程序就是为了完成
计数。形式就是
C(n)=C(n)+1 ; n = 1,2,3,……,n ;
该程序从入口开始,到出口执行结束。凡经历的计数语句
都能记录下该程序点的执行次数。 如果我们在程序的入口处还插入了对计数器C(i)初始化的 语句,在出口处插入了打印这些计数器的语句,就构成了完整 的插桩程序。它就能记录并输出在各程序点上语句的实际执行 次数。
T
e X=X+1
Case8:A=1, B=1, X=1
a F (A>1) AND (B=0)
T
c X=X/A T e
b
F
(A=2) OR (X>1)
d
X=X+1
条件组合覆盖
设计用例,使得每个判断表达式中条件 的各种可能组合都至少出现一次;
上例中需考虑4个条件的8种组合
① A > 1, B = 0 T1 T2
(A=2) OR (X>1)
e
X=X+1
Case1:A=2, B=0, X=3
a F
(A>1) AND (B=0) 错写成OR
语句覆盖
T
b
F
c X=X/A
T
(A=2) OR (X>1)
e
X=X+1
d
错写成AND
语句覆盖是最弱的覆盖
2. 判定覆盖(分支覆盖)
设计测试用例,使程序中的每个逻辑判 断的取真和取假的分支至少经历一次。 用例 Case1 Case3 A 2 1 B 0 0 X 3 1 执行路径 ace abd
3.条件覆盖
满足条件覆盖的一组测试用例
条件覆盖
A B X 路径 覆盖分支
覆盖条件
Case6 2 1 1 a b e
Case7 1 0 3 a b e
be
be
T1 F2 T3 F4
F1 T2 F3 T4
Case6:A=2, B=1, X=1 Case7:A=1, B=0, X=3
条件覆盖
a
F b F d
Case1 Case2
√ ×
Case1:A=2, B=0, X=3
a
F b
语句覆盖
(A>1) AND (B=0)
T c X=X/A T
F
d
(A=2) OR (X>1)
e
X=X+1
Case2:A=2, B=1, X=3
a F b
F d T
语句覆盖
此语句未覆盖
(A>1) AND (B=0)
T
c X=X/A
第一组:Case1:A=2, B=0, X=3
a F b (A>1) AND (B=0) T
判定覆盖
c X=X/A T
F
d
(A=2) OR (X>1)
e
X=X+1
第一组:Case3:A=1, B=0, X=1
a
F b F (A>1) AND (B=0)
判定覆盖
T c X=X/A T
(A=2) OR (X>1)
② A > 1, B≠0 T1 F2
判定一为真 判定一为假
③ A≤1, B = 0
④ A≤1, B≠0
F1 T2
F1 F2
⑤ A = 2,X > 1 T3 T4 ⑥ A = 2,X≤1 T3 F4 ⑦ A≠2,X>1 ⑧ A≠2,X≤1 F3 T4 F3 F4 判定二为假 判定二为真
满足条件组合覆盖的一组测试用例 A B X Case1 Case8 Case9 Case10 路径 覆盖组号 覆盖条件 ①⑤ ②⑥ ③⑦ ④⑧ T1 T2 T3 T4 T1 F2 T3 F4 F1 T2 F3 T4 F1 F2 F3 F4
例: 98与63的最大公约数? 解:由于63不是偶数,把98和63以大数减小数,并 展转相减 98-63=35 63-35=28 35-28=7 28-7=14 14-7=7 所以,98和63的最大公约数等于7。
程序插桩技术
例:求取两个整数X和Y的最大公约数程序如下: int gsd (int X, int Y) { int Q=X; int R=Y; while(Q!=R) { if(Q>R) Q=Q-R; else R=R-Q; } return Q; }
e
X=X+1
d
判定覆盖
只作到判定覆盖将无法确定判定内部条件的错误。
a
F
b F
(A>1) AND (B=0)
T c X=X/A T
(A=2) OR (X>1)
e
X=X+1
d
错写成X<1
例:
F
Case4:A=3, B=0, X=3 Case5:A=2, B=1, X=1
a (A>1) AND (B=0) b T c
X=X/A 错写成X<1
F (A=2) OR (X>1) T e X=X+1
d
因此判定覆盖仍是弱的覆盖标准。
3.条件覆盖
设计若干测试用例,使程序的每个判定 中的每个条件的可能取值至少满足一次 上例中设条件:
A>1 B=0 A=2 X>1
取真表为
T1 T2 T3 T4
取假表为
F1 F2 F3 F4
程序插桩技术
可以根据程序绘制出其流程图 为了记录改程序中语句的执行次数,我 们使用插桩技术插入如下语句: C(i)=C(i)+1,i=1,2,…6
插桩之后的流程图如下:
程序插桩技术
在程序入口处插入 对计数器C(i)的初 始化语句
在程序出口处 加入打印语句
程序插桩技术
图中虚线框中的内容并不是源程序的内容,而是我们为了
X 3 1
Case8 Case11
2 3
1 0
1 1
abe acd
习题
为以下流程图所示的程序段设计一组测试用例,要求分别 满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、 组合覆盖和路径覆盖。
N X>8 AND Y>5 Y
N
X>0 OR Y>0
Y
N X>16 OR Y>10
Y
引用语句1
引用语句2
案。
第4个问题,是如何在程序中特定部位插入断
言语句。在应用程序插桩技术时,可在程序中
特定部位插入某些用以判断变量特性的语句,
使得程序执行中这些语句得以证实。
白盒测试
白盒测试方法:
逻辑覆盖 路径测试
1、 逻辑覆盖
语句覆盖
判定覆盖(分支覆盖)
条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖
2 0 3 ace 2 1 1 abe 1 0 3 abe 1 1 1 abd
6.路径覆盖
设计足够多的测试用例,覆盖程序中 的每条可能路径。 上述满足条件组合覆盖的测试用例不 能覆盖路径acd。
满足路径覆盖的一组测试用例
用例 Case1 Case7 执行路径 ace abd
A 2 1
B 0 0
例子程序:
if( (a>1) && (b=0)) x=x/a; if ((a=2) || (x>1))
x=x+1;
程序框图
a
F
(A>1) AND (B=0)
T c
b
X=X/A F
(A=2) OR (X>1) T e X=X+1
d
1.语句覆盖
语句Leabharlann Baidu盖
设计若干条测试用例,使程序中每条 可执行语句至少执行一次。 用例 A 2 2 B 0 1 X 3 3 执行路径 ace abe
程序块的第1个可执行语句之前
for,do ,do-while,do until 等循环语句处。
if, else if, else及end if等条件语句各分支处。
输入/输出语句之后。 函数、过程、子程序调用语句之后。 return语句之后 goto语句之后
第3个问题,需要考虑如何设置最少探测点方
白盒测试
白盒测试
白盒测试(White Box Testing )
白盒测试又叫结构测试,逻辑驱动测试或基于程序本身的测 试。
白盒测试
分析
源程序
测试用例
被测程序 覆盖情况分析 执行路径
程序插桩测试方法
一、方法简介 程序插桩方法简单的说是借助于往被 测程序中插入操作来实现测试目的的方 法。 以计算整数X和Y的最大公约数程序为 例,说明插桩方法的要点。
(A>1) AND (B=0)
T c X=X/A T
(A=2) OR (X>1)
e
X=X+1
两个测试用例覆盖了四个条件八种可能取值。但 未覆盖c、d分支,不满足判定覆盖的要求。
4.判定-条件覆盖
使判定中每个条件的可能取值至少满 足一次,并且使每个判定分支至少执 行一次。 判定-条件覆盖能同时满足判定、条件 两种覆盖标准。
引用语句3
程序插桩技术
右图为插桩 之后的程序, 箭头所指为 插入的语句。 源程序的语 句已略去。
设计插桩程序时需要考虑的问题包括:
① 探测哪些信息; ② 在程序的什么部位设置探测点;
③ 需要设置多少个探测点;
④ 程序中特定部位插入某些用以判断变量 特性的语句。
第1个问题具体问题具体分析。 第2个问题,在实际测试通常在下面一些部位设置探测点:
满足判定-条件覆盖的一组测试用例
A B X
路径 覆盖分支
覆盖条件
Case1 2 0 3
Case8 1 1 1
ace
abd
ce
bd
T1 T2 T3 T4
F1 F2 F3 F4
Case1:A=2, B=0, X=3
a F
b (A>1) AND (B=0) T
c
X=X/A
F (A=2) OR (X>1) d
程序插桩方法:借助往被测程序中插 入操作,来实现测试目的的方法,即向 源程序中添加一些语句,实现对程序语 句的执行、变量的变化等情况进行检查。 最简单的插桩:在程序中插入打印语句 printf(“……”)语句。
最大公约数算法
第一步:任意给顶两个正整数;判断他们是否都是 偶数。若是,则用2约简;若不是则执行第二步。 第二步:以较大的数减较小的数,接着把所得的差 与较小的数 比较,并以大数减小数。 第三步:继续这个操作,直到所得的减数和差相等 为止,则这个等数就是所求的最大公约数。