白盒测试方法
其它方法
1概其述它(3方/7)法
• 数据流测试 • 循环测试 • 域测试 • Z路径测试
•…
SWPU
二个基本概念 1. 控制流图 2. 圈复杂度
1控概是制述流流(程4图/图7)(的程一序种图简)化(由节点和控制边组成),一
个软件程序的结构可以用控制流图来描述,程序的 运行过程也可以用控制流图中的路径来刻画。
相应的输入数据:
A=2,B=0,x=4 满足(1)和(5)
A=2,B=1,x=1 满足(2)和(6)
A=1,B=0,x=2 满足(3)和(7)
A=1,B=1,x=1 满足(4)和(8)
显然,满足条件组合覆盖的测试数据,也一定满足判定 覆盖、条件覆盖和判定/条件覆盖标准。
TEST CASES: A=2,B=0,x=4 A=2,B=1,x=1 A=1,B=0,x=2 A=1,B=1,x=1
1 语句覆盖
入口
A>1 AND B=0
F
A=2 OR X > 1
F 返回
T X=X/A T X=X+1
SWPU
A
B
X
用例1
2
0
4
用例2
?
第一个判断中的 逻辑运算符 “AND”若错写 成了“OR”,能否 测试出来?
SWPU
2 判定覆盖
设计足够的测试用例,使 得在语句覆盖的基础上,程序 中每个判定的取“真”分支和 取“假”分支至少都执行一次 ,判定覆盖又称分支覆盖。
设计足够的测试用例,使 得判定中的每个条件都取到各 种可能的值,而且每个判定表 达式也都取到各种可能的结果 。
4 判定/条件覆盖
入口
A>1 AND B=0
F
A=2 OR X > 1
F 返回
T X=X/A T X=X+1
SWPU
A
B
X
用例1
2
0
4
用例2
1
1
1
判定/条件覆盖仍有缺陷。从表面上看, 它测试了所有条件的所有可能结果,但事实上 并不是这样。因为某些条件掩盖了另一些条件。 例如,在逻辑表达式中,如果“与”表达式中 某一条件为“假”,则整个表达式的值为 “假”,这个表达式中另外的几个条件就不起 作用了。同样地,如果在“或”表达式中,某 一条件为“真”,则整个表达式的值为“真”, 其它条件也就不起作用了。因此,采用判定/ 条件覆盖时,逻辑表达式中的错误不一定能测 试出来。
5 条件组合覆盖
SWPU
设计足够的测试用例,使 得每个判定中的条件的各种可 能组合都至少出现一次。
5 条件组合覆盖
SWPU
可能的条件组合:
(1)A>1,B=0 (2)A>1,B≠0 (3)A≤1,B=0 (4)A≤1,B≠0 (5)A=2,x>1 (6)A=2,x≤1 (7)A≠2,x>1 (8)A≠2,x≤1
的每条通路是否都能按照预先要求正确工作。
白盒测试要求对被测程序的结构特 性做到一定程度的覆盖,并以软件中 的某类成分是否都已经得到测试为准 则来判断软件测试的充分性,也称为 基于覆盖的测试技术。
白盒测试
SWPU
白盒测试要求测试人员对程序的结构和处理过程有 完全的了解,一般由开发工程师负责实施。
顺序结构
IF选择结构
WHILE重复结构
UNTIL重复结构
CASE多分支结构
示例:
输入x,y x>0 && y>0
区域
Y
N
Y
x>y?
N
x=x-y
y=y-x
输出x+y
节点 边
复合条件分解为多个单个条件!
SWPU
圈复杂度 (环形复杂度)
程序结构复杂性的度量方法 圈复杂度:
• 从程序的环路复杂性可导出程序基本路径 集合中的独立路径条数(确保所有语句至 少执行一次)
2 判定覆盖(分支覆盖)
入口
A>1 AND B=0
F
A=2 OR X > 1
F 返回
T X=X/A T X=X+1
SWPU
ABX
用例1 204Fra bibliotek用例21
1
1
?
判定覆盖比语句覆 盖强,但是仍不能保证 判断条件的正确性。例 如:第二个判断条件中 的x>1若错写成了x<1, 能否测试出来?
3 条件覆盖
SWPU
• 独立路径必须包含一条在定义之前不曾用 到的边
SWPU
圈(环形)复杂度有三种计算方法:
• V(G)=E-N+2,e是程序控制流图中边的数量, n是程序控制流图中结点的数量
• V(G)=程序中的环域数 • V(G)=P+1,P是流图G中判定结点的数量
SWPU
白黑测试动态测试方法
逻辑覆盖法 路径覆盖法 基本路径覆盖法
SWPU
第4章 白盒测试方法
—— 结构测试 或 逻辑驱动测试 基于被测程序的源代码,而不是软件的规格
说明。
SWPU
1
白盒测试的基本概念
主
要
2
逻辑覆盖
内
3
容
基于路径的测试
4
其它测试类型
白盒测试的基本概念
SWPU
什么是白盒测试
把程序看成装在一个透明的白盒子里,程序的结构和处理过 程完全可见,按照程序的内部逻辑测试程序,以检查程序中
SWPU
逻辑覆盖
逻辑覆盖是以程序的内部逻辑结构为基础的测试用例设 计技术,属于白盒测试。它要求测试人员十分清楚程序的逻 辑结构,考虑的是测试用例对程序内部逻辑覆盖的程度。
语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖
1 语句覆盖
SWPU
设计足够的测试用例,使 得程序中的每个语句至少执行 一次。
设计足够的测试用例,在 语句覆盖的基础上使得程序判 定中的每个条件能获得各种可 能的结果。
3 条件覆盖
入口
A>1 AND B=0
F
A=2 OR X > 1
F 返回
T X=X/A T X=X+1
SWPU
A
B
X
用例1
2
0
4
用例2
1
1
1
用例1 用例2
A
B
X
1
0
3
2
1
1
?
是否满足判定覆 盖?
SWPU
4 判定/条件覆盖
?
请写出各测试用例的 执行路径。然后考察是 否覆盖了(TF)路径。
SWPU
入口
A>1 AND B=0
F
A=2 OR X > 1
F 返回
T X=X/A T X=X+1
语句覆盖
运行被测试程序,使得每一条可执行语句至少执行一次 分支覆盖(又称判定覆盖)
运行被测程序,使程序中每个判断的取真分支和取假分支至少执 行一次
白盒测试主要对程序模块进行以下检查:
• 对程序模块的所有独立的执行路径至少要测试一次。 • 对所有的逻辑判定,取真或假的两种情况至少要测试
一次。 • 对程序进行边界检查(常见的如数据越界检验),所
有循环检查。 • 检验内部数据结构的有效性。
SWPU 白盒测试的常用方法
逻辑测试
路径测试
程序结构 分析