软件测试第3章 白盒测试 教学PPT

合集下载

白盒测试PPT课件

白盒测试PPT课件

软件技术专业国家教学资源库——《软件测试》课程
3
本项目各任务的教学过程
➢ 项目概述 ➢任务一 ➢任务二 ➢任务三
软件技术专业国家教学资源库——《软件测试》课程
4
项目概述
引例
如何清理面包机?
不管内部,拿水从入口往下灌着冲洗 将面包机拆开一点点的查看有无锈迹污迹,逐个清理
白盒测试
测试者针对可见代码进行的一种测试
1
if((a+b<=c) || (a+c<=b) || (b+c<=a)){
2
printf("不能构成三角形");
3
}else{
4
if((a==b) ||(b==c)||(a==c)){
5
if((a==b)&&(b==c)){
6
printf("等边三角形");
7
}else{
8
printf("等腰三角形");
➢ 任务简介 ➢ 任务分析 ➢ 相关知识点 ➢ 任务实施 ➢ 任务小结 ➢ 拓展训练
软件技术专业国家教学资源库——《软件测试》课程
7
项目概述
待测程序说明
图形识别系统
根据输入的信息确定最终图形的种类
主要测试的程序片段---三角形问题
接受输入三个整数a、b、c,分别作为三角形的三条边,通 过程序判断这三条边是否能构成三角形?如果能构成三角形, 则判断三角形的类型(等边三角形、等腰三角形、一般三角 形)。要求输入三个整数a、b、c,必须满足以下条件: 1≤a≤200;1≤b≤200;1≤c≤200。
9
}
10
}else{

黑盒测试和白盒测试(1)PPT课件

黑盒测试和白盒测试(1)PPT课件
软件的白盒测试是对软件的过程性细节做 细致的检查,它允许试人员利用程序内部的 逻辑结构及有关信息,设计或选择测试用例, 对程序所有逻辑路径进行测试,通过在不同点 检查程序状态,确定实际状态是否与预期的状 态一致。因此白盒测试又称为结构测试或逻辑 驱动测试。
白盒测试须对程序模块进行如下 检查:
1. 保证一个模块中的所有独立路径至少 被使用一次
静态错误分析主要用于确定在源程序中是 否有某类错误或“危险”结构。
① 类型和单位分析 ②引用分析 ③ 表达式分析 ④ 接口分析
3.2.2 程序插桩技术
在软件动态测试中,程序插桩是一种基 本的测试手段,有着广泛的应用。
程序插桩方法是借助往被测程序中插入 操作,来实现测试目的的方法,即向源程 序中添加一些语句,实现对程序语句的执 行、变量的变化等情况进行检查。
第3章 软件测试基本技术
3.1 黑盒测试与白盒测试 3.2 白 盒 测 试技术 3.3 黑 盒 测 试技术
本讲教学目标
了解黑盒测试和白盒测试的基本概念; 掌握几中白盒测试技术:静态测试、程
序插桩和逻辑覆盖技术。
3.1 黑盒测试与白盒测试
任何工程产品都可以使用白盒测试和黑 盒测试两种方法之一进行测试。
通过分析这些图表,包括控制流分析、数 据据流分析、接口分析、表达式分析等,使其 便于阅读与理解,然后可以通过分析这些图表, 检查软件有没有存在缺陷或错误。
静态结构分析法通常采用以下一些方法进 行源程序的静态分析:
(1) 通过生成各种图表,来帮助对源程序 的静态分析
常用的的各种引用表主要有: ① 标号交叉引用表 ② 变量交叉引用表 ③ 子程序(宏、函数)引用表 ④ 等价表 ⑤ 常数表
常用的的各种关系图、控制流图主要有:

《软件测试》第三章 白盒测试技术

《软件测试》第三章 白盒测试技术
(A and B)所有条件组合情况
为了体现条件A对整个表达式的独立影响,需满足当A为真时,(A and B) 为真;当A为假时,(A and B)为假,显然此时B的取值应为真,对应表3-5 中的测试用例1和3。同理,为了体现条件B对整个表达式的独立影响,A的取 值应为真,对应表中的测试用例1和2。那么,测试用例4是否是冗余的呢?从 整体表达式的结果来看,测试用例1~3完全能够满足(A and B)作为一个表 达式整体分别取到真值和假值。所以,测试用例4是冗余的。因此得出满足 (A and B)的修正的判定/条件覆盖的测试用例集合如表3-6所示。
对穷举测试唯一可行的代替方法。
所谓逻辑覆盖是对一系列测试过程的

总称,这组测试过程逐渐进行越来越完整

的通路测试。
根据测试覆盖目标的不同,以及覆盖源程序的详尽程度 分析由高到低排序,逻辑测试可依次分为:
● 语句覆盖(Statement Coverage,SC); ● 判定覆盖(Decision Coverage,DC); ● 条件覆盖(Condition Coverage,CC); ● 判定/条件覆盖(Decision/Condition Coverage ,D/CC); ● 修正的判定/条件覆盖(Modified Decision/Con dition Coverage,MD/CC); ● 条件组合覆盖(Condition Combination Covera ge,基本概念 B 白盒测试的方法 C 白盒测试的流程 D 本章小结
3.1 白盒测试的基本概念
❖ 定义 白盒测试也称结构测试、逻辑驱动或基
于程序的测试,是一种测试用例设计方法,它从 程序的控制结构导出测试用例。它一般用来分析 程序的内部结构。它依赖于程序细节的严密验证 ,针对特定的条件和循环设计测试用例,对程序 的逻辑路径进行测试。通过在程序的不同点检验 程序状态,来判定其实际情况是否和预期的状态 一致。

白盒测试技术.ppt

白盒测试技术.ppt
22
2.2 白盒测试技术
Software testing
Software testing
Software testing
--基本路径测试法
Software testing
基本路径测试法
软件测试方法有白盒测试方法和黑 盒测试方法两种,白盒测试方法主要测 试程序的内部结构,如静态分析法、程 序插桩法和逻辑覆盖法等,基本路径测 试法是应用最为广泛的白盒测试方法。
2
基本路径测试法的主要思想
程序控制流图
环路复杂性
基本可执行 路径集合
测试用例
注意:设计出的测试用例要保证程序的每一条可执行语
句至少执行一次。
3
基本路径测试法的执行步骤
1 画出程序控制流图
2
计算环路复杂性
3 确定独立路径集合
4
设计测试用例
4
Step1: 画出程序的控制流图
控制流图是描述程序控制流的一种图示 方式。控制流图由控制流和结点构成,如图1 所示。
13
Step2: 计算环路复杂性
③ 若设P为控制流图中的判定结点数,则有V(G)=P+1。
1
2
3
4
5
6
7 8
P=3 V(G) = 3+1 = 4
14
基本路径测试法的执行步骤
1 画出程序控制流图
2
计算环路复杂性
3 确定独立路径集合
4
设计测试用例
15StBiblioteka p3: 确定独立路径集合进行程序的基本路径测试时,程序的环路 复杂性给出了程序基本路径集合中的 独立路径 条数。

y=y+10;

else
y=y+20;

白盒测试ppt课件

白盒测试ppt课件
10
控制流图: 为了更加突出控 制流的结构,需 要对程序流程图 做些简化,这种 简化了的流程图 称为控制流图。
11
控制流图
控制流图中的符号: ①节点:以标有编号的圆圈 表示,代表程序流程图中矩 形框所表示的处理、菱形表 示的分支及多选择结构点。 ②控制流线:以带箭头的直 线或弧表示,与程序流程图 中的数据流线是一致的,表 明了控制的顺序。控制流线 通常标有名字,如图中所标 的a、b、c等。
测试完成?

6
关闭测试任务
1,2 3,4 5 6
18
问题?
n 如果判断中的条件表达式是由一个或多个逻辑 运算符 (OR, AND, NAND, NOR) 连接的复合条件 表达式,则需要改为一系列只有单条件的嵌套的 判断。 例如:
1 if a or b 2x 3 else 4y 对应的逻辑为:
数据流分析
15
如何画控制流图
1. n 在选择或多分支结构中,分支的汇聚处应有 一个汇聚结点。
13 14
21
17
23
2. 选择的行号的代码都是出现了选择分支,循 环操作,判断等, 顺序执行的语句可以合并 。 这也是画控制流图的一般规则。
17
1
编写、修改测试用例
2
进入测试任务
3
执行测试用例
4
输入测试结果

5
23
控制流测试基本概念
一、基本概念 有向图 路径 完整路径 简单路径 基本路径 子路径 回路 无回路路径 连接 覆盖
24
有向图:有向图G=(V,E),V是顶点的集合,E是 有向边的集合。e=(T(e),H(e))∈E是一对有 序的邻接节点,T(e)是尾,H(e)是头。如果H(e) =T(e’),则e和e’是临界边。H(e)是T(e)的后继 节点,T(e)是H(e)的前驱节点,indegree(n)和 outdegree(n)分别是节点n的入度和出度。

第3章白盒测试技术

第3章白盒测试技术

函数调用关系图
• 通过应用程序各函数之间的调用关系展示 了系统的结构。列出所有函数,用连线表 示调用关系。 • 通过函数调用关系图:
– 可以检查函数的调用关系是否正确 – 是否存在孤立的函数而没有被调用 – 明确函数被调用的频繁度,对调用频繁的函数 可以重点检查
模块控制流图
• 模块控制流图是与程序流程图类似的有许 多节点和连接节点的边组成的一种图形, 其中一个节点代表一条语句或数条语句, 边表示节点间的控制流向,它显示了一个 函数的内部逻辑结构 • 模块控制流图可以直观的反映出一个函数 的内部逻辑结构,通过检查这些模块的控 制流图,能够很快发现软件的错误与缺陷。
逻辑覆盖法
• 逻辑覆盖是通过对程序逻辑结构的遍历实现程序 的覆盖。它是一系列测试过程的总称,这组测试 过程逐渐进行越来越完整的通路测试。 • 从覆盖源程序语句的详尽程度分析,逻辑覆盖标 准包括:
– – – – – – 语句覆盖 判定覆盖 条件覆盖 条件判定组合覆盖 多条件覆盖 修正条件判定覆盖
示例程序
3.3 动态测试技术
• 白盒测试的动态测试应该根据程序的控制结构设计测试用例,原则是:
– – – – 保证模块中每一独立的路径至少执行一次; 保证所有判断的每一分枝至少执行一次; 保证每一循环都在边界条件和一般条件下至少各执行一次; 验证所有内部数据结构的有效性。
• 对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数 字.而且即使精确地实现了白盒测试,也不能断言测试过的程序完全正 确. • 比如包括了一个执行达20次的循环的程序,它所包含的不同执行路径 数高达520条,假使有这么一个测试程序,对每一条路径进行测试需要 1ms,假设一天工作 24小时,一年工作365天,若要对它进行穷举测试,也 需要3024年的时间. • 为了节省时间和资源,就必须精心设计测试用例,从数量巨大的可用 测试用例中挑选少量的、优秀的测试数据,使用这些测试数据能够达 到最佳的测试效果 • 其中,逻辑覆盖法和基本路径测试法是常用的两种白盒测试用例测试 方法。

软件测试 第2版 第3章 白盒测试方法

软件测试 第2版 第3章 白盒测试方法
为了演示上述介绍的3种方法,假设某程序的 控制流图如右图所示。
3.1.1 基本路径法概述
设计测试用例
步骤1 步骤2 步骤3 步骤4
根据计算出的程序圈复杂度导出基本可执行路径集合,从而设计测试用例的输入 数据和预期结果。以上一页中某程序的控制流图为例,由于圈复杂度为4,所以 可以得到4条独立的路径,具体如下。 路径1:1→7。 路径2:1→2→3→7。 路径3:1→2→4→5→8→1→7。 路径4:1→2→4→6→8→1→7。 根据以上4条独立的路径即可设计测试用例,从而确保每一条路径都能被执行。
掌握判定-条件覆盖法的使用,能够应用判定-条件覆盖法设计测试用例 掌握条件组合覆盖法的使用,能够应用条件组合覆盖法设计测试用例 了解目标代码插桩法的原理,能够描述目标代码插桩法的3种执行模式 掌握源代码插桩法的使用,能够应用探针代码测试程序
章节、结构测试,它基于程序的内部逻辑结构进行测试, 而不是程序的功能(黑盒测试)。因此,进行白盒测试时,测试人员需要了解 程序的内部逻辑结构,根据使用的编程语言设计测试用例。白盒测试可用于单 元测试、集成测试和系统测试。白盒测试的方法包括基本路径法、逻辑覆盖法、 程序插桩法,本章将对白盒测试的方法进行详细讲解。
目录/Contents
01
基本路径法
02
逻辑覆盖法
03
程序插桩法
3.1 基本路径法
3.1.1 基本路径法概述
先定一个小 目标!
掌握基本路径法的概述,能够使用基本路径法设 计测试用例
3.1.1 基本路径法概述
基本路径法是一种将程序的流程图转化为程序控制流 图,并在程序控制流图的基础上,分析被测程序控制 构造的环路复杂性,导出基本可执行路径集合,从而 设计测试用例的方法。使用基本路径法设计的测试用 例需要确保被测程序中的每个可执行语句至少被执行 一次。

《白盒测试法》课件

《白盒测试法》课件

优点
代码覆盖率高
白盒测试法能够深入到代码的 逻辑结构中,对代码进行详细 的覆盖,从而确保测试的全面
性。
测试质量高
由于白盒测试法能够深入了解 代码逻辑,因此能够发现更深 层次的代码错误和缺陷,提高 测试质量。
可针对需求定制
白盒测试法可以根据具体的软 件需求和设计进行定制化的测 试,从而更好地满足测试需求 。
04
白盒测试法的工具
JUnit
JUnit是一个Java语言的单元测试框架,用于编写和执行测试用例,验证代码的正确 性和可靠性。
JUnit提供了一系列的注解和断言方法,方便开发者编写测试代码,并且支持测试套 件和测试运行器的概念,可以方便地组织和管理多个测试用例。
JUnit还支持参数化测试和测试模板,提高了测试的灵活性和可维护性。
02
白盒测试法通常在软件开发过程 中,特别是在编码阶段进行,以 便在早期发现和修复潜在的错误 和缺陷。
白盒测试法的目的
01
02
03
验证代码的正确性
白盒测试法通过检查代码 的逻辑和结构,验证代码 是否符合设计要求,是否 能够正确实现功能。
提高代码质量
通过白盒测试,可以发现 代码中的缺陷和错误,并 及时修复,从而提高代码 的质量和稳定性。
《白盒测试法》ppt课件
目 录
• 白盒测试法简介 • 白盒测试法的主要技术 • 白盒测试法的实施步骤 • 白盒测试法的工具 • 白盒测试法的优缺点 • 白盒测试法的案例分析
01
白盒测试法简介
白盒测试法的定义
01
白盒测试法是一种软件测试方法 ,它要求测试人员对被测软件的 内部结构和工作原理有深入的了 解。
测试到。
循环覆盖

软件测试技术-电子教案 第3章 白盒测试方法

软件测试技术-电子教案  第3章 白盒测试方法
• 路径表达式运算满足一下规律。 • 加法交换律: a+b=b+a • 加法结合律: a+(b+c)=(a+b)+c • 加法幂运算:a+a=a • 乘法结合律:a(bc)=(ab)c • 分配律: a(b+c)=ab+ac (a+b)c=ac+bc
(a+b)(c+d)=a(c+d)+b(c+d) • 值得注意的是路径表达式中乘法不满足交
软件测试技术
第3章 白盒测试方法
• 白盒测试方法 • 1、 代码检查 • 2、覆盖路径 • 3、路径测试 • 白盒测试工具 • 1、白盒测试工具介绍 • 2、实用JUnit进行白盒测试
3.1 白盒测试方法
• 一般来说,测试任何产品有两种方法:第 一种测试方法就是我们第二章提到的黑盒 测试,第二种测试方法为白盒测试又称为 结构测试。
3.1.2覆盖测试
• 5、组合覆盖 • 所谓组合覆盖是指设计若干个测试用例,使得每个判定条
件的各种情况至少出现一次。 • 6、路径覆盖 • 所谓路径覆盖是指设计若干个测试用例覆盖程序中所有的
路径。
3.1.3路径测试
• 路径测试就是从一个程序的入口开始,执 行所经历的各个语句的完整过程。
• 路径测试法是在程序控制流图的基础上, 通过分析控制构造的环路复杂性,导出基 本可执行路径集合,从而设计测试用例的 方法路径测试方法。
a
N
Y
x>0 and
c
y<0
b z=z-(x+y)
N
Y
x>2 or
z>0
V
e
d
z=z+5

软件测试教学PPT-白盒测试

软件测试教学PPT-白盒测试
对于一些大型程序,其包含地路径总量是 非常庞大地,如果要把所有路径都找出来 去覆盖也是不现实地。需求以下一些方 法来简化程序地路径
逻辑覆盖法
路径覆盖 寻找程序地路径地方法 单个判断语句地路径计算 单个循环语句地路径计算 有嵌套判断或循环时地路径计算
基本路径法
基本路径测试法是在程序控制流图地基 本上,通过分析控制构造地环路复杂,导 出基本可执行地路径集合,从而设计测 试用例地方法。
在基本路径测试,设计出地测试用例要 保证在测试程序地每条可执行语句至少 执行一次。
需求使用程序地控制流图行可视化表达。
基本路径法
程序地控制流图 是描述程序控制流地一种图示方法。其,
圆圈称为控制流图地一个结点,表示一个 或多个无分支地语句或源程序语句;箭头 称为边或连接,代表控制流。 在将程序流程图简化成控制流图时,应注 意: 在选择或多分支结构,分支地汇聚处应有 一个汇聚结点; 边与结点圈定地区域叫做区域,当对区域 计数时,图形外地区域也应记为一个区域。
基本路径法
程序地控制流图
基本路径法
环路复杂度 环路复杂度是一种为程序逻辑复杂提供定
量测度地软件度量 有以下三种方法用于计算环路复杂度: 流图区域地数量对应于环路地复杂度; 给定流图G地环路复杂度V(G),定义为
V(G)=E-N+二,其E是流图边地数量,N是流 图结点地数量; 给定流图G地环路复杂度V(G),定义为 V(G)=P+一,其P是流图G判定结点地数量。
T一,T二,-T三,T四 一,七
T一,-T二,T三,T四 二,五
-T一,T二,-T三,-T四 -T一,-T二,-T三,-T

T一,T二,T三,-T四

《软件白盒测试》课件

《软件白盒测试》课件

03 白盒测试的常用技术
代码覆盖技术
添加项标题
语句覆盖:确保每个语句都被执行至少一次
添加项标题
判定覆盖:确保每个判定(if、else、switch等)都被执行至少一次
添加项标题
条件覆盖:确保每个判定中的每个条件都被执行至少一次
添加项标题
路径覆盖:确保程序中的每个路径都被执行至少一次
添加项标题
循环覆盖:确保每个循环都被执行至少一次,包括循环体和循环条件
软件白盒测试
,
汇报人:
目录 /目录
01
点击此处添加 目录标题
04
白盒测试的实 践过程
02
软件白盒测试 概述
05
白盒测试的优 缺点
03
白盒测试的常 用技术
06
白盒测试工具 介绍
01 添加章节标题
02 软件白盒测试概述
定义和概念
软件白盒测试: 一种软件测试方 法,通过分析程 序的内部结构和 逻辑,验证程序 的正确性和完整 性。
感谢您的观看
汇报人:
添加项标题
数据流覆盖:确保程序中的数据流都被执行至少一次,包括输入、输出和内部数据流
路径覆盖技术
定义:通过执行所有可能的路径来测试软件 优点:能够全面覆盖软件的所有路径,提高测试覆盖率 缺点:需要大量的测试数据,可能导致测试时间过长 应用场景:适用于逻辑复杂的软件系统,如操作系统、数据库管理系统等
析和改进
测试用例设计
确定测试目标:明确测试的目的和范 围
设计测试用例:根据测试目标设计测 试用例
执行测试用例:按照测试用例执行测 试
记录测试结果:记录测试过程中的异 常情况和测试结果
分析测试结果:分析测试结果,找出 问题所在

软件测试 白盒测试及其用例的设计PPT学习教案

软件测试 白盒测试及其用例的设计PPT学习教案
第27页/共107页
组合覆盖
组合覆盖的目的是要使设计的测试用例能覆盖每一个判定 的所有可能的条件取值组合。
对DoWork函数中的各个判定的条件取值组合加以标记: 1、x>3, z<10 记做T1 T2,第一个判定的取真分支 2、x>3, z>=10 记做T1 -T2,第一个判定的取假分支 3、x<=3, z<10 记做-T1 T2,第一个判定的取假分支 4、x<=3, z>=10 记做-T1 -T2,第一个判定的取假分支 5、x==4, y>5 记做T3 T4,第二个判定的取真分支 6、x==4, y<=5 记做T3 -T4,第二个判定的取真分支 7、x!=4, y>5 记做-T3 T4,第二个判定的取真分支 8、x!=4, y<=5 记做-T3 -T4,第二个判定的取假分支
第1页/共107页
3.1 白盒测试方法
为什么要进行白盒测试? 如果所有软件错误的根源都可以追溯到某个唯一原因,那 么问题就简单了。然而,事实上一个bug常常是由多个因 素共同导致的,如下图所示。
假 设此时 开发工 作已结 束,程 序送交 到测试 组,没 有人知 道代码 中有一 个潜在 的被 0 除的 错误。 若测试 组采用 的测试 用例的 执行路 径没有 同时经 过x=0和 y=5/x 进行测 试,显 然测试 工作似 乎非常 完善, 测试用 例覆盖 了所有 执行语 句,也 没有被 0 除的 错误发 生。
假分支c 和第二个判定的取真分支d,不满足判定覆盖的
要求。 测试用例
执行路径 覆盖条件 覆盖分支
x=2、y=6、z=5
acd
x=4、y=5、z=15 acd
-T1、T2、 -T3、T4 T1、-T2、 T3、-T4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.1.2 判定覆盖
判定覆盖的作用是使真假分支 均被执行,虽然判定覆盖比语 句覆盖测试能力强,但仍然具 有和语句覆盖一样的单一性。
3.1.2 判定覆盖
以3.1.1节程序为例,设计判定覆盖测试用例。
测试用例 x y z 执行语句路径
test1
2 -1 1
acd
test2
-3 1 -1
abd
test3
3.1.1 语句覆盖
语句覆盖的目的是测试程序中的代码 是否被执行,它只测试代码中的执行 语句,这里的执行语句不包括头文件、 注释、空行等。
3.1.1 语句覆盖
语句覆盖在多分支的程序中,只能覆 盖某一条路径,使得该路径中的每一 个语句至少被执行一次,但不会考虑 各种分支组合情况。
3.1.1 语句覆盖
3.1.1 语句覆盖
语句覆盖无需详细考虑每个判断表达式, 可以直观地从源程序中有效测试执行语 句是否全部被覆盖,由于程序在设计时, 语句之间存在许多内部逻辑关系,而语 句覆盖不能发现其中存在的缺陷,因此 语句覆盖并不能满足白盒测试的测试所 有逻辑语句的基本需求。
3.1.2 判定覆盖
判定覆盖(Decision Coverage) 又称为分支覆盖,其原则是设 计足够多的测试用例,在测试 过程中保证每个判定至少有一 次为真值,有一次为假值。
3.1.3 条件覆盖
以图3.1.1节程序为例,设计条件覆盖测试用例,在该程序中,有2个判 定语句,每个判定语句有2个逻辑条件,共有4个逻辑条件,使用标识 符标识各个逻辑条件取真值与取假值的情况,如下表。
条件1 x>0 x<0 y<0 y>0
条件标记 S1 -S1 S2 -S2
条件2 x>2 x<2 z>0 z<0
3.1.1 语句覆盖
语句覆盖虽然可以测试 执行语句是否被执行到, 但却无法测试程序中存 在的逻辑错误。
例如,如果上述程序中的逻辑判断符 号“AND”误写了“OR”,使用测 试用例Test1同样可以覆盖acd路径上 的全部执行语句,但却无法发现错误。 同样,如果将x>0误写成x>=0,使 用同样的测试用例Test1也可以执行 acd路径上的全部执行语句,但却无 法发现x>=0的错误。
3 -1 5
ace
test4
3 1 -1
abe
3.1.2 判定覆盖
上述4个测试用例覆盖了acd、abd、ace、abe四条路径,使 得每个判定语句的取值都满足了各有一次“真”与“假”。 相比于语句覆盖,判定覆盖的覆盖范围更广泛。判定覆盖虽 然保证了每个判定至少有一次为真值,有一次为假值。
3.1.2 判定覆盖
ace
3.1.3 条件覆盖
从条件覆盖的测试用例可知,使用3个测试用例就达到了使每个逻辑条 件取真值与取假值都至少出现了一次,但从测试用例的执行路径来看, 条件分支覆盖的状态下仍旧不能满足判定覆盖,即没有覆盖acd路径。 相比于语句覆盖与判定覆盖,条件覆盖达到了逻辑条件的最大覆盖率, 但却不能保证判定覆盖,仍旧不能满足白盒测试覆盖所有分支的需求。
第3章 白盒测试
· 逻辑覆盖法 · 插桩法
3.1 逻辑覆盖法
逻辑覆盖法是最常用的白盒测试方法,它包括以下5种方法: ● 语句覆盖 ● 判定覆盖 ● 条件覆盖 ● 判定-条件覆盖 ● 条件组合覆盖
3.1.1 语句覆盖
语句覆盖(Statement Coverage)又称行覆盖、段 覆盖、基本块覆盖,它是最 常见的覆盖方式。
判定覆盖并没有考虑到程序内部取值的情况。 例如,测试用例test4,没有将x>2作为条件 进行判断,仅仅判断了z>0的条件。 此外,若将判定条件z>0误写成z<0,test2 测试用例路径将执行abe测试路径语句而不 会执行abd路径的语句。
3.1.2 判定覆盖
结论
判定覆盖语句一般是由多个逻辑条件 组成,如果仅仅判断测试程序执行的 最终结果而忽略每个条件的取值,必 然会遗漏部分测试路径,因此,判定 覆盖也属于弱覆盖。
3.1.4 判定-条件覆盖
条件标记 S3 -S3 S4 -S4
3.1.3 条件覆盖
使用S1标记x>0取真值(即x>0成立)的情况,-S1标记x>0取假值 (即x>0不成立)的情况。同理,使用S2、S3、S4标记y<0、x>2、 z>0取真值,使用-S2、-S3、-S4标记y<0、x>2、z>0取假值,最后 得到执行条件判断语句的8种状态
3.1.3 条件覆盖
设计测试用例时,要保证每种状态都至少出现一次。设计测试用例的原 则是尽量以最少的测试用例达到最大的覆盖率。
测试用例 x y z
条件标记
Test1
3 1 5 S1、-S2、S3、S4
执行路径 abe
Test2 -3 1 -1 -S1、-S2、-S3、-S4
abd
Test3
3 -1 1 S1、S2、S3、-S4
示例代码
IF x>0 AND y<0 //条件1 z=z-(x-y)
IF x>2 OR z>0 //条件2 z=z+(x+y)
在代码中,AND表示逻辑运算&&, OR表示逻辑运算||,第1~2行代码 表示如果x>0成立并且y<0成立, 则执;0成立, 则执行z=z+(x+y)语句。
3.1.3 条件覆盖
条件覆盖(Condition Coverage)指的是设计足够多 的测试用例,使判定语句中的 每个逻辑条件取真值与取假值 至少出现一次。
例如,对于判定语句if(a>1 OR c<0)中存在a>1、c<0两 个逻辑条件,设计条件覆盖测 试用例时,要保证a>1、c<0 的“真”、“假”值至少出现 一次。
3.1.1 语句覆盖
a
N x>0&&y<0
Y
b
z=z-(x-y) c
N d
x>2||z>0
Y z=z+(x+y) e
在代码运行流程图中,a、 b、c、d、e表示程序执行 分支。在语句覆盖测试用 例中,使程序中每个可执 行语句至少被执行一次。
3.1.1 语句覆盖
设计测试用例:Test1:x=1 y=-1 z=2 执行测试用例,程序运行路径为acd。可以看出程序中acd路径 上的每个语句都能被执行。 但是语句覆盖对多分支的逻辑无法全面反映,仅仅执行一次不 能进行全面覆盖,因此,语句覆盖是弱覆盖方法。
相关文档
最新文档