文档介绍:白盒测试方法
为什么要进行白盒测试?
假设此时开发工作已结束,程序送交到测试组,没有人知道代码中有一个潜在的被 0 除的错误。若测试组采用的测试用例的执行路径没有同时经过x=0和y=5/x进行测试,显然测试工作似乎非常完善,测试用例覆盖了所有执行语句,也没有被 0 除的错误发生。
基本概念
白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。
采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的:
保证一个模块中的所有独立路径至少被测试一次。
所有逻辑值均需测试真(true) 和假(false) 两种情况。
检查程序的内部数据结构,保证其结构的有效性。
在上下边界及可操作范围内运行所有循环。
常用白盒测试方法:逻辑覆盖法和基本路径法
逻辑覆盖法
逻辑覆盖法
逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。这一方法要求测试人员对程序的逻辑结构有清楚的了解,甚至要能掌握源程序的所有细节。
由于覆盖测试的目标不同,逻辑覆盖又可分为:
语句覆盖
判定覆盖
条件覆盖
判定/条件覆盖
条件组合覆盖
路径覆盖
语句覆盖
语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这种覆盖又称为点覆盖,它使得程序中每个可执行语句都得到执行,但它是最弱的逻辑覆盖准,效果有限,必须与其它方法交互使用。
PROCEDURE Example(A,B:real; X:real );
Begin
IF (A>1) AND (B=0) THEN
X:= X / A;
IF ( A=2 ) OR (X>1) THEN
X:=X+1
END;
I. A=2, B= 0, X=4 ---- sacbed
语句覆盖
所有的语句至少执行一次!
是最弱的逻辑覆盖
e
F
(A>1) and (B=0)
(A=2) or (X>1)
X = X / A
X=X+1
2
s
d
1
a
F
4
c
T
b
5
T
6
3
7
判定覆盖
判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即程序中的每个分支至少执行一次。判定覆盖又称为分支覆盖(Branch coverage)。
判定覆盖只比语句覆盖稍强一些,实际效果表明,只是判定覆盖,还不能保证一定能查出在判断的条件中存在的错误。因此,还需要更强的逻辑覆盖准则去检验判断内部条件。
X = X / A
I: A=3, B=0,X=1: sacbd
II: A=2, B=1,X=1: sabed
满足判定覆盖的测试用例一定满足语句覆盖:判定覆盖比语句覆盖强。但仍是弱的逻辑覆盖。
(A>1) and (B=0)
(A=2) or (X>1)
X=X+1
2
s
d
1
a
F
4
c
T
b
5
T
e
F
3
7
满足判定覆盖
(A>1)and (B=0) 为一个判定
A>1 为一个条件
每个语句至少执行一次!
每个判定的每种可能都至少执行一次!
即每个判定的真假分支都至少执行一次!
6
条件覆盖
条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。
条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求。