软件测试实用教程第五章 白盒测试
【软件测试】白盒测试
编号
abc
执行路径
1
1 0 1 ABD
F,F
2
2 1 1 ABE
F,T
3
3 0 1 ACD
T,F
4
2 0 3 ACE
T,T
备注(路径组合)
优点: 路径覆盖是经常要用到的测试覆盖方法,它比普通的判定覆盖准则和条件覆盖准则覆盖率都要高。
缺点: 路径覆盖不一定能保证条件的所有组合都覆盖。由于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需 要设计大量、复杂的测试用例,使得工作量呈指数级增长。
主要包含六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
覆盖测试用例表:
编号
……
执行路径
备注
注意:设计测试用例时,最好把已经覆盖的条件划掉,以免重复或遗漏,直到所有条件都被划掉。
例子
以下是一个程序段:
if((a>1)&&(b=0)) c = c/a;
if((a=2)||(c>1)) c = c+1;
您使用的浏览器不受支持建议使用新版浏览器
【软件测试】白盒测试
白盒测试:通过检测软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实 际运行状态与预期状态是否一致。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进 行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻 辑测试、基路测试等,主要用于软件内部结构的验证。
注意:为了解决这个难题,只有把覆盖路径压缩到一定的限度内,如 程序中的循环体只执行一次。 在实际测试中,即使对于数目很有限的程序已经做到路径覆盖,仍然不能保证被测程序的正确性,还需要采取其他测试方法进行补 充。
白盒测试功能测试
白盒测试功能测试1. 介绍白盒测试是软件测试中的一种重要测试方法,旨在检查软件的内部结构和代码逻辑。
而在白盒测试中,功能测试则是其中的一个重要部分。
功能测试是验证软件系统的功能是否按照需求规格书中的描述正常工作的过程。
在本文中,我们将专注于讨论白盒测试中的功能测试。
2. 功能测试的定义功能测试是一种黑盒测试方法,可确保软件在用户操作下的正常工作。
在进行功能测试时,测试人员会根据需求规格书中的功能描述,校验软件是否符合预期的功能特性。
功能测试依赖于需求文档和用户场景,通过模拟用户操作来验证软件的功能。
3. 白盒测试中的功能测试流程在白盒测试中,功能测试主要包括以下几个步骤:•制定测试计划:确定测试的范围、测试的重点以及测试的时间安排。
•设计测试用例:根据功能需求书设计测试用例,覆盖主要的功能路径以及边界条件。
•执行测试用例:按照设计的测试用例逐一执行测试,记录测试结果和发现的问题。
•缺陷跟踪和修复:将测试中发现的问题记录在缺陷跟踪系统中,并协助开发人员修复问题。
•测试报告编写:整理测试过程中的执行结果和问题汇总,编写测试报告。
4. 功能测试的目标功能测试的主要目标是验证软件的功能是否正确实现,包括以下几个方面:•功能完整性:确保软件的功能完全实现,不缺失任何功能。
•功能正确性:验证软件的功能按照需求规格书中的描述正确执行。
•边界条件处理:测试软件在各种边界条件下的处理能力。
•用户友好性:验证软件的用户界面是否友好并易于操作。
•性能:对功能进行性能测试,确保软件在一定负载下稳定运行。
5. 功能测试的优势功能测试在白盒测试中具有以下几个优势:•覆盖面广:功能测试能够覆盖软件的主要功能,在用户角度上进行验证。
•易于理解:功能测试基于需求文档进行设计,易于理解和执行。
•发现问题及时:通过功能测试能够及时发现软件的功能问题,提高软件质量。
6. 总结在白盒测试中,功能测试是一个非常重要的测试环节,通过对软件功能的验证,可以确保软件的功能实现正确且完整。
软件测试_白盒测试
12
控制流图中节点合并
有的时候,我 们可以把几个 节点合并成一 个, 合并的原则: 若在一个节点 序列中没有分 支,则我们可 以把这个序列 的节点都合并 成一个节点。
4 5 6 9
10 12 13 21 15 17 19 20 22 23
22 23 20
7
8
4
9
11
10 12 13
11
14 16 18
Dim a,b As Integer Dim c As Double If (a>0 And b>0) Then c=c/a End if If (a>1 or c>1) Then c=c+1 End if c=b+c
a>0 and b>0 N a>1 or c>1 N c=b+c
Y
c=c/a
Y
c=c+1
21 15
14 16 17 19 18
13
逻辑覆盖法
覆盖测试,是利用程序的逻辑结构设计相应 的测试用例。测试人员要深入了解被测程序 的逻辑结构特点,完全掌握源代码的流程, 才能设计出恰当的用例。 白盒测试中的逻辑覆盖方法有以下6种:
语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖
28
4.判定-条件覆盖
基本思想是:设计足够的测试用例,使得 判断条件中的所有条件可能至少执行一次 取值,同时,所有判断的可能结果至少执 行一次。
29
1
4.判定-条件覆盖……续1
按照判定-条件覆盖 的要求,我们设计的 测试用例要满足如下 条件: 1. 所有条件可能至少执 行一次取值; 2. 所有判断的可能结果 至少执行一次。
软件测试教学PPT-白盒测试
基本路径法
基本路径测试法适用于模块地详细设计 与源程序。其步骤如下:
以详细设计或源代码为基本,导出程序 地控制流图;
计算得出控制流图G地环路复杂度V(G); 确定线性无关地路径地基本集; 生成测试用例,确保基本路径集中每条
路径地执行。
基本路径法
对于下面地程序,假设输入地取值范围是 1000<year<2001,使用基本路径测试法为变量 year设计测试用例,使满足基本路径覆盖地要 求。
基本路径法
根据源代码绘制程序地控制流图如下
基本路径法
通过控制流图,计算环路复杂度V(G)=区域数=4。 线形无关地路径集为: 1-3-8 1-2-5-8 1-2-4-7-8 1-2-4-6-8 设计测试用例: 路径1:输入数据:year=1999 预期结果:leap=0 路径2:输入数据:year=1996 预期结果:leap=1 路径3:输入数据:year=1800 预期结果:leap=0 路径4:输入数据:year=1600 预期结果:leap=1
从覆盖源程序语句地详尽程度,可以分为 语句覆盖 判定覆盖 条件覆盖 条件判定覆盖 条件组合覆盖 路径覆盖
逻辑覆盖法
语句覆盖 指地是代码中所有地语句都至少执行一
遍 虽然覆盖了可执行语句,但是不能检查
判断逻辑是否有问题 是很不充分地一种测试,是最弱地逻辑
覆盖准则 测试覆盖率工具:如
The End
白盒测试方法选择
选择白盒测试方法地几条经验: 在测试中,可采取先静态再动态地组合方式,先进
行代码检查与静态结构分析,再进行覆盖测试; 利用静态分析地结果作为引导,通过代码检查与
动态测试地方式对静态分析地结果做进一步确认; 覆盖测试是白盒测试地重点,一般可使用基本路
白盒测试ppt课件
控制流图: 为了更加突出控 制流的结构,需 要对程序流程图 做些简化,这种 简化了的流程图 称为控制流图。
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:白盒测试
掌握静态白盒测试方法及一般要求
掌握白盒测试用例的设计方法
掌握白盒测试基本测试方法:逻辑覆盖、路径测试。
语句覆盖输入数据路径预期输出1A=2,B=5,C=3,1239不能构成三角形2A=15,B=15,C=1512459等边三角形3A=15,B=15,C=13124679等腰三角形4A=23,B=24,C=25124689一般三角形
判定覆盖输入数据路径预期输出1A=2,B=3,C=5,1239不能构成三角形
语句覆
盖
编号输入数据覆盖语句
1array[8,9,10,11] key 101,2,3,8
2array[8,9,10,11] key 251,2,3,9
3array[8,9,10,11] key 81,2,3,6,7
4array[8,9,10,11] key 91,2,3,4,5
判定覆
盖
编号输入数据路径
1array[8,9,10,11] key 101-2-3-4-5-6-8-
2array[8,9,10,11] key 251-2-3-4-5-6-8--10-11-4-12
果
果
果
缺席:扣10分实验报告雷同:扣10分实验结果填写不完整:扣1 – 10分
其他情况:扣分<=5分总扣分不能大于10分。
软件测试实用教程第五章 白盒测试
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
T3
a F b
(age>25)(sex=M)
T c
comm=comm+150
4个测试用例覆盖了所有的 条件组合,同时也覆盖了4 个分支.
F d
(age>=50)(comm>2000.0)
end if if (age>=50 OR (commission >2000.0)) then commission = commission -200; endif
3个变量为:年龄age 、性别sex、佣金commission
语句覆盖
a、b、c、d和e为控制流上程序点。
a F b
(age>25)(sex=M)
第五章 白盒测试
概述 逻辑覆盖法 路径分析 数据流测试 程序插桩技术
白盒测试只测试软件产品的内部结构和处理过 程,而不测试软件产品的功能,用于纠正软件系 统在描述、表示和规格上的错误,是进一步测试 的前提。白盒子测试分静态和动态两种:静态白 盒测试是在不执行的条件下有条理地仔细审查软 件设计、体系结构和代码,从而找出软件缺陷的 过程,有时也称为结构分析。动态白盒测试也称
(age>=50)(comm>2000.0)
T e
comm=comm-200
判定覆盖比语句覆盖 更强一些。
图5-2 被测程序段流程图
只作到判定覆盖仍无法确定判断内部条件的错误。
a F b
(age>25)(sex=M)
T c
comm=comm+150
软件测试 白盒测试及其用例的设计PPT学习教案
组合覆盖
组合覆盖的目的是要使设计的测试用例能覆盖每一个判定 的所有可能的条件取值组合。
对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
软件测试——-白盒测试
南京信息工程大学实验(实习)报告实验二白盒测试(一)实验目的理解白盒测试的基本方法,掌握语句覆盖、分支覆盖、条件覆盖、路径覆盖等代码覆盖测试策略,并能应用白盒测试技术设计测试用例。
(二)实验内容使用逻辑覆盖测试方法测试以下程序段(必做)void DoWork (int x,int y,int z){1 int k=0, j=0;2 if ( (x>3)&&(z<10) )3 {4 k=x*y-1;5 j=sqrt(k);6 }7 if((x==4)||(y>5))8 j=x*y+10;9 j=j%3;10 }说明:程序段中每行开头的数字(1~10)是对每条语句的编号。
(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
(三)实验步骤题目一:使用逻辑覆盖测试方法测试以下程序段(必做)1、绘制出程序流程图,如图1;2、绘制控制流图3、设计测试用例:(1)语句覆盖:语句覆盖是设计足够的测试用例使程序中的每一条可执行语句至少执行一次。
这题中,两个if语句的判定之后,只要确保使两个判定都为真,那么所有的执行语句就都可以执行了,即可达到语句覆盖的要求。
所以设计的测试用例如下:x = 4 , y = 6 , z =8。
这组测试用例的执行路径是1—2—3—4—5—6—7—8—9—10(2)判定覆盖:判定覆盖要求程序中每个判断的取真分支和取假分支至少经历一次。
这题中,有两个判定语句,至少需要设计两组测试用例,才能分别覆盖两个if语句的真分支和假分支。
所以设计的测试用例如下:用例1:x =4 , y = 6 , z = 8 ,其执行路径是1—2—3—4—5—6—7—8—9—10 ;用例2:x =3 , y = 5 , z = 8 ,其执行路径是1—2—3—6—7—9—10。
什么是白盒测试,有哪些覆盖标准
什么是白盒测试,有哪些覆盖标准白盒测试是一种软件测试方法,它着重于内部结构和代码的测试。
在进行白盒测试时,测试人员需要了解软件系统的内部工作原理和逻辑。
白盒测试也被称为结构测试或逻辑驱动测试,通常由开发人员或专业测试人员执行。
白盒测试旨在确保软件的内部逻辑正确,代码覆盖全面,以便降低系统中的潜在缺陷和错误。
在进行白盒测试时,测试人员会使用各种技术和工具来检查软件系统的源代码、算法、数据结构等内部组成部分。
白盒测试通常包括静态分析、代码审查、单元测试、集成测试和系统测试等阶段。
白盒测试的覆盖标准主要包括以下几种:1. 语句覆盖(Statement Coverage):确保每个源代码文件中的每个语句都被至少执行一次。
这是最基本的覆盖标准,通过它可以检查测试用例是否覆盖了所有代码路径。
2. 判定覆盖(Decision Coverage):确保每个判定语句的两个可能结果(真和假)都至少被覆盖一次。
这可以帮助检测条件语句中可能存在的逻辑错误。
3. 条件覆盖(Condition Coverage):确保每个条件表达式的每个可能取值都被覆盖到。
这可以帮助发现条件表达式中的边界条件和潜在错误。
4. 判定/条件覆盖(Decision/Condition Coverage):结合了判定覆盖和条件覆盖,确保每个判定语句和每个条件表达式的所有可能组合都被覆盖到。
5. 路径覆盖(Path Coverage):确保每个可能存在的执行路径都被覆盖到。
这是最严格的覆盖标准,可以查找到系统中所有的潜在问题。
除了上述覆盖标准之外,白盒测试还可以结合其他技术,如数据流分析、控制流分析等,来提高测试的有效性和覆盖范围。
通过合理设计测试用例和执行白盒测试,可以帮助发现和修复软件系统中的潜在缺陷,提高系统的质量和可靠性。
《白盒测试法》课件
优点
代码覆盖率高
白盒测试法能够深入到代码的 逻辑结构中,对代码进行详细 的覆盖,从而确保测试的全面
性。
测试质量高
由于白盒测试法能够深入了解 代码逻辑,因此能够发现更深 层次的代码错误和缺陷,提高 测试质量。
可针对需求定制
白盒测试法可以根据具体的软 件需求和设计进行定制化的测 试,从而更好地满足测试需求 。
04
白盒测试法的工具
JUnit
JUnit是一个Java语言的单元测试框架,用于编写和执行测试用例,验证代码的正确 性和可靠性。
JUnit提供了一系列的注解和断言方法,方便开发者编写测试代码,并且支持测试套 件和测试运行器的概念,可以方便地组织和管理多个测试用例。
JUnit还支持参数化测试和测试模板,提高了测试的灵活性和可维护性。
02
白盒测试法通常在软件开发过程 中,特别是在编码阶段进行,以 便在早期发现和修复潜在的错误 和缺陷。
白盒测试法的目的
01
02
03
验证代码的正确性
白盒测试法通过检查代码 的逻辑和结构,验证代码 是否符合设计要求,是否 能够正确实现功能。
提高代码质量
通过白盒测试,可以发现 代码中的缺陷和错误,并 及时修复,从而提高代码 的质量和稳定性。
《白盒测试法》ppt课件
目 录
• 白盒测试法简介 • 白盒测试法的主要技术 • 白盒测试法的实施步骤 • 白盒测试法的工具 • 白盒测试法的优缺点 • 白盒测试法的案例分析
01
白盒测试法简介
白盒测试法的定义
01
白盒测试法是一种软件测试方法 ,它要求测试人员对被测软件的 内部结构和工作原理有深入的了 解。
测试到。
循环覆盖
[计算机软件及应用]软件测试-白盒测试
教学目标:
了解白盒测试的定义 掌握白盒测试的常用方法
h
1
教学重点:
白盒测试的覆盖测试法和路径测试法
教学难点:
白盒测试案例应用
教学方法:多媒体
教学课时:6课时
白盒测试
什么是白盒测试 白盒测试的常用方法 白盒测试案例运用
h
3
一、什么是白盒测试
1、白盒测试的定义
白盒测试(White-box Testing)也称作结 构测试或逻辑驱动测试,它是知道产品的 内部工作过程,可通过测试来检测产品内 部动作是否按照规格说明书的规定正常进 行。按照程序内部的结构测试程序,检验 程序中的每条通路是否都能按预定要求正 确工作,而不顾它的功能。
h
14
二、白盒测试的常用方法
1、覆盖率测试
图3-3 示例程序流程图及流图
h
15
二、白盒测试的常用方法
2、语句覆盖
语句覆盖(Statement Coverage)是指设计若干个测试 用例,程序运行时每个可执行语句至少被执行一次。在 保证完成要求的情况下,测试用例的数目越少越好。
以下是针对公共程序段设计的测试用例:
根据上述分析可知,语句覆盖测试只是表面上的覆盖程
序流程,没有针对源程序各个语句间的内在关系,设计
更为细致的测试用例。
h
17
二、白盒测试的常用方法
3、判断覆盖
判断覆盖(Branch Coverage)是指设计若干个测试用例, 执行被测试程序时,程序中每个判断条件的真值分支和假值 分支至少被执行一遍。在保证完成要求的情况下,测试用例 的数目越少越好。判断覆盖又称为分支覆盖。
简化后的控制流图是由节点和控制边组成的。
h
《软件白盒测试》课件
03 白盒测试的常用技术
代码覆盖技术
添加项标题
语句覆盖:确保每个语句都被执行至少一次
添加项标题
判定覆盖:确保每个判定(if、else、switch等)都被执行至少一次
添加项标题
条件覆盖:确保每个判定中的每个条件都被执行至少一次
添加项标题
路径覆盖:确保程序中的每个路径都被执行至少一次
添加项标题
循环覆盖:确保每个循环都被执行至少一次,包括循环体和循环条件
软件白盒测试
,
汇报人:
目录 /目录
01
点击此处添加 目录标题
04
白盒测试的实 践过程
02
软件白盒测试 概述
05
白盒测试的优 缺点
03
白盒测试的常 用技术
06
白盒测试工具 介绍
01 添加章节标题
02 软件白盒测试概述
定义和概念
软件白盒测试: 一种软件测试方 法,通过分析程 序的内部结构和 逻辑,验证程序 的正确性和完整 性。
感谢您的观看
汇报人:
添加项标题
数据流覆盖:确保程序中的数据流都被执行至少一次,包括输入、输出和内部数据流
路径覆盖技术
定义:通过执行所有可能的路径来测试软件 优点:能够全面覆盖软件的所有路径,提高测试覆盖率 缺点:需要大量的测试数据,可能导致测试时间过长 应用场景:适用于逻辑复杂的软件系统,如操作系统、数据库管理系统等
析和改进
测试用例设计
确定测试目标:明确测试的目的和范 围
设计测试用例:根据测试目标设计测 试用例
执行测试用例:按照测试用例执行测 试
记录测试结果:记录测试过程中的异 常情况和测试结果
分析测试结果:分析测试结果,找出 问题所在
白盒测试PPT课件
-18/XX-
2.判定覆盖
基本思想是:设计若干测试用例,运行被测程序,使得程序中每个 判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满 足。
单击此处编辑母版标题样式
规范 标准 专业 高效
-19/X1X-
2.判定覆盖……续1
¬ a=2,b=1 ,c=6可 覆盖判断M的Y分支 和判断Q的Y分支;
单击此处编辑母版标题样式
规范 标准 专业 高效
-8/XX-
4.1.2静态结构分析
静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调 用关系图、函数内部控制流图。其中,函数调用关系图以直观的图形 方式描述一个应用程序中各个函数的调用和被调用关系;控制流图显 示一个函数的逻辑结构,它由许多节点组成,一个节点代表一条语句 或数条语句,连接结点的叫边,边表示节点间的控制流向。
1.语句覆盖……续2
【优点】 :可以很直观地从源代码得到测试用例,无须细分每条判 定表达式。
【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在的语句 ,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全 面的考虑。语句覆盖是最弱的逻辑覆盖。
单击此处编辑母版标题样式
规范 标准 专业 高效
单击此处编辑母版标题样式
规范 标准 专业 高效
-4/XX-
4.1.1 代码检查
代码检查包括代码走查、代码审查等
单击此处编辑母版标题样式
规范 标准 专业 高效
-5/XX-
代码走查
有组织的代码走查在编码阶段去除错误的成本是在软件发布阶段去除 错误成本的1/92
全部的代码是否都需要走查 最大的问题是劝说开发者要遵循一定的标准
单击3此. 处条编件辑覆盖母版标题样式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序控制流图
结点3到7是一个序列,结点7
3 4 5 6 7 8 10 11 13 14 15 16 图5-1 三角形程序的程序控制流图 12 9
到10是一个if-then-else结构, 结点11到16是一个嵌套的if-
then-else结构。结点3和16是
程序源结点和汇结点,对应 于单入口、单出口准则。该 程序没有循环,因此控制流 图是一个有向非循环图。
程序路径是一个重要的概念,其定义如下: 若G中的结点序列p = < v1, v2, ...vk >,满足对于 所有的j,有 vi j , vi j1 E, 0 j k - i ,则称p为程序的 一条子路经。若v1 v k,则称P为一条回路(环 路)。若子路径p从源结点I 到汇结点O,则称p为 程序的一条路经。
语句覆盖要求设计若干个测试用
T c
comm=comm+150
例,运行被测程序,使程序中的 每个可执行语句至少被执行一次。
这里所谓“若干”,自然是越少越好
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
Test 1: age=50, sex=M, comm=2500
作为测试用例,则程序按路径ace
执行。这样该程序段的4个语句都
图5-2 被测程序段流程图
得到执行,从而作到了语句覆盖。
a F b
(age>25)(sex=M)
T c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
Test 2: age=50, sex=F, comm=2500 程序则按abe执行,没有达到 语句覆盖。
辑覆盖准则。
图5-2 被测程序段流程图
a F b
(age>25)(sex=M)
T c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
假如这一程序段中两个判 断的逻辑运算有问题, 例如,第一个判断的运算 符“” 错成运算符“”或是第二 个判断 中的运算符“”错成了运 算符“” 仍使用上述前一个测试用 例Test 1,程序仍将按路径 ace执行, 但不能发现判断中逻辑运 算的错误。
end if if (age>=50 OR (commission >2000.0)) then commission = commission -200; endif
3个变量为:年龄age 、性别sex、佣金commission
语句覆盖
a、b、c、d和e为控制流上程序点。
a F b
(age>25)(sex=M)
结构化测试,通过查看并使用代码的内部结构,
设计和执行测试。
逻辑覆盖法
程序控制流图是白盒测试的主要依据。对于一个程序,
其程序控制流图G=(V,E,I,O)是一个有向图,其中V是结点
的集合,E是边的集合,I是唯一的源结点(入口结点), 而O是唯一的汇结点(出口结点)。 ● 结点表示语句,以标有编号的圆圈表示。 ● 边表示语句间可能的控制流向
● I, O相应于程序的开始语句和结束语句。
如果i和j是程序控制流图中的结点,从结点i到结
点j存在一条边,当且仅当对应结点j的语句可以在对应结
点i的语句之后立即执行。
三角形问题类C语言实现
/* PROGRAM TRIANGLE */ mian () { 1 int a,b,c; 2 boolean IsTraingle 3 sacnf(“Enter 3 integer which is sides of a triangle. %d%d%d”,a,b,c); 4 printf(“Side a is %d”, a); 5 printf(“Side b is %d”, b); 6 printf(“Side c is %d”,c); 7 if ((a<b+c) AND (b<a+c) AND (c<a+b)) 8 then IsTraingle=True; 9 else IsTraingle=False; 10 if (IsTraingle) 11 then if ((a=b) AND (b=c)) 12 then printf(“Equilateral”) 13 else if (a!=b) AND (a!=c) AND (b!=c) 14 then printf(“Scalene”) 15 else printf(“Isosceles”) 16 else printf(“Not a Triangle”) }
例:P=<3,4,5,6,7,8,10,11,12,16> 是一条程序路经。
程序控制流图的重要性在于,程序的执 行对应于从源结点到汇结点的路径。
检验程序从入口开始,执行过程中经历
的各个语句,直到出口,是白盒测试最为典
型的问题。
ቤተ መጻሕፍቲ ባይዱ
逻辑覆盖
逻辑覆盖是一种使用最广泛的结构测试方法。
逻辑覆盖以程序内部的逻辑结构为基础设计测试
用例,要求对被测程序的逻辑结构有清楚的了解,
甚至要能掌握源程序的所有细节。 由于覆盖测试的目标不同,逻辑覆盖又可分 为:语句覆盖、判定覆盖、条件覆盖、判定/条件 覆盖及路径覆盖。
下面的一小段程序来讨论。
if ((age>25)AND(sex=M)) then
commission = commission +150;
图5-2 被测程序段流程图
a F b
(age>25)(sex=M)
T c
comm=comm+150
从程序中每个语句都得 到执行这一点来看,语 句覆盖的方法似乎能够 比较全面地检验被测
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
程序的每一个语句。
但语句覆盖是很弱的逻
第五章 白盒测试
概述 逻辑覆盖法 路径分析 数据流测试 程序插桩技术
白盒测试只测试软件产品的内部结构和处理过 程,而不测试软件产品的功能,用于纠正软件系 统在描述、表示和规格上的错误,是进一步测试 的前提。白盒子测试分静态和动态两种:静态白 盒测试是在不执行的条件下有条理地仔细审查软 件设计、体系结构和代码,从而找出软件缺陷的 过程,有时也称为结构分析。动态白盒测试也称