L-第4章-软件工程课件白盒测试用例设计方法
用例设计方法白盒测试PPT优质资料
语句覆盖率:已执行的可执行语句/程序中可执行语句总 数
缺陷:不是最重要的衡量指标,无法发现循环条件的错误 以及循环次数存在的问题。
判定覆盖
判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的 取真分支和取假分支至少经历一次。又称为分支覆盖。
【优点】 判定覆盖具有比语句覆盖更强的测试能力,而且具有和语句 覆盖一样的简单性,无需细分每个判定就可以得到测试用例。
判定-条件覆盖
判定-条件覆盖就是设计足够的测试用例,使得判断中每 个条件的所有可能取值至少执行一次,同时每个判断的所 有可能判断结果至少执行一次,即要求各个判断的所有可 能的条件取值组合至少执行一次。
优点:满足判定覆盖准则和条件覆盖准则,弥补了二者的 不足。
缺点:主要对整个表达式的最终取值进行度量,忽略了表 达式的内部取值。 即只考虑了各种条件的结果,没有考 虑条件的组合情况。
【缺点】 往往大部分的判定语句是由多个逻辑条件组合而成(如,判 定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果, 而忽略每个条件的取值情况,必然会遗漏部分测试路径。
例如:
int a,b;
if(a || b)
执行语句1
else
执行语句2
要达到这段程序的判断覆盖,我们采用测试用例:1)a = true , b = true ;2)a = flase, b = flase
C、代码检查
代码审查的主要内容包括: (1)编码规范问题 (2)代码结构问题:重复代码、分层不当、耦合紧 (3)实现问题:错误验证、异常处理、线程安全性问
用例设计方法白盒 测试
白盒测试方法
A、逻辑覆盖法 B、路径测试法 C、代码检查 D、白盒测试综合策略
白盒测试用例设计技术课件
出程序基本路径集合中的独立路径条数,这是确定程序中每个可 执行语句至少执行一次所必需的测试用例数目的上界,也即应该 设计的测试用例的数目。 ▪ 确定线性无关的路径的基本集。 ▪ 准备测试用例,确保测试基本路径集中的每一条路径的执行。
▪ 召开评审会议之后,要准备一份书面报告,明确解决问题所必需重做
的工作。然后程序员进行修改,由会议协调员验证修改结果。根据修 改的范围和规模以及软件的关键程序,可能还需要进行重新评审,以 便找到其余的软件缺陷。评审经证实是所有软件交付过程中,特别是 设计文档和代码中发现软件缺陷非常有效的方法。
静态白盒法应该具备的基本要素
白盒测试用例设计技术
内容提要
▪ 静态白盒法 ▪ 侵入式法 ▪ 路径覆盖法 ▪ 基本路径法 ▪ 定义/使用法 ▪ 程序片法 ▪ 白盒测试的其他方法
白盒测试概念
▪ 白盒测试也称结构测试或逻辑驱动测试,通过了解软件系
统的内部工作过程,设计测试用例来检测程序内部动作是 否按照规格说明书规定的正常进行,按照程序内部的结构 测试程序,检验程序中的每条通路是否都有能按预定要求 正确工作。
语句路径覆盖
语句路径覆盖是一个比较弱的 逻辑路径覆盖标准。它的涵义是指 通过选择足够的测试用例,使得运 行这些测试用例时,被测程序的每 个语句至少被执行一次。
s
入口
a
(y>1)
&&
(z==0)
F
b
(y==2)
|| (x>1)
F
d 返回
T
x=x/y c
T
x = x +1 e
白盒测试测试用例设计
白盒测试测试用例设计1. 简介白盒测试是一种软件测试方法,通过检查软件的内部结构和代码来验证其功能的正确性。
在白盒测试中,测试用例需要针对软件的源代码进行设计,以确保覆盖所有可能的路径和条件。
本文将介绍白盒测试测试用例的设计过程和方法。
2. 测试目标白盒测试的主要目标是验证软件的内部逻辑是否正确,能够覆盖所有的代码路径并检查各种条件下的正确性。
通过设计有效的测试用例,可以发现潜在的错误并提高软件质量。
3. 测试用例设计步骤3.1 分析代码首先需要对软件的源代码进行分析,了解每个模块的功能和内部逻辑。
通过代码分析可以确定哪些部分需要进行测试,以及可能存在的边界条件和特殊情况。
3.2 确定测试条件根据代码分析的结果,确定需要测试的条件和路径。
这些条件可以包括函数的输入范围、边界值、异常情况等。
3.3 设计测试用例根据确定的测试条件,设计具体的测试用例。
测试用例应该覆盖不同的条件和路径,以确保软件在各种情况下都能正确运行。
3.4 确认测试用例设计好测试用例后,需要经过仔细审查和确认,确保每个测试用例都能有效地检查软件的功能。
4. 示例假设有一个简单的函数用于计算两个数的和:def add(a, b):return a + b基于这个函数,可以设计以下测试用例: - 输入正整数:测试a和b都为正整数的情况。
- 输入负整数:测试a和b都为负整数的情况。
- 输入零:测试a或b 为零的情况。
- 输入浮点数:测试a和b为浮点数的情况。
- 输入特殊字符:测试a或b包含特殊字符的情况。
5. 结论白盒测试是一种重要的软件测试方法,通过设计有效的测试用例可以帮助发现潜在问题并提高软件质量。
在测试用例设计过程中,需要仔细分析代码、确定测试条件并设计具体的测试用例,以确保软件在各种情况下都能正确运行。
希望本文对读者在白盒测试测试用例设计方面有所帮助。
白盒测试用例设计方法
白盒测试用例设计方法
白盒测试用例设计方法是通过了解软件系统的内部结构和代码的执行路径来设计测试用例。
下面是几种常用的白盒测试用例设计方法:
1. 语句覆盖:确保每个代码语句至少被执行一次。
设计测试用例以覆盖代码中的每个语句。
2. 判定覆盖:设计测试用例以覆盖代码中的每个条件判断语句的每个路径。
包括覆盖判断条件为真和为假的两个路径。
3. 条件覆盖:确保每个条件判断语句中的每个条件都被测试覆盖。
为此,需要设计多个测试用例来测试各种组合情况。
4. 路径覆盖:设计测试用例以覆盖代码中的每个可能路径。
这种方法通常会生成大量的测试用例,因为需要测试所有可能的路径组合。
5. 循环覆盖:确保所有的循环结构被至少测试一次。
设计测试用例以覆盖循环的各种情况,如循环未执行、执行一次、多次等。
6. 数据流覆盖:设计测试用例以覆盖代码中使用的各种数据流。
包括输入数据、输出数据和中间数据的覆盖。
以上是一些常用的白盒测试用例设计方法,根据具体的软件系统和测试目标,可以选择合适的方法来设计测试用例。
第4章 软件工程课件白盒测试用例设计方法(高等教学)
控制流图
说明 控制流图是由节点和边组成的有向图 1. 节点代表了代码或程序流程图中矩形框中所表示的处理, 菱形表示的判断处理以及判断处理流程相交的汇合点, 在图中用标有编号的圆圈表示 2. 边表明了控制的顺序,在图中用有向箭头表示。
行业学习
控制流图
三种逻辑结构的控制流图
顺序
条件
行业学习
87
88
89-90
92
99-100
93
94
95
96
97-98
102
行业学习
基本路径和测试用例(1)
81-86
87
88
89-90
92
99-100
93
基本路径和测试用例 1. 81-86->87->88->92->93 >95->97-98->102 相应的测试用例: 测试输入 = (68,68,56) 预期结果 = 这是一个等腰三角形!
行业学习
环复杂度
环复杂度 闭合区域的数目 = 5 二值判定节点个数 + 1 =4+1=5 边的数目-节点的数目 + 2 = 16-13+2=5
行业学习
基本路径
实用的定义
一条路径是基本路径如果:
1. 是一条从起始节点到终止节点的路径.
2. 至少包含一条其它基本路径没有包含的边. (至 少引入一个新处理语句或一个新判断的程序通 路.)
常用的白盒测试技术 基本路径测试 分支-条件测试 循环测试
行业学习
说明 一般情况,仅使用一种测试用例设计方法很难获得被 测对象所需的测试用例。在实际测试中,最终的测试 用例通常都是多种设计技术相结合的结果。 在使用白盒测试方法之前进行代码评审是一个非常好 的工程实践
白盒测试用例设计方法
1白盒测试用例设计方法1.1白盒测试简介白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,一般多发生在单元测试阶段。
白盒测试方法主要包括逻辑覆盖法,基本路径法,程序插装等。
这里重点介绍一下常用的基本路径法,对于逻辑覆盖简单介绍一下覆盖准则。
1.2基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出独立路径集合,从而设计测试用例,设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。
在介绍基本路径测试方法(又称独立路径测试)之前,先介绍流图符号:图1如图1所示,每一个圆,称为流图的节点,代表一个或多个语句,流程图中的处理方框序列和菱形决策框可映射为一个节点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。
一条边必须终止于一个节点,即使该节点并不代表任何语句,例如,图2中两个处理方框交汇处是一个节点,边和节点限定的范围称为区域。
图2任何过程设计表示法都可被翻译成流图,下面显示了一段流程图以及相应的流图。
注意,程序设计中遇到复合条件时(逻辑or, and, nor 等),生成的流图变得更为复杂,如(c)流图所示。
此时必须为语句IF a OR b 中的每一个a和b 创建一个独立的节点。
(c)流图独立路径是指程序中至少引进一个新的处理语句集合,采用流图的术语,即独立路径必须至少包含一条在定义路径之前不曾用到的边。
例如图(b)中所示流图的一个独立路径集合为:路径1:1-11路径2:1-2-3-4-5-10-1-11路径3:1-2-3-6-8-9-10-1-11路径4:1-2-3-6-7-9-10-1-11上面定义的路径1,2,3 和4 包含了(b)流图的一个基本集,如果能将测试设计为强迫运行这些路径,那么程序中的每一条语句将至少被执行一次,每一个条件执行时都将分别取tru e 和false(分支覆盖)。
白盒测试设计用例的方法
白盒测试设计用例的方法
1. 等价类划分法呀!这就像是把东西分类一样,把可能的情况分成几大类。
比如说测试一个登录功能,那就可以把用户名和密码的正确、错误情况进行分类,分别设计用例。
哇塞,这样不就能全面覆盖各种情况了嘛!
2. 边界值分析法,嘿,这个可重要啦!就像走路到了边界处特别要小心一样。
比如规定输入年龄在 18 到 60 岁,那 18 和 60 这两个边界值就得好好测试呀,这不是很容易理解嘛!
3. 因果图法呢,哎呀,就像是顺着线索找原因和结果。
比如有多个条件影响一个结果,那咱就得好好分析这些条件之间的关系,然后设计用例,不是挺有意思嘛!
4. 判定表法呀,这就好像是做一个决策表格似的。
对于复杂的条件组合,通过判定表清晰地列出来,然后得出对应的用例,是不是很厉害呢!
5. 正交试验法哦,听着就很牛掰吧!就像是从很多因素中选出最关键的组合来进行测试。
比如有多个参数要考虑,用这个方法就能高效地选出典型组合进行用例设计,是不是超级有用呀!
6. 场景法呢,哇哦,这简直就是在模拟一个场景片段呀!想想一个业务流程,从开始到结束,设计出符合各种场景的用例,这多生动形象呀,当然能把测试做好啦!
我觉得这些白盒测试设计用例的方法都超级棒,各有各的厉害之处,用好了就能让测试工作如虎添翼呀!。
《白盒测试法》课件
优点
代码覆盖率高
白盒测试法能够深入到代码的 逻辑结构中,对代码进行详细 的覆盖,从而确保测试的全面
性。
测试质量高
由于白盒测试法能够深入了解 代码逻辑,因此能够发现更深 层次的代码错误和缺陷,提高 测试质量。
可针对需求定制
白盒测试法可以根据具体的软 件需求和设计进行定制化的测 试,从而更好地满足测试需求 。
04
白盒测试法的工具
JUnit
JUnit是一个Java语言的单元测试框架,用于编写和执行测试用例,验证代码的正确 性和可靠性。
JUnit提供了一系列的注解和断言方法,方便开发者编写测试代码,并且支持测试套 件和测试运行器的概念,可以方便地组织和管理多个测试用例。
JUnit还支持参数化测试和测试模板,提高了测试的灵活性和可维护性。
02
白盒测试法通常在软件开发过程 中,特别是在编码阶段进行,以 便在早期发现和修复潜在的错误 和缺陷。
白盒测试法的目的
01
02
03
验证代码的正确性
白盒测试法通过检查代码 的逻辑和结构,验证代码 是否符合设计要求,是否 能够正确实现功能。
提高代码质量
通过白盒测试,可以发现 代码中的缺陷和错误,并 及时修复,从而提高代码 的质量和稳定性。
《白盒测试法》ppt课件
目 录
• 白盒测试法简介 • 白盒测试法的主要技术 • 白盒测试法的实施步骤 • 白盒测试法的工具 • 白盒测试法的优缺点 • 白盒测试法的案例分析
01
白盒测试法简介
白盒测试法的定义
01
白盒测试法是一种软件测试方法 ,它要求测试人员对被测软件的 内部结构和工作原理有深入的了 解。
测试到。
循环覆盖
第4章 白盒测试及其用例的设计PPT课件
A Free sample background from
第四章 白盒测试及其用例的设计
判定覆盖
• 要实现DoWork函数的判定覆盖,需要设计两个测试用例。
➢ 测试用例的输入为:{x=4、y=5、z=5};{x=2、y=5、z=5}
➢ 程序执行的路径分别是:abd;ace
• 分析:
上述两个测试用例不仅满足了判定覆盖,同时还做到语 句覆盖。从这点看似乎判定覆盖比语句覆盖更强一些,但 仍然无法确定判定内部条件的错误。例如把第二个判定中 的条件y>5错误写为y<5,使用上述测试用例,照样能按原 路径执行而不影响结果。因此,需要有更强的逻辑覆盖准 则去检验判定内的条件。
第四章 白盒测试及其用例的设计
条件覆盖(续)
• 根据条件覆盖的基本思想,要使上述4个条件可能产生的 8种情况至少满足一次,设计测试用例如下:
测试用例 执行路径 覆盖条件 覆盖分支
x=4、y=6、z=5
abd
T1、T2、 T3、T4
bd
x=2、y=5、 z=15 ace
-T1、-T2、 -T3、-T4
假设此时开发工作已结束,程序 送交到测试组,没有人知道代码中有 一个潜在的被 0 除的错误。若测试组 采用的测试用例的执行路径没有同时 经过x=0和y=5/x进行测试,显然测试 工作似乎非常完善,测试用例覆盖了 所有执行语句,也没有被 0 除的错误 发生。
Return
A Free sample background from
A Free sample background from
第四章 白盒测试及其用例的设计
判定覆盖(续)
• 说明:以上仅考虑了两出口的判断,我们还应把判定覆盖 准则扩充到多出口判断(如Case语句)的情况。因此,判 定覆盖更为广泛的含义应该是使得每一个判定获得每一种 可能的结果至少一次。
《软件白盒测试》课件
03 白盒测试的常用技术
代码覆盖技术
添加项标题
语句覆盖:确保每个语句都被执行至少一次
添加项标题
判定覆盖:确保每个判定(if、else、switch等)都被执行至少一次
添加项标题
条件覆盖:确保每个判定中的每个条件都被执行至少一次
添加项标题
路径覆盖:确保程序中的每个路径都被执行至少一次
添加项标题
循环覆盖:确保每个循环都被执行至少一次,包括循环体和循环条件
软件白盒测试
,
汇报人:
目录 /目录
01
点击此处添加 目录标题
04
白盒测试的实 践过程
02
软件白盒测试 概述
05
白盒测试的优 缺点
03
白盒测试的常 用技术
06
白盒测试工具 介绍
01 添加章节标题
02 软件白盒测试概述
定义和概念
软件白盒测试: 一种软件测试方 法,通过分析程 序的内部结构和 逻辑,验证程序 的正确性和完整 性。
感谢您的观看
汇报人:
添加项标题
数据流覆盖:确保程序中的数据流都被执行至少一次,包括输入、输出和内部数据流
路径覆盖技术
定义:通过执行所有可能的路径来测试软件 优点:能够全面覆盖软件的所有路径,提高测试覆盖率 缺点:需要大量的测试数据,可能导致测试时间过长 应用场景:适用于逻辑复杂的软件系统,如操作系统、数据库管理系统等
析和改进
测试用例设计
确定测试目标:明确测试的目的和范 围
设计测试用例:根据测试目标设计测 试用例
执行测试用例:按照测试用例执行测 试
记录测试结果:记录测试过程中的异 常情况和测试结果
分析测试结果:分析测试结果,找出 问题所在
白盒测试用例设计方法
白盒测试用例设计方法随着互联网行业的发展,人们对软件品质的要求也越来越高,因此软件测试也显得尤为重要。
目前,软件测试中最为重要的一种方式就是白盒测试,它着力于分析内部结构和行为,并设计出恰当的测试用例,以便确定软件是否满足用户和开发者的需求。
白盒测试用例设计是指帮助开发者定义和构建测试用例的过程,以便检查软件是否正常工作。
由于每个软件的结构和行为都不尽相同,因此白盒测试的用例设计方法也有多种不同的形式。
白盒测试用例设计方法包括以下几种:一、基于流程的测试用例设计方法基于流程的测试用例设计方法是根据软件系统用户交互的流程来设计测试用例,它关注的是用户操作的输入和输出。
二、基于数据的测试用例设计方法基于数据的测试用例设计方法是根据不同的数据输入情况来设计测试用例,关注的是软件对不同类型的输入数据的处理情况。
三、基于状态的测试用例设计方法基于状态的测试用例设计方法是根据软件系统的状态来设计测试用例,它关注的是软件系统在处理不同状态时的行为是否符合预期。
四、基于安全性的测试用例设计方法基于安全性的测试用例设计方法是根据安全性要求来设计测试用例,关注的是软件系统的安全性。
白盒测试用例设计是一项非常复杂的工作,需要综合考虑软件结构、行为和安全性等多方面因素。
它不仅要求开发者具备足够的测试知识,而且还要求他们拥有测试分析和思维分析能力。
另外,白盒测试用例设计师还需要充分了解软件、技术和规范,并对软件测试工具和方法有较深入的了解。
如果由于忽略上述重要因素而导致测试用例无法有效覆盖软件的所有功能,将有可能破坏软件的品质,甚至威胁到软件的安全性。
此外,白盒测试用例设计还需要考虑到性能测试,即检查软件的性能、可用性和可靠性以确保软件的可用性。
对于性能测试用例,开发者需要牢记一些注意事项,比如:输入输出数据的量级,循环次数,记录最大,最小,平均值等等。
这些信息有助于检验软件是否具有良好的性能,以及更快更好地解决性能问题。
白盒测试的测试用例设计方法
白盒测试的测试用例设计方法白盒测试是一种测试方法,旨在验证程序内部的结构和逻辑。
在白盒测试中,测试人员需要设计有效的测试用例来全面评估系统的功能和准确性。
本文将介绍几种常用的白盒测试用例设计方法。
一、语句覆盖(Statement Coverage)语句覆盖是一种基本的白盒测试用例设计方法。
它要求测试用例能够覆盖被测试程序中的每条语句至少一次。
通过执行每个语句,可以确保程序的基本功能正常运行。
测试人员可以通过代码走查和代码覆盖率工具来确定覆盖情况。
二、判定覆盖(Decision Coverage)判定覆盖是一种更为严格的白盒测试用例设计方法。
它要求测试用例能够覆盖每个条件语句的所有可能结果,包括真值和假值。
通过判定覆盖,可以验证程序在不同条件下的正确性。
测试人员需要对每个条件进行测试设计,确保每个结果都被覆盖到。
三、条件覆盖(Condition Coverage)条件覆盖是判定覆盖的一种补充方法。
它要求测试用例能够覆盖每个独立条件的所有可能情况。
通过条件覆盖,可以确保程序在各种条件下的正确处理。
测试人员需要考虑所有可能的条件组合,并设计相应的测试用例。
四、路径覆盖(Path Coverage)路径覆盖是一种高级的白盒测试用例设计方法。
它要求测试用例能够覆盖程序中所有可能的执行路径。
通过路径覆盖,可以全面评估程序的逻辑和流程。
测试人员需要分析代码,找出程序的所有路径,并设计测试用例来覆盖这些路径。
五、边界值覆盖(Boundary Value Coverage)边界值覆盖是一种特殊的白盒测试用例设计方法。
它要求测试用例能够覆盖每个输入和输出的边界值。
通过边界值覆盖,可以检测程序对边界情况的处理是否正确。
测试人员需要确定每个输入和输出的边界,设计测试用例来验证程序的边界处理能力。
六、错误推测(Error Guessing)错误推测是一种经验主义的白盒测试用例设计方法。
它要求测试人员根据自己的经验和直觉来猜测可能存在的错误,并设计相应的测试用例来验证。
L-第4章 软件工程课件白盒测试用例设计方法
4-16
基本路径测试示例:
4
计算环形复杂度:
10(条边)- 8(个节点)+ 2 = 4
6 7 10 14 13 9 12
基本路径: 路径1:4→14 路径2:4→6→7→14 路径3:4→6→9→10→13→4→14 路径4:4→6→9→12→13 →4→14
4-17
三角形问题
使用基本路径设计测试用例方法推导三角形问题的测试用例P67
1.
测试用例有效性不高: t(真) && t (真) =t || t=t 同时 f && f=f || f=f ((a<b+c) || (b<a+c) && (c<a+b))
2.
3.
((a<b+c) && (b<a+c) ||(c<a+b))
((a<b+c) || (b<a+c) || (c<a+b))
4-35
案例
((a<b+c) && (b<a+c) && (c<a+b)) 68,68,68 68, 8,60 8, 68,60 8, 60,68 T F F F a<b+c T F T T b<a+c T T F T
c<a+b
T T T F
使用上面的测试用例,是否可以发现下面的缺陷
1.
2. 3. 4.
4-14
基本路径
1. 2.
基本路径 1-2-11 1-2-3-4-5-6-10-2-11
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复合条件 ((a<b+c) && (b<a+c) && (c<a+b)) 简单条件 a<b+c b<a+c c<a+b
4-33
案例
((a<b+c) && (b<a+c) && (c<a+b)) 68,68,68 0,0,0 T F a<b+c T F b<a+c T F
c<a+b
T F
上面的测试用例不推荐大家使用
常用的白盒测试技术
基本路径测试 分支-条件测试 循环测试
4-3
说明
一般情况,仅使用一种测试用例设计方法很难获得被 测对象所需的测试用例。在实际测试中,最终的测试
用例通常都是多种设计技术相结合的结果。
在使用白盒测试方法之前进行代码评审是一个非常好 的工程实践
4-4
不可能进行彻底的白盒测试
4-16
基本路径测试示例:
4 6 7 10 14 13 9 12
计算环形复杂度:
10(条边)- 8(个节点)+ 2 = 4
基本路径: 路径1:4→14 路径2:4→6→7→14 路径3:4→6→9→10→13→4→14 路径4:4→6→9→12→13 →4→14
4-17
三角形问题
使用基本路径设计测试用例方法推导三角形问题的测试用例P67
102
4-20
基本路径和测试用例(1)
81-86
基本路径和测试用例
1.
87
81-86->87->88->92->93 >95->97-98->102
88
89-90
相应的测试用例: 测试输入 = (68,68,56)
92
99-100
93
预期结果 = 这是一个等腰三角形!
95
94
2.
97-98
81-86->87->88->92->93 >95->96->102
(68,60,56), (68,68,68), (68,8,56)是
否可以发现这个问题?
4-29
分支-条件测试
测试思想
根据模块中的逻辑条件设计测试用例,使得被
测模块中的每一个复合条件以及构成这个复合
条件的每一个简单条件的真假情况至少被执行
一次。
4-30
1.
简单条件是一个布尔变量或一个可能带有NOT(“┓”)
81-86->87->88->92->93>95->97-98->102 81-86->87->88->92->93>95->96->102 81-86->87->88->92->93>94->102 81-86->87->89-90->92>93->94->102
4-23
88
89-90
2. 3.
95
95
94
预期结果= 这是一个等边三角形!
9798
96
4.
81-86->87->89-90->92->99100->102
相应的测试用例: 测试输入 = (68,8,60)
102
预期结果= 这不是一个三角形!
4-22
基本路径与环复杂度
81-86
1.
87
81-86->87->88->92->99100->102
4-34
对分支-条件测试的讨论
((a<b+c) && (b<a+c) && (c<a+b)) 68,68,68 68, 8,56 8, 68,56 8, 56,68 T F F F a<b+c T F T T b<a+c T T F T c<a+b T T T F
这组测试用例的结果又如何?
1.
((a<=b+c) && (b<a+c) && (c<a+b))?
4-39
循环测试
测试思想 关注循环体结构的正确性,对循环变量运用类似于边界值 测试的方法以验证循环体结构的正确性。
四种不同类型的循环结构
1. 2. 3. 4.
简单循环 嵌套循环 连接循环 非结构循环
4-40
循环类型
简单循环
嵌套循环
连接循环
非结构循环
4-41
测试简单循环
如果n 是循环次数, 那么测试用例应包括
2.
边表明了控制的顺序,在图中用有向箭头表示。
4-8
控制流图
三种逻辑结构的控制流图
顺序
条件
循环
4-9
控制流图
B 1
1
2
2
3
3 4 8
4 5
8
5 6 7
9
9
6
10
7
1 0 11
11
E
4-10
环复杂度
含义
用V(G)表示 用来衡量一个模块判定结构的复杂程度,在数量上表现 为独立的路径条数,是需要测试的基本路径数目的上限。
边的数目-节点的数目 + 2 = 16-13+2=5
4-13
基本路径
实用的定义
1.
一条路径是基本路径如果:
是一条从起始节点到终止节点的路径.
2.
至少包含一条其它基本路径没有包含的边. (至 少引入一个新处理语句或一个新判断的程序通 路.)
注意:对于循环而言,基本路径应包含不执行循 环和执行一次循环体。
左图是具有某程序的流程图,假设循环10次, 请计算一下有多少条程序执行通路?假设由图 中得到的所有路径都是可执行路径,执行一次 循环大约需要10微秒(奔腾4 1.7G),且一 年365天每天24小时不停机,请回答:如果循 环次数为10的话,遍历图中所有路径需要多长 时间?
结论是:41+42+43+„„+410,需要14秒左右的时间 如果循环次数为20次,100次时,结果又如何? 结论是:循环20次,需要约4072小时,循环100次则 大约需要6.79*1047年
第4章 白盒测试用例设计方法
1
本章内容
讨论常用的白盒测试用例设计方法,包括
基本路径测试
分支-条件测试 循环测试 其它白盒测试方法 综合运用白盒测试方法进行程序结构测试 白盒测试工具 覆盖准则 覆盖率测试工具
4-2
白盒测试
定义
基于系统或者组件的内部实现结构和逻辑寻找缺陷的测 试技术
4-35
案例
((a<b+c) && (b<a+c) && (c<a+b)) 68,68,68 68, 8,60 8, 68,60 8, 60,68 T F F F a<b+c T F T T b<a+c T T F T
c<a+b
T T T F
使用上面的测试用例,是否可以发现下面的缺陷
1.
2. 3. 4.
直接跳过循环体 只执行一遍循环体
连续执行两遍循环体
如果循环次数为n,执行m( m < n) 遍循环体
如果循环次数为n,那么执行n -1遍循环 体
4-18
控制流图
8186
87
88
8990 92
99100
93
94
95
96
9798
102
4-19
环复杂度
81-86
87
环复杂度
88
89-90
闭合区域的数目 = 5
二值判定节点个数 + 1
99-100
92
93
=4+1=5
94
95
边的数目-节点的数目 + 2 = 15-12+2=5
96
97-98
((a<=b+c) && (b<a+c) && (c<a+b))
((a<b+c) || (b<a+c) && (c<a+b)) ((a<b+c) && (b<a+c) ||(c<a+b)) ((a<b+c) || (b<a+c) || (c<a+b))
4-36
结论
分支-条件测试可以发现但并不保证发现所有下列缺陷
4-26
对节点粒度的讨论
① ② ③ ⑥
⑨
⑩
④ ⑤ ⑦ ⑧
1 3
1 1 1 2
4-27
对节点粒度的讨论
1 2 3
4
① ② ④ ⑤ ⑦ ⑨ ⑧ ③
7
5
6
8
⑥
9 1 0
11 1 2
⑩
13