第四章-白盒测试及其用例的设计汇总
第四章 白盒测试用例设计方法

本科《软件测试与质量保证》
SEI of ECNU 孙海英 版权所有©
4-13
基本路径(选第一条基本路经希 望二直结点尽可能的多)
形式化定义
路径p=vb, v1, v2, ..., vn, ve是由有顺序的一系列节点组成且节点之间 存在这样的关系{<vb, v1>, <v1,v2>, ..., <vn, ve>} ⊆ E 一条路径p=vb, v1, v2, ..., vn, ve是一条基本路径当且仅当p中不包含 两个子序列s1,s2, s1=s2 且 length(s1)>1 and length(s2)>1. s1,s2
本科《软件测试与质量保证》 SEI of ECNU 孙海英 版权所有© 4-3
不可能进行彻底的白盒测试
左图是具有某程序的流程图,假设循环10次,请计算一 下有多少条程序执行通路?假设由图中得到的所有路径 都是可执行路径,执行一次循环大约需要10微秒(奔腾 4 1.7G),且一年365天每天24小时不停机,请回答: 如果循环次数为10的话,遍历图中所有路径需要多长时 间? 结论是:41+42+43+……+410,需要14秒左右的时间 如果循环次数为20次,100次时,结果又如何? 结论是:循环20次,需要约4072小时,循环100次则 大约需要6.79*1047年
1. 2.
是一条从起始节点到终止节点的路径 至少包含一条其它基本路径没有包含的边
SEI of ECNU 孙海英 版权所有© 4-14
本科《软件测试与质量保证》
基本路径
基本路径
1. 2. 3. 4. 5.
1-2-11 1-2-3-4-5-6-10-2-11 1-2-3-4-5-7-10-2-11 1-2-3-8-9-10-2-11 1-2-3-8-10-2-11
白盒测试测试用例设计

白盒测试测试用例设计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白盒测试用例设计方法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(分支覆盖)。
白盒测试及其用例的设计

