1、白盒测试概念

白盒测试也称结构测试或逻辑驱动测试,是一种测试用例设计方

法,它从程序内部逻辑结构及有关信息来设计和选择测试用例,

对程序的逻辑路径进行测试。 

2、白盒测试的主要目的 

保证一个模块中的所有独立路径至少被执行一次; 

对所有的逻辑值均需要测试真、假两个分支; 

在上下边界及可操作范围内运行所有循环; 

检查内部数据结构以确保其有效性。 

3、测试覆盖标准

为了衡量测试的覆盖程度,需建立一些标准。 

测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。

用于确定测试所执行到的覆盖项的百分比。测试覆盖率包括功能点覆盖率和逻辑覆盖率: 

功能点覆盖率大致用于表示软件已经实现的功能与软件需要实现的功能之间的比例关系。逻辑覆盖率指程序逻辑的覆盖率,可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。覆盖标准从低到高分别是:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖

wKiom1QZhl7QyH9bAAG5cDaSwfc290.jpg

4、白盒测试方法

(1)逻辑驱动测试

设计足够多的测试用例,运行所测程序,满足某种测试覆盖率要求。基本的有: 

语句覆盖 

判定覆盖(也称为分支覆盖) 

条件覆盖 

判定/条件覆盖 

条件组合覆盖

(2)基本路径测试

设计足够多的测试用例,运行所测程序,要覆盖程序中所有可能的路径。这是最强的覆盖准则。但在路径数目很大时,真正做到完全覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。


  • 语句覆盖

优点:可很直观地从源代码得到测试用例,无须细分每条判定表达式。 

缺点:从上例可看出,语句覆盖是很弱的,发现不了判定中逻辑运算的错误,即它并不是一种充分的检验方法。如:

PROCEDURE M(VAR A,B,X:REAL); 

BEGIN 

 IF (A>1) AND (B=0) THEN X:=X/A; 

 IF (A=2) OR (X>1) THEN X:=X+1; 

END. 

A=2,B=0,X=3


1)如果第一个条件语句中的AND错误地写成OR,这个测试用例不能发现这个错误; 

2)如第三个条件语句中X>1误写成X>0,这个测试用例也不能暴露它; 

3)沿着路径abd执行时,X的值应该保持不变,如果这一方面有错误,测试数据也不能发现。


  • 分支覆盖(判定覆盖)

比“语句覆盖”稍强的覆盖标准,含义是:执行足够的测试用例,使得程序中的每一个分支至少都通过一次。

例1,

wKiom1QZjdHQAzXoAACOIVRquys898.jpg

如设计两个测试用例,使它们能通过路径ace和abd,或者通过路径acd和abe,就可达到“判定覆盖”标准,为此,可以选择输入数据为: 

① A=3,B=0,X=1 (沿路径acd执行); 

② A=2,B=1,X=3(沿路径abe执行) 


针对语句覆盖中不能检测的错,在分支覆盖中: 

① A=3,B=0,X=1 (沿路径acd执行); 

② A=2,B=1,X=3 (沿路径abe执行) 

 1)如第一个条件语句中的AND错写成OR,则第二个测试用例能发现; 

 2)如第三个条件语句中X>1误写成X>0,第一个测试用例能暴露它; 

 3)沿着路径abd执行时,X的值应保持不变,如这方面有错,不能发现。 所以,“分支覆盖”还很不够。 

以上仅考虑了两出口的判断,我们还应把判定覆盖准则扩充到多出口判断(如Case语句)的情况。因此,判定覆盖更为广泛的含义应该是使得每一个判定获得每一种可能的结果至少一次。


wKiom1QZj2CASBHaAAGjXfitt5c245.jpg