第4章(2) 白盒测试方法2-基本路径法
软件白盒测试-基本路径测试
软件白盒测试-基本路径测试基本路径测试也是一种常用的白盒测试用例设计方法。
在实际工作中,即使一个简单的程序,路径数量往往也比较多,要在测试中覆盖所有的路径是不现实的。
而基本路径测试的方法就是一种简化路径数的测试方法,它是在分析程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证程序的每一个可执行语句至少执行一次。
1.1绘制控制流图控制流图是描述程序控制流的一种图示方法。
控制流图是退化的程序流程图,它是把程序流程图中的每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧。
这种图只描述程序内部的控制流程,完全不表现对数据的具体操作以及分支和循环的具体条件。
因此,它往往把一个简单的if语句与循环语句的复杂性看成是一样的,把嵌套的if语句与case语句的复杂性看成是一样的。
程序中的基本控制结构对应的图形符号如图1.1所示。
图1.1控制结构示意图图中的圆圈为控制流图的一个结点,它表示一个或多个无分支的源代码语句。
在绘制控制流图前,一般先画出程序的流程图,再把流程图映射成控制流图。
例如,有下面的函数。
void sort(int iRecordNum,int iType)1 {2 int x=0;3 int y=0;4 while (iRecordNum-- > 0)5 {6 if(0==iType)7 x=y+2;8 else9 if(1==iType)10 x=y+10;11 else12 x=y+20;13 }14 }其流程图如图1.2所示。
把流程图映射成对应的控制流图,如图1.3所示。
图1.2流程图图1.3控制流图映射关系如下。
一组顺序处理框可以映射为一个单一结点。
控制流图中的箭头表示了控制流的方向,类似于流程图中的流线,一条边必须终止于一个结点,但在选择或多分支结构中分支的汇聚处,即使没有可执行语句也应该绘制一个结点。
【转】白盒测试及其基本方法
【转】⽩盒测试及其基本⽅法⼀、⽩盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进⾏,检验程序中的每条通路是否都能按预定要求正确⼯作。
这⼀⽅法是把测试对象看作⼀个打开的盒⼦,测试⼈员依据程序内部逻辑结构相关信息,设计或选择测试⽤例,对程序所有逻辑路径进⾏测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态⼀致。
⼆、概述⽩盒测试⼜称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
⽩盒测试是⼀种测试⽤例的设计⽅法,盒⼦对应的是被测试的测试,"⽩盒"法全⾯了解程序内部逻辑结构、对所有逻辑路径进⾏测试。
"⽩盒"法是穷举路径测试。
测试者必须检查程序的内部结构,从检查程序的逻辑着⼿,得出测试数据。
三、基本⽅法强度由低到⾼:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
(1)语句覆盖:就是设计若⼲个测试⽤例,运⾏被测程序,使得每⼀可执⾏语句⾄少执⾏⼀次。
(2)判定覆盖:使设计的测试⽤例保证程序中每个判断的每个取值分⽀⾄少经历⼀次。
(3)条件覆盖:条件覆盖是指选择⾜够的测试⽤例,使得运⾏这些测试⽤例时,判定中每个条件的所有可能结果⾄少出现⼀次,但未必能覆盖全部分⽀(4)判定条件覆盖:判定-条件覆盖就是设计⾜够的测试⽤例,使得判断中每个条件的所有可能取值⾄少执⾏⼀次,同时每个判断的所有可能判断结果⾄少执⾏,即要求各个判断的所有可能的条件取值组合⾄少执⾏⼀次。
(5)条件组合覆盖:在⽩盒测试法中,选择⾜够的测试⽤例,使所有判定中各条件判断结果的所有组合⾄少出现⼀次,满⾜这种覆盖标准成为条件组合覆盖。
(6)路径覆盖:是每条可能执⾏到的路径⾄少执⾏⼀次。
补充:(1)语句覆盖在所有的测试⽅法中是⼀种最弱的覆盖。
(2)判定覆盖和条件覆盖⽐语句覆盖强,满⾜判定/条件覆盖标准的测试⽤例⼀定也满⾜判定覆盖、条件覆盖和语句覆盖(3)路径覆盖也是⼀种⽐较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。
白盒测试的基本路径测试法
白盒测试的基本路径测试法一、白盒测试的主要测试方法1、代码检查法2、静态结构分析法3、静态质量度量法4、逻辑覆盖法5、基本路径测试法(应用最广泛)6、域测试7、符号测试8、Z路径覆盖9、程序变异二、基本路径测试法1、定义:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
2、基本路径测试法的基本步骤1) 程序的控制流图:描述程序控制流的一种图示方法。
2)程序圈复杂度:McCabe复杂性度量。
从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
3) 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果.4) 准备测试用例:确保基本路径集中的每一条路径的执行.3、基本路径测试法的工具方法1)图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。
三、程序的控制流图控制流程图是描述程序控制流的一种图示方法。
圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句。
流图中的箭头称为边或连接,代表控制流。
任何过程设计都要被翻译成控制流图。
1、根据程序流程图化成控制流图在将程序流程图简化成控制流图时,应注意:1)在选择或多分支结构中,分支的汇聚处应有一个汇聚结点.2)边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
如下页图所示:如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND, NAND,NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。
例如:1 if a or b2 x3 else4 y对应的逻辑为:独立路径:至少沿一条新的边移动的路径2、实例说明基本路径测试法的步骤:第一步:画出控制流图流程图用来描述程序控制结构。
白盒测试的主要方法
二、 基本路径测试
基本路径测试就是在程序控制图的基础 上,通过分析控制构造的环行复杂性,导 出基本可执行路径集合,从而设计测试用 例的方法。设计出的测试用例要保证在测 试中程序的每一个可执行语句至少执行一 次。
基本路径测试-----步骤
1. 导出程序的控制流图
2. 计算程序环路复杂度:确定程序中每个可执
白盒测试的主要方法
语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 路径覆盖 基路径测试 循环测试
逻辑覆盖
路径测试
数据流测试 其他白盒测试方法
一、 逻辑覆盖
• 1、语句覆盖:语句覆盖就是设计若干个测试用 例,运行被测试程序,使得每一条可执行语句 至少执行一次 • 2、判定覆盖(也称为分支覆盖):设计若干个 测试用例,运行所测程序,使程序中每个判断 的取真分支和取假分支至少执行一次;
条件组合覆盖
• 它的含义是:设计足够的例子,使得每个
判定中条件的各种可能组合都至少出现一 次。显然,满足“条件组合覆盖”的测试 用例是一定满足“判定覆盖”、“条件覆 盖”和“判定/条件覆盖”的。
例题1
编号 1 2 3
4 5 6 7 8
具体条件取值 a>1,b=0 a>1,b<>0 a<=1,b=0
① A=3,B=0,X=1 (沿路径acd执行); ② A=2,B=1,X=3(沿路径abe执行)
判定覆盖
A=3,B=0,X=1 (沿路径acd 执行) A=2,B=1,X=3 (沿路径abe 执行)
例题2
判定覆盖
往往大部分的判定语句是由多个逻辑条
件组合而成,若仅仅判断其整个最终结果, 而忽略每个条件的取值情况,必然会遗漏 部分测试路径 。
白盒测试技术(基本路径测试法)
控制流图的组成: 1. 节点:以标有编号的圆圈表示。可代表一个或多个语句、一
个处理框序列和一个条件判定框(假设不包含复合条件)。包 含条件的节点被称为判断节点,分支的汇聚处应该有一个汇 点。, 2. 控制流线或弧:以箭头表示,又称为边。 3. 边和结点圈定的区域叫做区域,当对区域计数时,图形外的 区域也应记为一个区域。
之
1
▪ 1.白盒测试技术概念以及方
法
▪ 2.基本路径测试法
重点
▪ 步骤
▪ 实现
黑盒
X=2
?
y=4
白盒
X=2 y=2x
y=4
白盒测试以源代码为基本对象,是对软件的过 程性细节做细致的检查,允许测试人员利用程序内 部的逻辑结构及有关信息,设计或选择测试用例, 对程序所有逻辑路径进行测试,通过在不同点检查 程序状态,确定实际状态是否与预期的状态一致。
2.计算环路复杂度,又称为圈复杂度
❖ 案例分析
3.列出程序中形成的基本路径集合
路径1:4-14 路径2:4-6-7-14 路径3:4-6-8-10-13-414 路径4:4-6-8-11-13-414
❖ 案例分析
4.推导出可以确保集合中每条独立路径都被执行的 测试用例。
2
1
4
3
分析控制流图:
1. 节点数: 9 2. 判断节点数: 3 3. 边数: 11 4. 区域数: 4
程 序 流 程
控 制 流 图
图
程序的环路复杂性给出了程序基本路径集中的 独立路径条数,这是确保程序中每个可执行语句至 少执行一次所必需的测试用例数目的上界。
程序环路复杂性计算方法(三种):
(1)流图中区域的数量对应于环形复杂度; 4. (2)给定流图G的环形复杂度V(G),定义 为V(G)=E-N+2, E是流图中边的数量, N是流图中节点的数量。 V(G)=11-9+ 2. (3) V(G)=P+1, P是流图G中的判定节 点数。 V(G)=3+1
白盒测试
1
判定覆盖测试用例:
由控制图可以很容易看到,可以只选4 组(所有的边必须覆盖):
第1组:2,5,3(a!=0,mid>0), 执行顺序为: 1,2,3,4,5,10,11,12,13 第2组:1,2,1 (a!=0,mid=0), 执行顺序为: 1,2,3,4,5,6,8,9,11,12,13 第3组 1,2,3,4,5,6,7,9,11,12,13 第4组:0,2,1 (a=0) 执行顺序为: 1,2,3,13
20
2.判定覆盖优缺点
【优点】:判定覆盖具有比语句覆盖更强的 测试能力。同样判定覆盖也具有和语句覆 盖一样的简单性,无须细分每个判定就可 以得到测试用例。 【缺点】:往往大部分的判定语句是由多个 逻辑条件组合而成,若仅仅判断其整个最 终结果,而忽略每个条件的取值情况,必 然会遗漏部分测试路径。判定覆盖仍是弱 的逻辑覆盖。
5
(a)
(b)
在控制流图中只有两种图形符 号,它们是: 1. 节点:以标有编号的圆圈表示 。它代表了程序流程图中矩形 框表示的处理、菱形表示的两 个到多个出口判断以及两条到 多条流线相交的汇合点。 2. 控制流线或弧:以箭头表示。 它与程序流程图中的流线是一 致的,表明了控制的顺序。为 了方便讨论,控制流线通常标 有名字,如图中所标的a、b、 c等。
第1组:2,5,3, 执行顺序为: 1,2,3,4,5,10,11,12,13 第2组:1,2,1 执行顺序为: 1,2,3,4,5,6,8,9,11,12,13 第3组:4,2,1 执行顺序为: 1,2,3,4,5,6,7,9,11,12,13
基本路径法
控制流图
McCabe的导出强连接图
五个线性独立路径
P1:A,B,C,G
基
P2:A,B,C,B,C,G P3:A,B,E,F,G
P4:A,D,E,F,G
第5页/共23P页5:A,D,F,G
圈数计算
•令 • e是G中的边数。 • n是G中的节点数。 • p是G中的连通分量个数。
• 不增加从汇节点到源节点的边 • V(G)=e-n+2p
}
第16页/共23页
10.2.1 白盒测试技术
Step1 根据程序的逻辑结构画出流程图
11
1
2 模块流程图
3
6
4
7
8
5
9
10
第17页/共23页
Step2 根据流程图画出流图
10.2.1 白盒测试技术
流 图 刻 画 了 程 序 的 控 制 结 构 , 但 不 涉 及 程 序 的 过 程 性 细节
• 节点:过程块,结合点,判定点
2. {
3. if ( temp == ">=")
4.
m_oper.Set CurSe l(0);
5. else if (temp == ">")
6.
m_oper.Set CurSe l(1);
7. else if ( temp == "==")
8.
m_oper.Set CurSe l(2);
第10页/共23页
10.2.1 白盒测试技术
第21页/共23页
Step4 对每条基本路径设计测试用例
10.2.1 白盒测试技术
对于路径1 – 11
✓ nPosX 取-1, nPosY取任意值
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
白盒测试法的工具
JUnit
JUnit是一个Java语言的单元测试框架,用于编写和执行测试用例,验证代码的正确 性和可靠性。
JUnit提供了一系列的注解和断言方法,方便开发者编写测试代码,并且支持测试套 件和测试运行器的概念,可以方便地组织和管理多个测试用例。
JUnit还支持参数化测试和测试模板,提高了测试的灵活性和可维护性。
02
白盒测试法通常在软件开发过程 中,特别是在编码阶段进行,以 便在早期发现和修复潜在的错误 和缺陷。
白盒测试法的目的
01
02
03
验证代码的正确性
白盒测试法通过检查代码 的逻辑和结构,验证代码 是否符合设计要求,是否 能够正确实现功能。
提高代码质量
通过白盒测试,可以发现 代码中的缺陷和错误,并 及时修复,从而提高代码 的质量和稳定性。
《白盒测试法》ppt课件
目 录
• 白盒测试法简介 • 白盒测试法的主要技术 • 白盒测试法的实施步骤 • 白盒测试法的工具 • 白盒测试法的优缺点 • 白盒测试法的案例分析
01
白盒测试法简介
白盒测试法的定义
01
白盒测试法是一种软件测试方法 ,它要求测试人员对被测软件的 内部结构和工作原理有深入的了 解。
测试到。
循环覆盖
第08课--白盒测试(2)—路径分析测试(基本路径测试)
上述测试用例覆盖了4个条件产生的8种情况。
3. V(G) = 边的数目-节点的数目 + 2
环复杂度
环复杂度
闭合区域的数目 = 5 二值判定节点个数 + 1 =4+1=5 边的数目-节点的数目 + 2 = 16-13+2=5
基本路径
实用的定义 一条路径是基本路径如果: 1. 是一条从起始节点到终止节点的路径. 2. 至少包含一条其它基本路径没有包含的边. (至 少引入一个新处理语句或一个新判断的程序通 路.) 注意:对于循环而言,基本路径应包含不执行循 环和执行一次循环体。
SWPU
案例分析3
——已知程序代码,根据基本路径测试法, 导出测试用例
SWPU
PROCEDURE averagy; * This procedure computes the averagy of 100 or fewer numbers that liebounding values; it also computes the total input and the total valid. INTERFACE RETURNS averagy, total.input, total.valid; INTERFACE ACCEPTS value, minimum, maximum; TYPE value[1:100] IS SCALAR ARRAY; TYPE averagy, total.input, total.valid, minimum, maximum, sum IS SCALAR; TYPE i IS INTEGER;
使用基本路径设计测试用例方法推导三角形问题的测试用例
软件测试教学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四
基本路径法
1{
2 int x=0;
3 int y=0;
4 while (iRecordNum-- > 0)
5{
6 if(0= =iType)
7 x=y+2;
8 else
9 if(1= =iType)
10
x=y+10;
11 else
12
x=y+20;
13 }
14 printf(“x=%d,y=%d”,x,y);}
If语句
Case语句
包含条件的节点被称为判断节点(也叫谓词节点)
由判断节点发出的边必须终止于某一个节点,由 边和节点所限定的范围被称为区域。
这里我们假定在流程图中用菱形框表示的判定条 件内没有复合条件,而一组顺序处理框可以映射 为一个单一的结点。
控制流图中的箭头(边)表示了控制流的方向, 类似于流程图中的流线,一条边必须终止于一个 结点。
设计测试用例
输入数据
1 iR=0 it=0
2 iR=1 iT=0
3 iR=1 iT=1
4 iR=1 iT=2
预期输出
X=0 Y=0
X=2 Y=0
X=10 Y=0
X=20 Y=0
3、图矩阵
图矩阵-即流图的矩阵表示。其维数等于流图的节点数。 每列和每行都对应于标识的节点,矩阵元素对应于节点 的边。
1011131410111314流程图控制流图将程序流程图转化为控制流图101111三角形问题流程图流图开始输入abc一般等边等腰1011如果判定中的条件表达式是复合条件即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式则需要改变复合条件的判断为一系列只有单个条件的嵌套的判断
白盒测试-基本路径
基本路径测试的思想
白盒测试测试方法详解
白盒测试white-box testing1测试概述白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
在动态分析技术中,最重要的技术是路径和分支测试。
下面要介绍的六种覆盖测试方法属于动态分析方法。
测试方法白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
要求1.保证一个模块中的所有独立路径至少被使用一次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运行所有循环;4.检查内部数据结构以确保其有效性。
白盒测试方法习题及答案
[试题分类]: [04]白盒测试方法/[0400][综合]白盒测试方法1. 下面不属于白盒测试能保证的是。
A.模块中所有独立途径至少测试一次B.测试所以逻辑决策真和假两个方面C.在所有循环的边界内部和边界上执行循环体D.不正确或漏掉的功能答案:D分数:1题型:单选题难度:12.因果图方法是根据()之间的因果关系来设计测试用例的。
A.输入与输出B.设计与实现C.条件与结果D.主程序与子程序答案:A分数:1题型:单选题难度:13.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。
A.程序的内部逻辑B.程序的复杂程度C.使用说明书D.程序的功能答案:A分数:1题型:单选题难度:14.软件测试中常用的静态分析方法是()和接口分析。
A.引用分析B.算法分析C.可靠性分析D.效率分析答案:A分数:1题型:单选题难度:15.软件测试中常用的静态分析方法是引用分析和()。
A.引用分析B.算法分析C.可靠性分析D.接口分析答案:D分数:1题型:单选题难度:16.白盒方法中常用的方法是()方法。
A.路径测试B.等价类C.因果图D.归纳测试答案:A分数:1题型:单选题7.在软件工程中,白箱测试法可用于测试程序的内部结构。
此方法将程序看作是()A.路径的集合B.循环的集合C.目标的集合D.地址的集合答案:A分数:1题型:单选题难度:18.软件测试白箱测试是对软件的结构进行测试,下述:Ⅰ.边缘值分析Ⅱ.语句测试Ⅲ.分值测试Ⅳ.路经测试()是其应包括的内容。
A.ⅠB.Ⅱ和ⅢC.Ⅲ和ⅣD.Ⅱ.Ⅲ和Ⅳ答案:D分数:1题型:单选题难度:19.在进行单元测试时,常用的方法是()。
A.采用白盒测试,辅之以黑盒测试B.采用黑盒测试,辅之以白盒测试C.只适用白盒测试D.只适用黑盒测试答案:A分数:1题型:单选题难度:110.白盒测试法一般使用于()测试。
A.单元B.系统C.集成D.确认答案:A分数:1题型:单选题难度:1[试题分类]: [04]白盒测试方法/[0401]逻辑覆盖法11.关于条件测试错误的是()A.可以检查程序中所包含的逻辑条件B.条件中包含的错误有布尔算子错误C.条件中包含的错误有布尔变量错误D.条件中包含的错误有接口错误答案:D分数:1题型:单选题难度:112.关于条件中包含的错误类型说法错误的是()A.关系算子错误B.算术表达式错误C.条件中包含的错误有布尔变量错误D.条件中包含的错误有接口错误分数:1题型:单选题难度:113.语句覆盖.判定覆盖.条件覆盖和路径覆盖都是白盒测试法设计测试用例的覆盖准则,在这些覆盖准则中最弱的准则是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制流图
Logo
• 程序流程图又称框图,是我们最熟悉,也 是最容易理解的一种程序控制结构的图形 表示了。在这种图上的框里面常常标明了 处理要求或者条件,但是,这些标注在做 路径分析时是不重要的。为了更加突出控 制流的结构,需要对程序流程图做一些简 化。
1. 程序的控制流图
1
a
Logo
1
2
2 4 5 3
f b
c
3
d
4
e
5
• 在控制流图中只 有两种图形符号, 它们是: 1. 节点:以标有编 号的圆圈表示。 2. 控制流线或弧: 以箭头表示。
1. 程序的控制流图
Logo
节点
1、标有编号的圆圈 2、程序流程图中矩形框所表 示的处理 3、菱形表示的两个甚至多个 出口判断 4、多条流线相交的汇合点
1. 程序的控制流图
基本路径测试
• 基本路径测试法的步骤:
Logo
(1)以详细或源代码作为基础,导出程序 的控制流图。 (2)计算得到控制流图G的环路复杂度 V(G) (3)确定基本路径集,生成测试用例,确 保基本路径集中每条路径的执行。
程序段的流图
4
Logo
6 7 9
10 14 13
12
计算其环形复杂度
• 环形复杂度为:
图中的圈复杂度, 计算如下:
Logo
流图中有四 个区域; V(G)=10条边 -8结点+2=4; V(G)=3个判 定结点+1=4。
3. 导出测试用例
Logo
• 导出测试用例,确保基本路径集中 的每一条路径的执行。 • 根据判断结点给出的条件,选择适 当的数据以保证某一条路径可以被 测试到 — 用逻辑覆盖方法。
• 程序的环路复杂性给出了程序基本 路径集中的独立路径条数,这是确 保程序中每个可执行语句至少执行 一次所必需的测试用例数目的上界。
2. 程序环路复杂性
Logo
• 独立路径:指包括一组以前没有处理 的语句或条件的一条路径。
• 从控制流图来看,一条独立路径是 至少包含有一条在其它独立路径中 从未有过的边的路径。
3. 导出测试用例
Logo
• 每个测试用例执行之后,与预期结果 进行比较。如果所有测试用例都执行 完毕,则可以确信程序中所有的可执 行语句至少被执行了一次。 • 必须注意,一些独立的路径,往往不 是完全孤立的,有时它是程序正常的 控制流的一部分,这时,这些路径的 测试可以是另一条路径测试的一部分。
基本路径测试
Logo
• 在不能做到所有路径覆盖的前提下, 如果某一程序的每一个独立路径都 被测试过,那么可以认为程序中的 每个语句都已经检验过了,即达到 了语句覆盖。这种测试方法就是通 常所说的基本路径测试法。
基本路径测试
Logo
• 基本路径测试方法是在控制流图的基 础上,通过分析控制结构的环形复杂 度,导出执行路径的基本集,再从该 基本集设计测试用例。基本路径测试 方法包括4个步骤:
软件测试
第4章
白盒测试方法 ——基本路径法
目 录
1 2 3 4 5 6 基本路径法的思想 控制流图 环形复杂度(环路复杂性) 独立路径 基本路径测试步骤 实例应用
Logo
课堂测试
Logo
• 写出逻辑覆盖测试包含的六种 基本类型,并写出它们的基本 测试要求。 例: 1、语句覆盖:使程序中的***语 句至少测试一次。
练习题
Logo
• 根据左图给出的程序流程 图,完成以下要求:
(1)画出相应的控制流 图。
(2)计算环形复杂度。
(3)给出相应的图矩阵。 (4)找出程序的独立 路径集合。
• 一条路径这里指一条“程序通路”。
2. 程序环路复杂性
思考:根据独立 路径的定义,在 图示的控制流图 中,有哪些独立 的路径?
Logo
2. 程序环路复杂性
Logo
• path1:1 - 11 path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11 path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11 path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11 • 路径 path1,path2,path3,path4组 成了控制流图的一个基本路径集。
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复杂性度量,在 进行程序的基本路径测试时,从程序 的环路复杂性可导出程序基本路径集 合中的独立路径条数。
1. 程序的控制流图
Logo
1. 程序的控制流图
Logo
区域
Logo
1. 程序的控制流图
Logo
• 复合条件的控制流图 如果判断中的条件表达式是由一 个或多个逻辑运算符 (OR, AND, ...) 连接的复合条件表达式,则 需改为 一系列只有单个条件的嵌 套的判断。
1
A>1 AND B =0
基本路径测试
(1)画出程序的控制流图。
Logo
(2)计算程序的环形复杂度,导出程序 基本路径集中的独立路径条数,这是 确定程序中每个可执行语句至少执行 一次所必须的测试用例数目的上界。
基本路径测试
Logo
(3)导出基本路径集,确定程序的独立 路径。
(4)根据(3)中的独立路径,设计测试 用例的输入数据和预期输出。
2. 程序环路复杂性
• 程序环路复杂性计算方法(三种):
Logo
• (1)流图中区域的数量对应于环形 复杂度 • (2)给定流图G的环形复杂度V(G), 定义为V(G)=E-N+2, E是流图中边 的数量,N是流图中节点的数量。 • (3) V(G)=P+1, P是流图G中的判 定节点数。
2. 程序环路复杂性
B. 基本路径测试
Logo
本次课将会接触到的新知识:
1.控制流图
2.环形复杂度
3.独立路径
基本路径测试
Logo
• 路径测试就是从一个程序的入口开始, 执行所经历的各个语句的完整过程。 从广义的角度讲,任何有关路径分析 的测试都可以被称为路径测试。
• 完成路径测试的理想情况是做到路径 覆盖,但对于复杂性大的程序要做到 所有路径覆盖是不可能的。
Logo
控制流线或弧
1、箭头 2、与程序流程图中的流线一致,表 明了控制的顺序 3、控制流线通常标有名字
1. 程序的控制流图
Logo
1. 程序的控制流图
Logo
• 在选择或多分支结构中,分支的汇 聚处应有一个汇聚节点。 • 边和结点圈定的区域叫做区域,当 对区域计数时,图形外的区域也应 记为一个区域。
Logo
导出基本路径集
Logo
• 导出基本路径集,列出程序的独立路径, 得:
• 路径1:4-〉14 • 路径2:4-〉6-3-〉4-〉 14 • 路径4:4-〉6-〉9-〉12-〉13-〉4-〉 14
设计测试用例
Logo
• 根据上一步得出的独立路径,涉及测试用例, 如下: 输入数据 预期输出 TC1 TC2 TC3 TC4 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
• V(G)=E-N+2 =10-8+2=4 • 或者 V(G)=P+1 =3+1=4
• 例:如下所示的c语言函数: void sort(int irecordnum, int itype) 1 { 2 int x=0; 3 int y=0; 4 while(irecordnum-->0) 5 { 6 if(itype= =0) 7 break; 8 else 9 if(itype==1) 10 x=x+10; 11 else 12 y=y+20; 13 } 14 }