白盒测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2 逻辑覆盖
覆盖指标
语句覆盖(Statement Coverage, SC) 判定覆盖(Decision Coverage, DC) 条件覆盖(Condition Coverage, CC) 判定/条件覆盖(Decision/Condition Coverage, D/CC) 修正的判定/条件覆盖(Modified Decision/Condition Coverage, MD/CC) 条件组合覆盖(Condition Combination Coverage,CCC)
开始 F p1 a>1 AND b<2 T p2
x=c+1
F p3
a==3 OR x>3
T
p4
x=x+c
print a,b,c,x 结束
11
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
案例:执行路径
L13:p1p3 L14:p1p4 L23:p2p3 L24:p2p4
开始 F p1 a>1 AND b<2 T p2
测试用例的设计应满足判定节点的取真和取假分 支至少执行一次,且每个简单判定条件的取真和 取假情况也应至少执行一次。
判定条件覆盖率
判定/条件覆盖率 = 条件操作数值或判定结果值 至少被评价一次的数量 / (条件操作数值总数 + 判定结果总数)
27
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
5
火龙果 整理 uml.org.cn
4.1 概述
数据流分析
主要关注单个变量,特别关注变量接受赋 值的点和使用这些数值的点。 主要用于代码的优化。
6
火龙果 整理 uml.org.cn
4.1 概述
静态白盒测试
不需要设计和执行测试用例,它主要是 通过小组评审讨论的方式来进行。
优点
4.2 逻辑覆盖
判定覆盖
定义 测试用例设计 测试分析
18
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
判定覆盖:定义
设计测试用例时应保证程序中每个判定 节点的取真和取假分支至少执行一次。
判定覆盖率
判定覆盖率 = 判定结果被评价的次数 / 判定结果的总数
19
火龙果 整理 uml.org.cn
条件覆盖率
条件覆盖率 = 条件操作数值至少被评价 一次的数量 / 条件操作数值的总数
23
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
条件覆盖:测试用例设计
ID a LC-006 LC-007 LC-008 LC-009 3 1 3 1 b 1 2 2 1 输入 c 3 2 1 1 x 0 0 0 4 预期输出 x 7 0 1 5 通过路 径 L24 100% L13 L14 100% L14
41
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
唯一原因法举例
((A AND B) OR (C AND D))
42
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
修正的判定/条件覆盖:测试分析
继承了条件组合覆盖的优点; 测试用例数量的增加是线性的; 对操作数及非等式条件变化反映敏感; 具有更高的目标码覆盖率; 但分析过程繁琐。
4.3 基路径测试
相关概念
程序图 环复杂度 基本复杂度
48
火龙果 整理 uml.org.cn
4.3 基路径测试
相关概念:环复杂度
观察法 公式法 V(G) = e – n + 2 判定节点法 V(G) = P + 1
4 p1 7 p4 B p5 p2 5 p3 p6 A p7 p9 11 p8 C p10 17 p11 D
x=c+1
F p3
a==3 OR x>3
T
p4
x=x+c
print a,b,c,x 结束
12
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
语句覆盖
定义 测试用例设计 测试分析
13
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
语句覆盖:定义
设计测试用例时应保证程序的每一条可 执行语句至少执行一次。
4.2 逻辑覆盖
条件组合覆盖:定义
测试用例的设计应满足每个判定节点中, 所有简单判定条件的各种可能取值的组 合应至少执行一次。
条件组合覆盖率
条件组合覆盖率 = 条件操作数值至少被 评价一次的数量 / 条件操作数值的所有组 合总数
30
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
条件组合覆盖:测试用例设计
直接定位缺陷 缺陷预防
7
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
关注点
条件判定表达式本身的复杂度,通过对程序逻 辑结构的遍历来实现程序的覆盖。
遵循的基本测试原则
对程序代码中所有的逻辑值均需要测试真值 (True)和假值(False)的情况。
8
火龙果 整理 uml.org.cn
46
火龙果 整理 uml.org.cn
4.3 基路径测试
相关概念:程序图
不包含注释语句 不包含数据变量的声明 语句 所有连续的串行语句压 缩为一个节点
4 p1 7 p4 B p5 p2 5 p3 p6 A p7 p9 11 p8 C p10 17 p11 D
47
火龙果 整理 uml.org.cn
3
火龙果 整理 uml.org.cn
4.1 概述
控制流分析技术
线性结构 基本的条件判断 多分支的条件判断 While-do循环 Do-while循环
4
火龙果 整理 uml.org.cn
4.1 概述
控制流分析考察的角度
条件判定本身的复杂度 条件判定节点与循环节点对执行路径产 生的影响 循环本身的复杂度
49
火龙果 整理 uml.org.cn
4.3 基路径测试
相关概念:环复杂度 针对多出口的情况
End End End End
End
50
火龙果 整理 uml.org.cn
4.3 基路径测试
相关概念:环复杂度 局限性
对串行语句无效 对循环无效
语句覆盖率
语句覆盖率 = 至少被执行一次的语句数 量 / 可执行的语句总数
14
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
语句覆盖:测试用例设计
输入 ID a b c x 预期输 出 x
通过路 径
语句覆 盖
LC-001
3
1
1
0
3
L24
100%
15
火龙果 整理 uml.org.cn
判定/条件覆盖:测试分析
开始 F p1 a>1 T F p2 b<2 T x=c+1 F F p3 print a,b,c,x 结束 x>3 T a>1 T p4
x=x+c
28
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
条件组合覆盖
定义 测试用例设计 测试分析
29
火龙果 整理 uml.org.cn
34
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
修正的判定/条件覆盖:定义
A AND B
ID 1 2 3 A T T F B T F T A AND B T F F
4
F
F
F
35
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
修正的判定/条件覆盖:测试用例设计
分解法 唯一原因法
32
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
修正的判定/条件覆盖
定义 测试用例设计 测试分析
33
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
修正的判定/条件覆盖:定义
判定中的每个条件的所有可能结果至少 出现一次; 每个判定本身的所有结果至少出现一次; 每个入口与出口点至少被唤醒一次,且 每个条件都能单独地影响判定的结果, 即在其他条件不变的情况下改变这个条 件的值,使得判定结果改变。
24
条件覆 盖
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
条件覆盖:测试分析
条件覆盖不一定满足判定覆盖
25
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
判定/条件覆盖
定义 测试用例设计 测试分析
26
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
判定/条件覆盖:定义
43
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
虚假的安全感
满足覆盖指标是验证测试效果的手段之 一; 覆盖指标不是测试的目的。
44
火龙果 整理 uml.org.cn
4.3 基路径测试
案例代码
45
火龙果 整理 uml.org.cn
4.3 基路径测试
相关概念
程序图 环复杂度 基本复杂度
唯一原因法
基本思想是以所有条件的真值表为基础,每次取 一个判定条件,在真值表中通过固定其他所有条 件,然后改变所取条件的取值,若整个判定表达 式的取值随所取条件取值的变化而产生一致的变 化,则这样得到的两个测试用例就是该条件的独 立影响对。最后综合分析提取出满足所有条件对 判定表达式的独立影响性的最小测试用例集合。
4.2 逻辑覆盖
语句覆盖:测试用例设计 需要注意的问题
逻辑判定条件的“屏蔽”作用 输入条件的测试数据选取 边界值测试
16
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
语句覆盖:测试分析
是最弱的覆盖指标
关注语句而非判定节点 对隐式分支无效
17
火龙果 整理 uml.org.cn
9
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
案例代码
F p1 开始 a>1 AND b<2 T p2
x=c+1
F p3
a==3 OR x>3
T
p4
x=x+c
print a,b,c,x 结束
10
火Biblioteka Baidu果 整理 uml.org.cn
4.2 逻辑覆盖
案例:基本的逻辑判定条件
T1:a > 1 T2:b < 2 T3:a == 3 T4:x > 3
组合 T1 T2 T1 AND T2 T3 T4 T3 OR T4 通过路 径
1
2
T
F
T
F
T
F
T
F
T
F
T
F
L24
L13
3
4
T
F
F
T
F
F
T
F
F
T
T
T
L14
L14
31
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
条件组合覆盖:测试分析
是较好的覆盖指标。 但当判定表达式较为复杂的时候,条件 组合覆盖的测试用例规模相当大。
火龙果 整理 uml.org.cn
软件测试技术基础
PartⅡ 软件测试方法
1
火龙果 整理 uml.org.cn
第4 章
白盒测试技术
本章重点
逻辑覆盖 基路径测试 基于数据流的测试 静态白盒测试
2
火龙果 整理 uml.org.cn
4.1 概述
控制流分析技术
控制流分析主要关注程序中的条件判定节 点和循环,关注由此而导致程序的不同走 向以及不同的执行路径。
4.2 逻辑覆盖
判定覆盖:测试用例设计
ID
LC-002 输入 预期输出
a
2
b
1
c
3
x
0
x
7
通过路 径 L24
判定覆 盖 100%
LC-003
LC-004 LC-005
4
1 4
2
1 2
2
1 1
0
0 3
0
0 0
L13
L13 L13
20
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
判定覆盖:测试分析
比语句覆盖增加了几乎一倍的测试路径, 测试能力更强。 未深入测试复合判定表达式的细节,仍 存在测试漏洞。
21
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
条件覆盖
定义 测试用例设计 测试分析
22
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
条件覆盖:定义
设计测试用例时应保证程序中每个复合 判定表达式中,每个简单判定条件的取 真和取假情况至少执行一次。
36
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
分解法
基本思想是通过将复合判定表达式逐步分 解为简单的二元表达式,并利用二元表达 式的独立影响性分析结果来寻找测试用例 集合。
37
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
分解法的基本步骤
将复合表达式分解为二元判定表达式; 按二元判定表达式的独立影响性分析结果来 分析; 若二元判定表达式中的某个条件为复合判定 条件,则继续分解,不断重复直至无法分解; 将二元判定表达式的分析结果依次代入到原 始的复合判定表达式中,整理出所有可能的 测试用例。
38
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
分解法举例
((A AND B) OR (C AND D))
39
火龙果 整理 uml.org.cn
4.2 逻辑覆盖
修正的判定/条件覆盖:测试用例设计
分解法 唯一原因法
40
火龙果 整理 uml.org.cn
4.2 逻辑覆盖