但当判断条件较为复杂时,它未必能发现每个条件的错误:
((x>3)&&(z<10))为真和为假各取一次(但并不管是怎么取到的)
2. 判定覆盖(也称为分支覆盖):设计若干个测试用例,运 行所测程序,使程序中每个判断的取真分支和取假分支各 至少执行一次; 判定覆盖是把程序中每个分支都覆盖到;
if (x>=0) y=x;
白盒法需要了解程序的内部结构和详细的处 理过程,它按照程序内部逻辑测试程序,检 验程序中每条通路是否按预定要求正确工作。
对于白盒测试,即使每条路径都测试了,程序仍 可能有错。再如由于疏忽漏写了路径,白盒测试也发 现不了。
所以,白盒法不能使测试达到彻底。为了用有限 的测试发现更多的错误,需精心设计测试用例。黑盒 法、白盒法是设计测试用例的基本策略,每一种方法 对应着多种设计测试用例的技术,每种技术可达到一 定的软件质量标准要求。
6. 路径覆盖:设计足够多的测试用例,运行所测程序,要覆盖 程序中所有可能的路径 它是最强的覆盖准则,但只有在程序中有多个复杂分支时, 才能看出和之前几种覆盖的区别
void DoWork(int x,int y,int z)
{
int k=0,j=0;
if((x>3)&&(z<10))
{
k=x*y-1; //语句块1
x4y5z5abdx2y5z5ace上面的两个测试用例虽然能够满足分支覆盖的要求但是也不能实现对判断条件的检查效果如果把第二个条件y5错误地写成y5上面的测试用例同样满足了分支覆盖即查不出写错了这个事实使程序中每个判断的取真分支和取假分支至少执行一次条件覆盖就是设计若干个测试用例运行被测试对象使得程序中每个判断的每个条件的所有可能取值至少执行一次
白盒测试用例设计.doc

2. 自盒测试方法白盒测试以程序的内部逻辑为依据.合理的白盒测试 , 就是要选取足够的测试用例,对源代码实现比较充分的覆盖,以便尽可能多地发现程序中的错误。
1) 逻辑覆盖法 (LOGICCOVERAGE)逻辑覆盖是一组覆盖方法的总称。
按照由低到高对程序逻辑覆盖的程度,又可区分为以下几种覆盖一语句覆盖 : 使被测程序的每条语句至少执行一次 ;一判定覆盖: 使被测程序的每一分支至少执行一次 , 故又称分支覆盖 ;一条件覆盖 : 要求判定中的每个条件均按“真”、“假”两种结果至少执行一次。
如果判定中仅含一个条件 , 条件覆盖也就是判定覆盖 ; 但若判定中包含两个或更多的每件 , 情况就不同了。
例如对于判定表达式(A > 1)AND (B=0)要求所选的测试用例能使① A > 1; ② A <1; ③ B=0; 和④ B!=0。
这 4 种结果至少各出现一次。
而在判定覆盖中 , 只要求 (A > l)AND (B=O) 为 " 真 " 出现一次 , 为 " 假 " 也出现一次。
简言之 , 后者把判定看成一个整体 , 前者却要求分别考虑判定中的每一个条件。
一条件组合覆盖:这是覆盖程度比前 3 种都强的一种覆盖。
它与条件覆盖的区别是 , 它不是简单地要求每个条件都出现 " 真 " 与 " 假 " 两种结果 , 而是要求让这些结果的所有可能组合都至少出现一次。
仍以判定 |(A > 1)AND (B=O)为例,条件(A >1)可出现2种结果,(B=0)也可能有2种结果,两者相与,将出现2*2=4种可能的组合。
即:A>1,B=0 产生“真”AND“真”A>1,B!=0 产生“真”AND“假”A<1,B=0 产生“假”AND“真”A<=1,B!=0 产生“假”AND“假”以上共介绍了4种覆盖。
白盒测试及用例设计

白盒测试白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。
利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
白盒测试又称为结构测试和逻辑驱动测试。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
白盒测试六种覆盖方法摘要:白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视。
白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。
4(2)第4章 白盒测试用例2-基本路径法

TC3
TC4
练习题
Logo
• 根据左图给出的程序流程 图,完成以下要求:
(1)画出相应的控制流 图。
(2)计算环形复杂度。
(3)给出相应的图矩阵。 (4)找出程序的独立 路径集合。
f b
c
3
d
4
e
5
• 在控制流图中只 有两种图形符号, 它们是: 1. 节点:以标有编 号的圆圈表示。 2. 控制流线或弧: 以箭头表示。
1. 程序的控制流图
Logo
节点
1、标有编号的圆圈 2、程序流程图中矩形框所表示的处 理 3、菱形表示的两个甚至多个出口判 断 4、多条流线相交的汇合点
1. 程序的控制流图
设计测试用例
Logo
• 根据上一步得出的独立路径,涉及测试用例, 如下: 输入数据 预期输出 TC1 TC2 irecordnum=0 itype=0 irecordnum=1 itype=0 irecordnum=1 itype=1 irecordnum=1 itype=2 x=0 y=0 x=0 y=0 x=10 y=0 x=0 y=20
Logo
X=X/A
2
3
( a ) 流程图
1
A>1
B=0
2
X=X/A
4 (d ) 流程图 c 对应的流图
3
( c ) 详细流程图
1. 程序的控制流图
Logo
1. 程序的控制流图
Logo
2. 程序环路复杂性
Logo
• 环路复杂性即McCabe复杂性度量,在 进行程序的基本路径测试时,从程序 的环路复杂性可导出程序基本路径集 合中的独立路径条数。
• 程序的环路复杂性给出了程序基本 路径集中的独立路径条数,这是确 保程序中每个可执行语句至少执行 一次所必需的测试用例数目的上界。
白盒测试及用例的设计

条件覆盖率
详细描述
为了提高条件覆盖率,可以增加 更多的测试用例或优化现有的测 试用例。
04
总结词
高条件覆盖率意味着测试用例对 程序中的条件进行了全面的测试, 但并不能保证所有可能的条件结 果都已覆盖。
01 03
总结词
条件覆盖率是衡量测试用例覆盖 程序中条件语句(如if、while等) 中的条件的程度的指标。
TestNG是Java语言的测试框架,具有灵活的测试用例 管理功能。
详细描述
TestNG支持多种测试类型,如单元测试、集成测试和 端到端测试。它提供了丰富的断言方法和数据驱动测试 ,有助于提高测试效率和代码覆盖率。
案例三:使用Selenium进行白盒测试
总结词
Selenium是一个用于Web应用程序 的自动化测试框架。
边界值分析法
总结词
边界值分析法是一种白盒测试用例设计方法 ,它关注输入域的边界值,通过测试边界值 和附近的值来验证软件的健壮性。
详细描述
边界值分析法主要针对输入域的边界值进行 测试,因为这些值在软件中往往容易出现问 题。通过测试边界值和附近的值,可以有效 地发现软件在处理异常情况时的缺陷和错误 。这种方法有助于提高测试的覆盖率,确保
详细描述
Selenium支持多种浏览器和操作系统, 能够模拟用户操作,如点击、输入等。 通过编写测试脚本,可以实现对Web 应用程序的全面白盒测试,确保功能 和用户体验的正确性。
感谢您的观看
THANKS
缺陷跟踪与修复
缺陷管理
对发现的问题进行跟踪管理,确保问题得到及时修复。
缺陷验证
对修复的问题进行验证,确保问题已被正确修复。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
锦 城
错误:
学 院
➢ 穷举路径测试无法检查出程序本身是否违反了设计规 软
范,即程序是否是一个错误的程序。
件 测
➢ 穷举路径测试不可能查出程序因为遗漏路径而出错。 试
➢ 穷举路径测试发现不了一些与数据相关的错误。
• 采用白盒测试方法必须遵循以下几条原
则: 四
➢保证一个模块中的所有独立路径至少被测试
川 大
➢ 给定控制流图G的环形复杂度—V(G),也可定义为
V(G) = P+1
其中,P是控制流图G中判定节点的数量。
环形复杂度:
5
V(G) = E-N+2 => V(G) = 10-8+2=4
or
V(G) = P+1 => V(G) = 3+1=4
7
8
9
导出独立路径集:
路径1:5-15 (iRecordNum=0)
• 图矩阵是一个方形矩阵,其维数等于控制流图
四 川
的节点数。矩阵中的每列和每行都对应于标识
大 学
的节点,矩阵元素对应于节点间的边。
锦 城
• 通常,控制流图中的结点用数字标识,边则用
学 院
字母标识。如果在控制流图中从第 i 个结点到第 软
j 个结点有一个标识为 x 的边相连接,则在对应
件 测
图矩阵的第 i 行第 j 列有一个非空的元素 x 。
11
13
路径2:5-7-8-14-5-15
(iRecordNum≥0,iType=0)
14
路径3:5-7-9-11-14-5-15
15
(iRecordNum≥0,iType=1)
路径4:5-7-9-13-14-5-15
(iRecordNum≥0,iType≠0,iType≠1)
4.2.3 图矩阵
• 图矩阵是控制流图的矩阵表示形式。
白盒测试也称结构测试或逻辑驱动测试,是针对被测 学 单元内部是如何进行工作的测试。它根据程序的控制 院
结构设计测试用例,主要用于软件或程序验证。
软
件
测
试
4.1 白盒测试方法
• 为什么要进行白盒测试?
四
假设此时开发工作已结束,程 川
序送交到测试组,没有人知道代码
大 学
中有一个潜在的被 0 除的错误。若
学 锦
径数量;确保所有语句至少执行一次的测试数量 城
学
的上界。
院
➢ 独立路径是指程序中至少引入了一个新的处理语句集
软 件
合或一个新条件的程序通路。采用流图的术语,即独 测
立路径必须至少包含一条在本次定义路径之前不曾用 试
过的边。
• 测试可以被设计为基本路径集的执行过程,但基 本路径集通常并不唯一。
计算环形复杂度的方法
7
8
9
11
13
14 15
图4-1 控制流图
1a
1b
2
4
5
四
川
大
学
锦
城
学
2
院
软 件 测 试
图4-2 复合条件的控制流图
4.2.2 环形复杂度
• 环形复杂度也称为圈复杂度,它是一种为程序逻
辑复杂度提供定量尺度的软件度量。
四
• 环形复杂度的应用——可以将环形复杂度用于基
川 大
本路径方法,它可以提供:程序基本集的独立路
• 环形复杂度以图论为基础,为我们提供了非常有
用的软件度量。可用如下三种方法之一来计算环 四
形复杂度:
川 大
➢ 控制流图中区域的数量对应于环形复杂度。
学 锦
➢ 给定控制流图G的环形复杂度—V(G),定义为
城 学
V(G) = E-N+2
院
其中,E是控制流图中边的数量,N是控制流图中的
软 件
节点数量。
测 试
锦 城
学
➢基本路径测试方法
院
软
➢程序插桩
件 测
试
4.2 程序结构分析
4.2.1 控制流图
四 川
大
学
4.2.2 环形复杂度
锦 城 学
院
4.2.3 图矩阵
软 件
测
试
4.2.1 控制流图
• 控制流图(可简称流图)是对程序流程图进行简
化后得到的,它可以更加突出的表示程序控制流 四
的结构。
川 大
• 控制流图中包括两种图形符号:节点和控制流线。学锦
锦 城
测试组采用的测试用例的执行路径 学
没有同时经过x=0和y=5/x进行测试 院
,显然测试工作似乎非常完善,测
软 件
试用例覆盖了所有执行语句,也没 测
有被 0 除的错误发生。
试
• 白盒测试法检查程序内部逻辑结构,对所
有逻辑路径进行测试,是一种穷举路径的 四
测试方法。
川 大
学
• 即使每条路径都测试过了,仍然可能存在
学
• 学习掌握白盒测试的基本路径测试法
院
实践环节
软 件
• 通过案例运用学习掌握覆盖问题的解决方法
测 试
• 运用基本路径测试方法进行实际程序测试
白盒测试是把测试对象看做一个透明的盒子,它允许
测试人员利用程序内部的逻辑结构及有关信息,设计
或选择测试用例,对程序所有逻辑路径进行测试。
四
川 大 学 锦 城
一次。
学 锦
➢所有逻辑值均需测试真 (true) 和假 (false)
城 学
两种情况。
院
软
➢检查程序的内部数据结构,保证其结构的有 件
效性。
测 试
➢在上下边界及可操作范围内运行所有循环。
• 白盒测试主要是检查程序的内部结构、逻
辑、循环和路径。常用测试用例设计方法 四
有:
川 大
学
➢逻辑覆盖法(逻辑驱动测试)
试
b
5
a
j
c 7e
8
d
15
9
f
h
11
13
g
i
14
表4-1 图矩阵
节1 2 3 4 5 6 7 8 点 (5) (7) (8) (9) (11) (13) (14) (15)
1
a
b
(5)
2
ce
(7)
3
d
(8)
4
fh
(9)
5
g
(11)
6
i
(13)
7
j
(14)
8
(15)
习题
• 根据左图给出的程序流程图,四
c
完成以下要求:
川 大
(1)画出相应的控制流图。
学 锦
(2)计算环形复杂度。
城 学
院
(3)给出相应的图矩阵。
软
(4)找出程序的独立路径集合。件
测
试
4.3 覆盖测试
4.3.1 测试覆盖率
四 川
大
学
4.3.2 逻辑覆盖法
锦 城
学
4.3.3 面向对象的覆盖
院
软
件
4.3.4 测试覆盖准则
测 试
4.3.1 测试覆盖率
城
➢ 节点由带标号的圆圈表示,可代表一个或多个语句、 学
一个处理框序列和一个条件判定框(假设不包含复合 院
条件)。
软Байду номын сангаас件
➢ 控制流线由带箭头的弧或线表示,可称为边。它代表
测 试
程序中的控制流。
常见结构的控制流图
• 对于复合条件,则可将其分解为多个单个条件,并
映射成控制流图。
具有复合条件的控制流图
5
第4章 白盒测试及其用例的设计
4.1 白盒测试方法
四
川
4.2 程序结构分析
大 学
锦
4.3 覆盖测试
城 学
院
4.4 路径测试
软
件
4.5 其他白盒测试方法
测 试
4.6 程序插桩
本章教学目标
理论环节
四
• 学习理解白盒测试方法的基本概念
川
大
• 学习理解白盒测试的覆盖理论
学
锦
• 学习掌握白盒测试的路径表达
城