软件工程--白盒测试技术 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{
白盒测试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的入度和出度。
控制流图: 为了更加突出控 制流的结构,需 要对程序流程图 做些简化,这种 简化了的流程图 称为控制流图。
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的入度和出度。
《白盒测试法》课件

结论
通过本课件的学习,您将了解到白盒测试法的特点和应用价值,以及如何利用它来提高软件质量和可靠性。
白盒测试法的应用场景
白盒测试法适用于需求明确、具有复杂逻辑结构或高风险的软件项目,可以有效发现隐藏的 代码错误和漏洞。
白盒测试法的测试对象
白盒测试法适用的测试对象
白盒测试法适用于各种类型的软件系统,包括
白盒测试法不适用的测试对象
白盒测试法通常不适用于硬件电路和不需要了解内 部实现的功能简单软件模块。
白盒测试法的测试方法
1
动态测试方法
2
通过运行程序并监视其行为,动态测试 方法可以评估测试用例对程序的覆盖情
况并验证其正确性。
静态分析方法
通过分析代码的控制流、数据流和符号 执行等方法,静态分析可以提供关于程 序结构和行为的静态信息。
《白盒测试法》PPT课件
欢迎参加《白盒测试法》课件!这是一个关于白盒测试法的详细介绍,并包 括其定义、应用场景、测试对象、测试方法、优缺点以及应用示例的内容。
什么是白盒测试法
白盒测试法的定义
白盒测试法是一种软件测试方法,通过了解被测试系统的内部实现和代码结构,设计测试用 例并验证系统的正确性和可靠性。
白盒测试法的优缺点
优点
• 可以发现代码错误和漏洞 • 能提高代码质量和可靠性
缺点
• 需要了解被测试系统的内部实现 • 测试难度大,测试成本高
白盒测试法的应用示例
代码示例分析
通过对一个实际代码段的分析,演示如何使用白盒测试法来设计测试用例和验证代码的正确性。
白盒测试用例设计实例
提供一个详细的实例,展示如何根据白盒测试法的原则和技巧来设计测试用例,并对被测试系统进行全面的测 试。
软件测试工程师培训-测试技术基础PPT课件

▪ 需求分析阶段: – 制定测试需求分析、确认/系统测试计划, 经评审后成为配置管理项。 – 测试所需要的资源、配置、每阶段评判通 过标志进行规约。
28
2.2 软件开发与软件测试- 开发各阶段的测试工作
▪ 详细设计和概要设计阶段: – 确保集成测试计划和单元测试计划完成。 – 测试计划完成后,对参考的设计文档进行修改。
输入
输出
黑盒测试又称功能测试、数据驱动测试或基于 规格说明的测试,也可被成为用户测试,主要 应用于快速应用开发(RAD)环境
41
2.4 测试方法-白盒测试
▪ 白盒测试的前提是可以把程序看成装在一个 透明的白盒子里,也就是完全了解程序结构 盒处理过程,这种方法按照程序内部逻辑测 试程序,检验程序中每条通路是否按预定要 求正确工作。
–测试无法说明错误不存在,只能说明 软件错误已出现。
13
2.1 软件测试的定义
14
2.1 软件测试的定义
▪ 软件测试的原则 – 尽早地和不断地进行软件测试 – 避免测试自己的程序 – 执行测试计划,排除随意性 – 增量测试,由小到大 – 周密的测试用例(输入条件(合理、不合理)、 预期输出结果)
进行跟踪。 ▪ 代码审查关注下列类型问题: (1)数据引用错误(2)数据说明(3)计算(4)比较 (5)控制流(6)接口(7)输入/输出(8)其它检查
46
2.4 测试方法
人工走查(Walkthroughs) ▪ 人工走查与代码审查一样,首先通过资料,
研究程序。但不同的是:在人工走查会上是 通过测试数据与人工运行程序来达到测试目 的。 ▪ 对照实验发现,人工走查和审查会平均能查 出被测程序38%的错误。据资料,IBM代码 审查会的查错效率高达80%。
8
28
2.2 软件开发与软件测试- 开发各阶段的测试工作
▪ 详细设计和概要设计阶段: – 确保集成测试计划和单元测试计划完成。 – 测试计划完成后,对参考的设计文档进行修改。
输入
输出
黑盒测试又称功能测试、数据驱动测试或基于 规格说明的测试,也可被成为用户测试,主要 应用于快速应用开发(RAD)环境
41
2.4 测试方法-白盒测试
▪ 白盒测试的前提是可以把程序看成装在一个 透明的白盒子里,也就是完全了解程序结构 盒处理过程,这种方法按照程序内部逻辑测 试程序,检验程序中每条通路是否按预定要 求正确工作。
–测试无法说明错误不存在,只能说明 软件错误已出现。
13
2.1 软件测试的定义
14
2.1 软件测试的定义
▪ 软件测试的原则 – 尽早地和不断地进行软件测试 – 避免测试自己的程序 – 执行测试计划,排除随意性 – 增量测试,由小到大 – 周密的测试用例(输入条件(合理、不合理)、 预期输出结果)
进行跟踪。 ▪ 代码审查关注下列类型问题: (1)数据引用错误(2)数据说明(3)计算(4)比较 (5)控制流(6)接口(7)输入/输出(8)其它检查
46
2.4 测试方法
人工走查(Walkthroughs) ▪ 人工走查与代码审查一样,首先通过资料,
研究程序。但不同的是:在人工走查会上是 通过测试数据与人工运行程序来达到测试目 的。 ▪ 对照实验发现,人工走查和审查会平均能查 出被测程序38%的错误。据资料,IBM代码 审查会的查错效率高达80%。
8
第3章白盒测试技术

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

第五页,共一百九十四页。
软件测试概论(gàilùn)〔行情〕
国外:
A、软件测试在软件公司中占有重要(zhòngyào)的地位 B、软件测试理论研究蓬勃开展,引领软件测试理论研究
的国际潮流
C、软件测试市场繁荣
国内: 1、我国著名的软件公司都已经或者正在建立独立的专职软
件测试队伍 2、国家开始对软件测试职业高度重视和认可〔软考中级资
需求分析,概要设计,详细设计以及程序编码等各阶段 所得到的文档,包括需求规格说明,概要设计规格说明, 详细设计规格说明以及源程序。
第十九页,共一百九十四页。
软件测试的对象(duìxiàng)
为了把握各个环节的正确性,人们需要进行各种验证和确 认工作 :
❖ 验证(verification): 是保证软件正确实现特定功能的一系 统活动和过程,目的是保证软件生命周期中的每一个阶段的 成果满足上一个阶段所设定的目标。
初 学 者
QTP功能测试 工具学习
LoadRunner性 能测试工具学习
软件测试理论 基础学习
缺陷管理 知识学习
数据库 知识学习
配置管理 知识学习
项目实战
岗前培训 面试技巧
图1-3 软件测试学习路线图
Web测试环境 搭建学习
Linux操作系统 知识学习
工 作
第十一页,共一百九十四页。
软件测试由来
❖调试
测试(cèshì)工程师的职业开展
❖ 软件测试工程师一般有几个(jǐ ɡè)方向可走,如图1-2所示。
初级测试工程师 中级测试工程师
高级测试工程师
测试管理者
图1-2 职业发展规划图
开发工程师
❖ 一个理想的测试工程师应该有开发经验,至少要有开发 的概念。仅仅发现Bug是测试的初步,而分析出根本原 因,却要有很深的功底。
软件测试概论(gàilùn)〔行情〕
国外:
A、软件测试在软件公司中占有重要(zhòngyào)的地位 B、软件测试理论研究蓬勃开展,引领软件测试理论研究
的国际潮流
C、软件测试市场繁荣
国内: 1、我国著名的软件公司都已经或者正在建立独立的专职软
件测试队伍 2、国家开始对软件测试职业高度重视和认可〔软考中级资
需求分析,概要设计,详细设计以及程序编码等各阶段 所得到的文档,包括需求规格说明,概要设计规格说明, 详细设计规格说明以及源程序。
第十九页,共一百九十四页。
软件测试的对象(duìxiàng)
为了把握各个环节的正确性,人们需要进行各种验证和确 认工作 :
❖ 验证(verification): 是保证软件正确实现特定功能的一系 统活动和过程,目的是保证软件生命周期中的每一个阶段的 成果满足上一个阶段所设定的目标。
初 学 者
QTP功能测试 工具学习
LoadRunner性 能测试工具学习
软件测试理论 基础学习
缺陷管理 知识学习
数据库 知识学习
配置管理 知识学习
项目实战
岗前培训 面试技巧
图1-3 软件测试学习路线图
Web测试环境 搭建学习
Linux操作系统 知识学习
工 作
第十一页,共一百九十四页。
软件测试由来
❖调试
测试(cèshì)工程师的职业开展
❖ 软件测试工程师一般有几个(jǐ ɡè)方向可走,如图1-2所示。
初级测试工程师 中级测试工程师
高级测试工程师
测试管理者
图1-2 职业发展规划图
开发工程师
❖ 一个理想的测试工程师应该有开发经验,至少要有开发 的概念。仅仅发现Bug是测试的初步,而分析出根本原 因,却要有很深的功底。
《白盒测试法》课件

优点
代码覆盖率高
白盒测试法能够深入到代码的 逻辑结构中,对代码进行详细 的覆盖,从而确保测试的全面
性。
测试质量高
由于白盒测试法能够深入了解 代码逻辑,因此能够发现更深 层次的代码错误和缺陷,提高 测试质量。
可针对需求定制
白盒测试法可以根据具体的软 件需求和设计进行定制化的测 试,从而更好地满足测试需求 。
04
白盒测试法的工具
JUnit
JUnit是一个Java语言的单元测试框架,用于编写和执行测试用例,验证代码的正确 性和可靠性。
JUnit提供了一系列的注解和断言方法,方便开发者编写测试代码,并且支持测试套 件和测试运行器的概念,可以方便地组织和管理多个测试用例。
JUnit还支持参数化测试和测试模板,提高了测试的灵活性和可维护性。
02
白盒测试法通常在软件开发过程 中,特别是在编码阶段进行,以 便在早期发现和修复潜在的错误 和缺陷。
白盒测试法的目的
01
02
03
验证代码的正确性
白盒测试法通过检查代码 的逻辑和结构,验证代码 是否符合设计要求,是否 能够正确实现功能。
提高代码质量
通过白盒测试,可以发现 代码中的缺陷和错误,并 及时修复,从而提高代码 的质量和稳定性。
《白盒测试法》ppt课件
目 录
• 白盒测试法简介 • 白盒测试法的主要技术 • 白盒测试法的实施步骤 • 白盒测试法的工具 • 白盒测试法的优缺点 • 白盒测试法的案例分析
01
白盒测试法简介
白盒测试法的定义
01
白盒测试法是一种软件测试方法 ,它要求测试人员对被测软件的 内部结构和工作原理有深入的了 解。
测试到。
循环覆盖
软件测试教学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四
逻辑覆盖法
路径覆盖 寻找程序地路径地方法 单个判断语句地路径计算 单个循环语句地路径计算 有嵌套判断或循环时地路径计算
基本路径法
基本路径测试法是在程序控制流图地基 本上,通过分析控制构造地环路复杂,导 出基本可执行地路径集合,从而设计测 试用例地方法。
在基本路径测试,设计出地测试用例要 保证在测试程序地每条可执行语句至少 执行一次。
需求使用程序地控制流图行可视化表达。
基本路径法
程序地控制流图 是描述程序控制流地一种图示方法。其,
圆圈称为控制流图地一个结点,表示一个 或多个无分支地语句或源程序语句;箭头 称为边或连接,代表控制流。 在将程序流程图简化成控制流图时,应注 意: 在选择或多分支结构,分支地汇聚处应有 一个汇聚结点; 边与结点圈定地区域叫做区域,当对区域 计数时,图形外地区域也应记为一个区域。
基本路径法
程序地控制流图
基本路径法
环路复杂度 环路复杂度是一种为程序逻辑复杂提供定
量测度地软件度量 有以下三种方法用于计算环路复杂度: 流图区域地数量对应于环路地复杂度; 给定流图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四
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a >1 || c < 1 T 4
6} 7 c = b+c;
F 5
c=b+c
c=c/a c=c+1
输出:3.5 -2
5. 条件组合覆盖准则
设计足够的测试用例,使得判定中每个条件的所有 可能组合至少出现一次,并且每个判定结果也至少 出现一次。
7.6 白盒测试技术
白盒测试 的原则
对程序模块的所有独立 执行路径至少测试一次
对所有的逻辑判定取 “真”与取“假”的两种情况
都至少测试一次。
在循环的边界和可操作范围 内执行循环体
测试内部数据结构的有效性, 完成边界条件的测试。
执行路径:520个
循
环
近似为1014个
小
于
等 于
如果1ms完成一
20
个测试
No
测试用例
覆盖的判断条件
通过路径
1 a=2,b= -1,c= -2
T1,F2,T3,F4
?
2 A=-1,b=2,c= 3
F1,T2,F3,T4
?
虽然覆盖了所有条件,但不能保证多个判定 分支均被覆盖到
4、 判定—条件覆盖准则
设计足够测试用例,使得判定中的所有条件可 能取值至少执行一次,同时,所有判定的可能 结果至少执行一次。
值为假分支
条件中的取值有 被忽略的情况
a=2,b=1,c=3 a= -2,b=1,c= -3
a >0 && b > 0 T
c=c/a
判定覆盖仍是弱覆 盖标准!
F a >1 || c < 1 T
c=c+1
Bug
F c=b+c
输出:3.5 -2
3. 条件覆盖准则 设计测试用例,使得每个判断中每个条
c = c / a; } if ( a >1 || c > 1 ){
c= c+1; } c = b+c;
M a >0 && b > 0 T
F
N a >1 || c > 1 T
F
c=b+c
c=c/a c=c+1
M=.T. 且 N=.T. M=.F. 且 N=.F.
1
M a >0 && b > 0 T 2
c=c+1
F 5
c=b+c
P1:1-2-4 P2:1-2-5
P3:1-3-4
P4:1-3-5
测试用例集
对于判定M: 条件a>0:取值为真为T1,取值为假为F1 条件b>0:取值为真为T2,取值为假为F2 对于判定N: 条件a>1:取值为真为T3,取值为假为F3 条件c>1:取值为真为T4,取值为假为F4
× Case1 2 0 3 √ Case2 2 1 3
a >0 && b > 0 T F
a >1 || c > 1 T F c=b+c
c=c/a c=c+1
Case2输出:c=3.5
思考:
Case2:a=2, b=1, c=3
如果M为:a >0 || b > 0; N为:a >1&&c > 1,
M a >0 || b > 0
次
需3170年
迪杰斯特拉定律:穷尽测试永远不可能
一、 逻辑覆盖 1. 语句覆盖 2. 判定覆盖 3. 条件覆盖 4. 判定-条件覆盖 5. 条件组合覆盖 6. 路径覆盖
1. 语句覆盖 设计测试用例,使被测程序中的每个
可执行语句至少被执行一次
例题
int a, b; double c; if ( a >0 && b > 0 ){
c = c / a; } if ( a >1 || c > 1 ){
c= c+1; } c = b+c;
a >0 && b > 0 T F
a >1 || c > 1 T F c=b+c
c=c/a c=c+1
M=.T. 且 N=.T.
M
a >0 && b > 0 T
F
N
a >1 || c > 1 T
条件M取值为假分支 条件N取值为假分支
路径 P1
P4
判定—条件覆盖准则的不足
a=2,b=1,c=3 a= -2,b=1,c= -3
1
int a, b; double c
1 if ( a >0 && b > 0 ){
2 c = c / a;
3}
Bug
a >0 && b > 0 T 2
F 3
4 if ( a >1 || c <1 ){ 5 c= c+1;
判定-条件覆盖能同时满足判定、条件两种覆盖 标准。
例题
int a, b; double c if ( a >0 && b > 0 ){
c = c / a; } if ( a >1 || c > 1 ){
c= c+1; } c = b+c;
1
M a >0 && b > 0 T 2 c=c/a
F 3
F
c=b+c
c=c/a c=c+1
Case1:a=2, b此=语0,句c=未3覆盖
用例 a b c
× Case1 2 0 3
Case2 2 1 3
a >0 && b > 0 T F
a >1 || c > 1 T F c=b+c
c=c/a c=c+1
Case2输入:a=2, b=1, c=3
用例 a b c
件 double c if ( a >0 && b > 0 ){
c = c / a; } if ( a >1 || c > 1 ){
c= c+1; } c = b+c;
M a >0 && b > 0 T 2
F 3
c=c/a
N a >1 || c > 1 T 4
N a >1 || c > 1 T 4
F 5 c=b+c
c=c+1
测试用例集
为了使被测程序得到充分测试,不仅每个条件需要 被覆盖,而且每个条件的组合也应该被覆盖到。
No
测试用例
覆盖的判断分支
判定条件
1 a=2,b= 1,c= 3 T1,T2,T3,T4 条件M取值为真分支 条件N取值为真分支
2 a= -1,b= -2,c= -5 F1,F2,F3,F4
Bug
T
c=c/a
测试用例与测试结果有设么 F
变化?
N a >1 && c > 1 T
F
c=c+1
c=b+c
Bug
语句C覆as盖e2是输出弱:覆c盖=3标.5 准!
2. 判定覆盖准则
设计测试用例,使被测程序中的每个判断的 取真分支和取假分支都被测试用例至少执行 一次
例题
int a, b; double c if ( a >0 && b > 0 ){
F 3
N a >1 || c > 1 T 4
F 5 c=b+c
c=c/a c=c+1
设计测试用例及预期结果
测试用例
No
测试用例
覆盖的判断分支
输出结果
1 a=2,b=1,c=3 判断M取值为真分支和判断N取 值为真分支
c=3.5
2 a= -2,b=1,c= -3 判断M取值为假分支和判断N取
c=-2