测试覆盖率
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
http://www.51testing.com
上海博为峰软件技术有限公司
14
判定条件覆盖(3)
a
测试用 例
CASE1
ABX
所走路径
覆盖条件
b
F
(A>1) AND (B=0)
T
c
X = X/A
2 0 3 2 1 1 1 0 3 1 1 1
ace abd abe abd
T1,T2,T3,T4
CASE2 CASE3 CASE4
指令块覆盖 = (至少被执行的一次的指令块数量)/(系统中指令块总 数)
http://www.51testing.com
上海博为峰软件技术有限公司
30
指令块覆盖举例
假定在一次测试过程中,在第一个控制点处走了3条指令的分支,在第二个 控制点处走了空指令分支,那么其指令块覆盖是 (2 / 4 )*100% = 50 % ,其 语句覆盖是(5+3 ) / 15 * 100% = 53.33 %
15
路径覆盖(1)
• 路径覆盖(Path Coverage)的含义是,在测试时运行被 测程序后,程序中所有可能的路径被执行过的比率: 路径覆盖率= (至少被执行到一次的路径数)/(总的路径 数)
http://www.51testing.com
上海博为峰软件技术有限公司
16
路径覆盖(2)
a F b
T
c
X = X/A
b
F d
(A=2) OR (X>1)
T e
X = X+1
1、CASE1 CASE2能达到100%条件覆 盖 2、覆盖了条件的测试用例不一定 覆盖了分支
http://www.51testing.com
被测程序段流程图
上海博为峰软件技术有限公司
13
判定条件覆盖(1)
• 判定条件覆盖(Decision Condition Coverage)也叫分支条件覆盖 (Branch Condition Coverage,BC Coverage),它的含义是,在 测试时运行被测程序后,所有判断语句中每个条件的所有可能值(为 真为假)和每个判断本身的判定结果(为真为假)出现的比率: 判定条件覆盖率= (条件操作数值或判定结果至少被评价一次的数 量)/(条件操作数值总数+判定结果总数)
http://www.51testing.com
上海博为峰软件技术有限公司
31
判定路径覆盖
•
判定路径覆盖(Decision-to-Decision Paths Coverage,DDP Coverage)是判定覆盖的一个变体。这里的判定指的是一个序列语 句,其起始位置是函数入口或一个判定(如If, while, switch等)的开 始,结束位置是下一个判定的开始 DDP覆盖 = (至少被执行到一次的判定路径数量)/(系统中判定路 径总数)
盖
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
10
条件覆盖(1)
• 条件覆盖(Condition Coverage)的含义是,在测试时运 行被测程序后,所有判断语句中每个条件的可能取值(真 值和假值)出现过的比率:
条件覆盖率= (条件操作数值至少被评价一次的数量) / (条件操作数值的总数)
T1,F2,T3,F4
F
F1,T2,F3,T4 F1,F2,F3,F4
(A=2) OR (X>1)
T e
X = X+1
d
以上四个测试用例固然覆盖了条件组合,同时 也覆盖了4个分支,但仅覆盖了3条路径,却漏 掉了路径acd
http://www.51testing.com
被测程序段流程图
上海博为峰软件技术有限公司
– 覆盖率 = (至少被执行一次的 item数)/ item 的总数
• 测试用例设计不能一味追求覆盖率,因为测试成本随覆盖 率的增加而增加。
http://www.51testing.com
上海博为峰软件技术有限公司
3
覆盖率主要类型
• 逻辑覆盖
– 语句覆盖 – 判定覆盖 – 条件覆盖 – 判定-条件覆盖 – 路径覆盖
•
http://www.51testing.com
上海博为峰软件技术有限公司
32
判定路径覆盖举例
http://www.51testing.com
上海博为峰软件技术有限公司
33
答疑&交流
http://www.51testing.com
上海博为峰软件技术有限公司
34
上海博为峰软件技术有限公司
9
判定覆盖(2)
A = 2 B = 0 X = 3 ………………CASE1:路径ace
F b a
(A>1) AND (B=0)
T
c
X = X/A
A = 1 B = 0 X = 1
………………CASE2:路径abd
F d
(A=2) OR (X>1)
T e
X = X+1
CASE1 CASE2能达到100%判定覆
•
http://www.51testing.com
上海博为峰软件技术有限公司
23
继承对覆盖率度量的影响
http://www.51testing.com
上海博为峰软件技术有限公司
24
继承上下文覆盖
继承上下文覆盖不是一个单个的度量,它是一种扩展传统结构 化覆盖来考虑当方法被继承时的额外接口。继承上下文覆盖提 供了一个可替代的度量定义,它考虑在每个类的上下文内获得 的覆盖率级别。继承上下文定义把基类上下文内例行程序的执 行作为独立于继承类上下文内例行程序的执行。同样,它们在 考虑继承上下文内例行程序的执行也独立于基类上下文内例行 程序的执行。为了获得100%继承上下文覆盖,代码必须在每 个适当的上下文内被完全执行。
http://www.51testing.com
上海博为峰软件技术有限公司
25
基于状态的类的覆盖率特点(1)
http://www.51testing.com
上海博为峰软件技术有限公司
26
基于状态的类的覆盖率特点(2)
有边 界栈 类的 类接 口定 义
符合 接口 覆盖 的用 例
http://www.51testing.com
http://www.51testing.com
上海博为峰软件技术有限公司
17
路径覆盖(3)
a
路径能否全面覆盖在软件测试中是个重 要问题,如果程序中的每一条路径都得到 考验,才能说程序受到了全面检验
F b
(A>1) AND (B=0)
T
c
X = X/A
即使对于路径数很有限的程序已经作到 了路径覆盖,仍然不能保证被测程序的正 确性
被测程序段流程图
X>1
取真 取假
http://www.51testing.com
上海博为峰软件技术有限公司
12
条件覆盖(3)
a F
测试用例 CASE1 CASE2
A B X 1 0 3 2 1 1
所走路径 a b e a b e
覆盖条件 F1T2F3T4 T1F2T3F4
(A>1) AND (B=0)
(A>1) AND (B=0)
T
c
X = X/A
测试用例
CASE1 CASE2 CASE3 CASE4
ABX 2 0 3 1 0 1 2 1 1 3 0 1
覆盖路径 ace abd abe acd
d F
(A=2) OR (X>1)
T e
X = X+1
以上四个测试用例达到了100%路径覆盖
被测程序段流程图
CASE1 CASE2
d F
(A=2) OR (X>1)
T e
X = X+1
能达到100%语句覆盖 不能达到100%语句覆盖
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
7
语句覆盖率实例
http://www.51testing.com
上海博为峰软件技术有限公司
8
判定覆盖(1)
• 判定覆盖(Decision Coverage)也叫分支覆盖(Branch Coverage),它的含义是,在测试时运行被测程序后,程序中所有 判断语句的取真分支和取假分支被执行到的比率 。 判定覆盖=(判定结果被评价的次数)/(判定结果的总数)
http://www.51testing.com
上海博为峰软件技术有限公司
Fra Baidu bibliotek
27
基于状态的类的覆盖率特点(3)
基于状态转移图的测试用例
http://www.51testing.com 上海博为峰软件技术有限公司
28
基于状态的上下文覆盖
基于状态的上下文覆盖把一个状态上下文内的一个例行程序的 执行认为是独立于另一个状态内相同例行程序的执行。为了达到 100%的基于状态的上下文覆盖,例行程序必须在每个适当的上 下文(状态)内被执行。
• 函数覆盖 • 功能覆盖
http://www.51testing.com
上海博为峰软件技术有限公司
4
课程内容
• 覆盖率概念 • 逻辑覆盖率 • 其他覆盖率
http://www.51testing.com
上海博为峰软件技术有限公司
5
语句覆盖(1)
• 语句覆盖(Statement Coverage)的含意是,在测试时 运行被测程序后,程序中被执行到的可执行语句的比率:
F d
(A=2) OR (X>1)
T e
X = X+1
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
18
课程内容
• 覆盖率概念 • 逻辑覆盖率 • 其他覆盖率
http://www.51testing.com
上海博为峰软件技术有限公司
19
函数覆盖
• 有很多测试工具,例如TrueCoverage,PureCoverage等,都提供了 函数覆盖的概念,函数覆盖是针对系统或一个子系统的测试的,它表 示在该测试中,有哪些函数被测试到了,其被测试到的频率有多大, 这些函数在系统所有函数中占的比例有多大。函数覆盖是一个比较容 易自动化的技术。 函数覆盖 = (至少被执行一次的函数数量)/(系统中函数的总数)
语句覆盖率 = (至少被执行一次的语句数量)/(可执行的语句总 数)
http://www.51testing.com
上海博为峰软件技术有限公司
6
语句覆盖(2)
A = 2 B = 0 ………………CASE1 X = 3
a F b
(A>1) AND (B=0)
T
c
X = X/A
A = 2 B = 1 ………………CASE2 X = 3
•
http://www.51testing.com
上海博为峰软件技术有限公司
20
函数覆盖率实例
http://www.51testing.com
上海博为峰软件技术有限公司
21
功能覆盖
• • • • 功能覆盖率是属于黑盒测试范畴 功能覆盖其含义是通过设计一定的测试用例,要求每个功能点都被测 试到 功能覆盖=(被验证到的功能点数量)/(总的功能点数量) 功能覆盖方面的自动化工具比较少
http://www.51testing.com
上海博为峰软件技术有限公司
29
指令块覆盖
指令块覆盖(Instruction Blocks Coverage,IB Coverage)是语句覆盖 的一个变体,其唯一的区别是计算方式的不同。在这里指令块表示函数 内部的一个序列语句,在这一个序列语句种不存在控制语句(会引起分 支)
http://www.51testing.com
上海博为峰软件技术有限公司
22
面向对象的覆盖
结构化覆盖率用来度量测试的完整性已经被大家所接受。但由于传统 的结构化度量没有考虑面向对象的一些特性,如多态,继承和封装等, 这个技术在面向对象领域遇到了挑战。 • 继承上下文覆盖(Inheritance Context Coverage)是考虑到面向对象设 计中对象继承特点的一种覆盖率,该覆盖率用于度量在系统中的多态 调用被测试得多好 基于状态的上下文覆盖(State-Based Context Coverage),该覆盖 用于改进对带有状态依赖行为的类的测试
测试覆盖率
培训教材
http://www.51testing.com 上海博为峰软件技术有限公司
课程内容
• 覆盖率概念 • 逻辑覆盖率 • 其他覆盖率
http://www.51testing.com
上海博为峰软件技术有限公司
2
覆盖率的概念
• 覆盖率是用来度量测试完整性的一个手段。覆盖率是测试 技术有效性的一个度量。
http://www.51testing.com
上海博为峰软件技术有限公司
11
条件覆盖(2)
a
条件 A>1
取值 取真 取假
标记 T1 F1 T2 F2
d
b
F
(A>1) AND (B=0)
T
c
X = X/A
B=0
取真 取假
F
(A=2) OR (X>1)
T e
X = X+1
A=2
取真 取假
T3 F3 T4 F4