第08课--白盒测试路径分析测试(基本路径测试)
白盒测试
条件覆盖
A=2,B=0,X=4 (沿路径ace执行) A=1,B=1,X=1 (沿路径abd执行)
条件覆盖
条件覆盖
条件覆盖
对例2中的所有条件取值加以标记。 对于第一个判断:
条件x>3 取真值为T1,取假值为-T1 条件z<10 取真值为T2,取假值为-T2
对于第二个判断:
条件x=4 取真值为T3,取假值为-T3 条件y>5 取真值为T4,取假值为-T4
测试覆盖标准
测试覆盖标准
上页小程序的流程图,其中包括了一个执行 达20次的循环。那么它所包含的不同执行路 径数高达520(=1013)条,若要对它进行 穷举测试,覆盖所有的路径。假使测试程序 对每一条路径进行测试需要1毫秒,同样假 定一天工作24小时,一年工作365 天, 那 么要想把如图所示的小程序的所有路径测试 完,则需要3170年。
判定/条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个 判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果 也至少执行一次,换句话说,即是要求各个判断的所有可能的条件取值组 合至少执行一次;
条件组合覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判 断的所有可能的条件取值组合至少执行一次;
分支覆盖
对例1的程序,如果设计两个例子,使 它们能通过路径ace和abd,或者通过路 径acd和abe,就可达到“判定覆盖”标 准,为此,可以选择输入数据为:
① 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执行)
入口
a (x>3)&&(z<10) No c b Yes 执行语句块1
软件白盒测试-基本路径测试
软件白盒测试-基本路径测试基本路径测试也是一种常用的白盒测试用例设计方法。
在实际工作中,即使一个简单的程序,路径数量往往也比较多,要在测试中覆盖所有的路径是不现实的。
而基本路径测试的方法就是一种简化路径数的测试方法,它是在分析程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证程序的每一个可执行语句至少执行一次。
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. 边和结点圈定的区域叫做区域,当对区域计数时,图形外的 区域也应记为一个区域。
之
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
白盒测试技术.ppt
2.2 白盒测试技术
Software testing
Software testing
Software testing
--基本路径测试法
Software testing
基本路径测试法
软件测试方法有白盒测试方法和黑 盒测试方法两种,白盒测试方法主要测 试程序的内部结构,如静态分析法、程 序插桩法和逻辑覆盖法等,基本路径测 试法是应用最为广泛的白盒测试方法。
2
基本路径测试法的主要思想
程序控制流图
环路复杂性
基本可执行 路径集合
测试用例
注意:设计出的测试用例要保证程序的每一条可执行语
句至少执行一次。
3
基本路径测试法的执行步骤
1 画出程序控制流图
2
计算环路复杂性
3 确定独立路径集合
4
设计测试用例
4
Step1: 画出程序的控制流图
控制流图是描述程序控制流的一种图示 方式。控制流图由控制流和结点构成,如图1 所示。
13
Step2: 计算环路复杂性
③ 若设P为控制流图中的判定结点数,则有V(G)=P+1。
1
2
3
4
5
6
7 8
P=3 V(G) = 3+1 = 4
14
基本路径测试法的执行步骤
1 画出程序控制流图
2
计算环路复杂性
3 确定独立路径集合
4
设计测试用例
15StBiblioteka p3: 确定独立路径集合进行程序的基本路径测试时,程序的环路 复杂性给出了程序基本路径集合中的 独立路径 条数。
y=y+10;
else
y=y+20;
软件测试教学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精品文档
4
▪ 下面这一程序流程图描述了最多输入50个学生成绩 存在Score中(以–1作为输入结束标志),计算其中有 效的学生分数(0-100分)的个数、总分数和平均值。
举例
5
圆圈代表结点,代表 一条或多条语句
箭头线称为边,代表 控制流
流图
由边和结点围成的面积称为区域,当
计算区域数时应该包括图外部未被围 起的部分,如图有R1-R6,共6块区域。
期望结果:根据输入的有效分数算出正确的 分数个数n1、总分sum和平均分average。
设计可强制执行基本集合中 每条路径的测试用例
19
5) 路径5(1-2-3-4-5-6-8-2…)的测试用例: score[i]=有效分数, 当i<50; score[k]>100, k< i ;
期望结果:根据输入的有效分数算出正确的 分数个数n1、总分sum和平均分average。
▪ 4.流图中一条边必须终止于一个 结点,即使这个结点不代表任何 语句。(实际相当于一个空语句)
由程序流程图 画出流图的注意事项
7
8
9
10
流图中线性无关的区域等于环形复杂度 R1-R6共6个区域,环形复杂度为6
计算流图 环形复杂度
11
流图G的环形复杂度V(G)=E-N+2。 其中,E是流图中边的条数,N是结点数。
基本路径测试方法
1
▪ 基本路径测试是一种白盒测试技术。
▪ 1.根据过程设计结果画出相应的流图
▪ 2.计算流图的环形复杂度
▪ 3.确定线性独立路径的基本集合
▪ 4.设计可强制执行基本集合中每条路 径的测试用例。
基本路径测试的主要步骤
白盒测试测试方法详解
白盒测试white-box testing1测试概述白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
在动态分析技术中,最重要的技术是路径和分支测试。
下面要介绍的六种覆盖测试方法属于动态分析方法。
测试方法白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
要求1.保证一个模块中的所有独立路径至少被使用一次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运行所有循环;4.检查内部数据结构以确保其有效性。
如何进行基本路径测试
一般而言控制流图中区域的数量对应于环
形复杂度。
再根据上面的独立路径径。
最辛苦的时候,是一边赶作业一边写易博,有时候甚至都想到要放弃
于是形成路程测试用例。 为了确保基本路径集中的每一条路径的执
行,根据判断结点给出的条件,选择适当的数据 以保证某一条路径可以被测试到注意事项
基本路径测试是一种白盒测试方法,它在程 序控制图的基础上,通过分析控制构造的环行复 杂性,导出基本可执行路径集合,从而设计测试
用例的方法。设计出的测试用例要保证在测试中
程序的每一个可执行语句至少执行一次。 图形矩阵 控制流图
最辛苦的时候,是一边赶作业一边写易博,有时候甚至都想到要放弃
画出控制流图。 使用控制流图制作方法对程序流程图进行
简化,以突出的表示程序控制流的结构。
对于复合条件,则可将其分解为多个单个条
件,并映射成控制流图。
图例所示。
最辛苦的时候,是一边赶作业一边写易博,有时候甚至都想到要放弃
确定程序基本集的独立路径数量,再确保所 有语句至少执行一次的测试数量的上界。 需要注意的是测试可以被设计为基本路径
集的执行过程,但基本路径集通常并不唯一。
在测试人员已经对被测试对象有了一定的 了解,基本上明确了被测试软件的逻辑结构
0c25f4ca 宝运莱
白盒测试技术
覆盖组合号 1,5 2,6 4,8 3,7
路径覆盖
路径覆盖:设计足够 多的测试用例,要 求覆盖程序中所有 可能的路径。
A>1and T
B=0
c
b
X=X/A
T
A=2 or
d
X>1
e
X=X/A
测试用例 测试用例1 测试用例2 测试用例3 测试用例4
A,B,X 203 101 303 211
执行路径 ace abd acd abe
(2)弧a和弧b相加,表示为a+b 。
❖ 路径数的计算:
在路径表达式中, 将所有弧均以数值1来代替, 再进行表达式的相乘和相加 运算,最后得到的数值即为 该程序的路径数。
1 a
2
b
c
3
d
e
4
f
5
路径表达式 abdf+abef+acdf+acef
2.4.2 基本路径测试方法
❖ 路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整 过程。
❖ 测试可以被设计为基本路径集的执行过程,但基本路径集 通常并不唯一。
基本路径测试(续)
❖ 基本路径测试方法在程序控制流图的基础上,通过分析控制 结构的环形复杂度,导出基本可执行路径集合,从而设计测 试用例。它包括以下4个步骤:
(1)画出程序的控制流图。 (2)计算程序的环形复杂度,导出程序基本路径集合中的独
A>1and T
B=0
c
b
X=X/A
T
A=2 or
d
X>1
e
X=X/A
1B
A
2
3E
D 4
5
测试用例 测试用例1 测试用例4 测试用例5 测试用例6
白盒测试
白盒测试之基本路径测试法例1请根据下面的程序画出流程图procedure Example(A, B: real; var X: real); beginif (A > 1) and (B = 0) thenX := X / A;if (A = 2) or (X > 1) thenX := X + 1;end图1 例1程序的流程图―白盒‖测试的内容有:对程序模块的所有独立执行路径至少测试一次。
●对所有的逻辑判定,取―真‖与取―假‖的两种情况都至少测试一次。
●在循环的边界和运行的边界限内执行循环体。
●测试内部数据结构的有效性。
该程序的程序流程图如图1所示。
一逻辑覆盖逻辑覆盖是以程序内部的逻辑结构为基础的测试方法,属―白盒‖测试。
这一方法是一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试,要求测试人员对程序的逻辑结构有清楚的了解。
从覆盖源程序的语句的详尽程度分析,大致可以分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
1. 语句覆盖为了暴露程序中的错误,语句覆盖是最起码的测试要求,要求设计足够多的测试用例,使得每一条语句至少被执行一次。
对于例1来说,只要选取a=2,b=0,x=3就可以达到每一条语句至少执行一次的要求。
语句覆盖对程序的逻辑覆盖很少,在例1中,两个判定条件都只测试了条件为真的情况,如果条件为假时处理有误,显然不能发现。
此外,语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。
在例1中,为了满足语句覆盖测试的要求,只需两个判定表达式(a>1)and (b=0) 和(a=2)or (x>1) 都取真值,因此使用上述一组测试数据就够了。
但是如果把程序中的第一个判定表达式中的逻辑运算符and写成o r,或者把第二个判定表达式中的条件写成―x<1‖,使用上边的测试数据则不能查出这些错误。
因此,语句覆盖是很弱的逻辑覆盖标准,为了更充分地测试程序,可以采用下边讲述的逻辑覆盖方法。
逻辑覆盖路径分析白盒测试方法
或
42
测试用例 覆盖分支 条件取值 【(1, 0, 3),(1, 0, 4)】 L3(b, e) T1T2 T3T4 【(2, 1, 1),(2, 1, 2)】 L3(b, e) T1T2T3T4
13
(二)动态白盒测试
动态白盒测试是指利用查看代码功能和 实现方式得到的信息来确定哪些要测试, 哪些不要测试,如何开展测试。 • 动态白盒测试的另一个常用名称是结 构测试,因为软件测试员可以查看并使 用代码的内部结构,从而设计和执行测 试。
•
14
• 软件人员使用白盒测试方法,主要 想对程序模块进行如下的检查:
– 对程序模块的所有独立的执行路径 至少测试一次; – 对所有的逻辑判定,取“真”与取 “假”的两种情况都至少测试一次; – 在循环的边界和运行界限内执行循 环体; – 测试内部数据结构的有效性,等。
15
• 对一个具有多重选择和循环嵌套的 程序,不同的路径数目可能是天文 数字。给出一个小程序的流程图, 它包括了一个执行20次的循环。 • 包含的不同执行路径数达520条,对 每一条路径进行测试需要1毫秒, 假定一年工作365 × 24小时,要想 把所有路径测试完,需3170年。
• 此阶段主要进行代码评审
4
(一)静态白盒测试
为什么要坚持编码标准和规范? • 可靠性。 • 可读性/维护性 • 移植性
5
(一)静态白盒测试
通用代码审查清单 数据引用错误; 数据声明错误; 计算错误; 比较错误; 控制流程错误; 子程序参数错误; 输入/输出错误; 其他检查。
第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;
使用基本路径设计测试用例方法推导三角形问题的测试用例
基本路径法
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如果判定中的条件表达式是复合条件即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式则需要改变复合条件的判断为一系列只有单个条件的嵌套的判断
白盒测试-基本路径
基本路径测试的思想
基本路径测试方法
2)路径2(1-2-9-11-12)的测试用例: score[ 1 ]= – 1 ; 期望的结果:average = – 1 ,其他量保持初值。
3)路径3(1-2-3-9-10-12)的测试用例: 输入多于50个有效分数,即试图处理51个有效分数, 期望结果:n1=50,算出前50个分数的总分和平均分。 因为该路径要求n2>=50,无法独立测试,所以必须作为 路径4或5或6的一部分来测试。
圆圈代表结点,代表 一条或多条语句
箭头线称为边,代表 控制流
由边和结点围成的面积称为区域,当 计算区域数时应该包括图外部未被围 起的部分,如图有R1-R6,共6块区域。
1.程序流程图中的一个顺序的处 理框序列和一个菱形判定框,可 以映射成流图中的一个结点。 2.在选择或多分支结构中,分支 的汇聚处应有一个汇聚结点。 3.如果判断中的条件表达式是由 一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达 式,则需要改为一系列只有单条 件的嵌套的判断。 4.流图中一条边必须终止于一个 结点,即使这个结点不代表任何 语句。(实际相当于一个空语句)
程序流程图
流图
为了突出表示程序的控制流,人 们通常使用流图(也称为程序 图)。所谓流图实际上是“退化 了的”程序流程图,它仅仅描绘 程序的控制流程,完全不表现对 数据的具体操作以及分支或循环 的具体条件。 用任何方法表示的过程设计结果 都可以翻译成流图。
下面这一程序流程图描述了最多输入50个学生成绩 存在Score中(以–1作为输入结束标志),计算其中有 效的学生分数(0-100分)的个数、总分数和平均值。
流图中线性无关的区域等于环形复杂度 R1-R6共6个区域,环形复杂度为6
白盒测试技术3-基本路径法
将复合条件分解为单个 条件: 1:A>1 2:B=0 3:X=X/A 4:A=2 5:X>1 6:X=X+1 7:}
入口
if ( (A>1)&&(B=0) ) X = X/A; if ( (A=2)||(X>1) ) X = X+1;
}
a
(A>1) &&
T x=x/A c
(B==0)
F
(A==2)
T
b
||
x = x +1 e
(x>1)
F
d
返回
基本路径测试案例2(续)
使用基本路径测试方法,为以下 程序段设计测试用例。
路径覆盖遇到的问题
• 这个流程图,其中包括了一 • 个执行达20次的循环。那么 • 它所包含的不同执行路径数 • 高达520条,若要对它进行穷 • 举测试,覆盖所有的路径。 • 假使测试程序对每一条路径 • 进行测试需要1毫秒,同样 • 假定一天工作24小时,一年 • 工作365 天, 那么要想把如 • 图所示的小程序的所有路径 • 测试完,则需要3170年。
程序中的控制流。
常见结构的流程图与控制流图
控制流图实例
1
2
3
6
7
8
9
10 11
节点 边
4,5
区域
其中,包含条件的节点被称 为判定节点(也叫谓词节点 ),由判定节点发出的边必 须终止于某一个节点,由边 和节点所限定的范围被称为 区域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制流图
说明
控制流图是由节点和边组成的有向图 1. 节点代表了代码或程序流程图中矩形框中所表示的 处理,菱形表示的判断处理以及判断处理流程相交 的汇合点,在图中用标有编号的圆圈表示 2. 边表明了控制的顺序,在图中用有向箭头表示。
控制流图
三种逻辑结构的控制流图
顺序
条件
循环
控制流图
如果判定中的条件表达式是复合条件时,即条件表
irecordnum=0 itype=0 irecordnum=1 itype=0 irecordnum=1 itype=1 irecordnum=1 itype=2
4.设计出可强制执行基本集合中每条路径的测试用例
预期输出
x=0 y=0 x=0 y=0 x=10 y=0 x=0 y=20
案例2——三角形问题
i = 1; total.input = total.valid = 0; sum = 0; DO WHILE value[i] <> -999 AND total.input < 100 increment total.valid by 1; IF value[i] >= minimum AND value[i] <= maximum THEN increment total.valid[i]; ELSE skip; ENDIF Increment i by 1; ENDDO IF total.valid > 0 THEN averagy = sum / total.valid; ELSE averagy = -999; ENDIF END averagy
每个测试用例执行之后,与预期结果进行比较。如果所有测试 用例都执行完毕,则可以确信程序中所有的可执行语句至少被执 行了一次。
达式是由一个或多个逻辑运算符(OR,AND,NAND, NOR)连接的逻辑表达式,则需要改复合条件的判定 为一系列只有单个条件的嵌套的判定。例如对应图 (a) 的复合条件的判定,应该画成如图 (b) 所示的控制流 图。 条件语句 if a OR b 中条件a和条件b各有一个只 有单个条件的判定结点。
满足上例基本路径集的测试用例是:
path1: 输入数据:value[k]=有效输入,限于 k<i(i定义如下) value[i]=-999, 当 2≤i≤100 预期结果:n个值的正确的平均值、正确的总计数。 注意:不能孤立地进行测试,应当作为路径4、5、6测试的一部分来测试。 path2: 输入数据:value[1]=-999 预期结果:平均值=-999,总计数取初始值。 path3: 输入数据:试图处理101个或更多的值,而前100个应当是有效的 值。 预期结果:与测试用例1相同。 path4: 输入数据:value[i]=有效输入,且 i<100 value[k]<最小值,当 k<i 时 预期结果:n个值的正确的平均值,正确的总计数
3. V(G) = 边的数目-节点的数目 + 2
环复杂度
环复杂度
闭合区域的数目 = 5 二值判定节点个数 + 1 =4+1=5 边的数目-节点的数目 + 2 = 16-13+2=5
基本路径
实用的定义 一条路径是基本路径如果: 1. 是一条从起始节点到终止节点的路径. 2. 至少包含一条其它基本路径没有包含的边. (至 少引入一个新处理语句或一个新判断的程序通 路.) 注意:对于循环而言,基本路径应包含不执行循 环和执行一次循环体。
path5: 输入数据:value[i]=有效输入,且 i<100 value[k]>最大值,当 k≤i 时 预期结果:n个值的正确的平均值,正确的总计数 path6: 输入数据:value[i]=有效输入,且 i<100 预期结果:n个值的正确的平均值,正确的总计数
第3章 白盒测试方法
把程序看成装在一个透明的白盒子里,程序的结构和处理 呈现过程完全可见,按照程序的内部逻辑测试程序,以检 查程序中的每条通路是否都能按照预先要求正确工作。
1 2
黑盒测试与白盒测试 逻辑覆盖测试
主 要 内 容
3 4 5 6
路径分析测试
分支条件测试、循环测试
其它测试类型
综合测试实例
白盒测试的常用方法
使用基本路径设计测试用例方法推导三角形问题的测试用例
控制流图
8186
87
88
8990 92
99100
93
94
95
96
9798
102
环复杂度
8186
8990
87
88
92
99100
93
环复杂度 闭合区域的数目 = 5 二值判定节点个数 + 1 =4+1=5 边的数目-节点的数目 + 2 = 15-12+2=5
94
95
96
9798
102
基本路径和测试用例(1)
8186
87
88
8990 92
99100
93
94
95
96
9798
基本路径和测试用例 1. 81-86->87->88->92->93 ->95->9798->102 相应的测试用例: 测试输入 = (68,68,56) 预期结果 = 这是一个等腰三角形! 2. 81-86->87->88->92->93 ->95->96>102 相应的测试用例: 测试输入 = (68,60,56) 预期结果 = 这是一个不等边三角形!
并不是所有的基本路径都对应程序的可执行通路, 都可作为设计测试用例的依据。之所以存在这种 情况,是因为控制流图中并不包含程序的处理信 息,无法明确前后节点之间的逻辑关系。
102
基本路径与环复杂度
结论
如果基本路径必须是可行的,则逻辑关系会压缩基 本路径集合数量,因此环复杂度是包含起始点和终 止点的基本路径数目的上限
SWPU
案例分析3
——已知程序代码,根据基本路径测试法, 导出测试用例
根据基本路径测试法生成测试用例,确保基 本路径集中每条路径的执行。
以一个求平均值的过程averagy为例,说明 测试用例的设计过程。用PDL语言描述的 averagy过程如下:
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;
– 环路复杂度=区域的数目=4
• 可以计算上图所示流图的环形复杂度为4
基本路径测试方法举例
3.确定独立路径组成的基本路径集合
• 程序的环形复杂度 = 程序中独立路径的数量
–路径1: –路径2: –路径3: –路径4: 4→14 4→6→7→14 4→6→9→10→13→4→14 4→6→9→12→13→4→14 输入数据 测试用例1 测试用例2 测试用例3 测试用例4
环复杂度
含义
用V(G)表示 用来衡量一个模块判定结构的复杂程度,在数量上 表现为独立的路径条数,是需要测试的基本路径数 目的上限。
环复杂度
计算公式
1. V(G) = 闭合区域的数目 由节点和边围成的封闭区域
• 这些封闭区域一定是不可再分的 • 包括周边的区域
2. V(G) = 二值判定节点个数 + 1.
(1) 由过程描述导出控制流图 在上面给出的过程中,针对要映射为对应 控制流图中一个结点的PDL语句或语句组,标 记上用数字表示的标号。加了标号的PDL程序 如下(只有可执行语句部分):
对应的控 制流图如 图所示:
该图所有的6条路径是: path1:1 - 2 - 10 - 11 - 13 path2:1 - 2 - 10 - 12 - 13 path3:1 - 2 - 3 - 10 - 11 - 13 path4:1 - 2 - 3 - 4 - 5 - 8 - 9 - 2 - 10 - 11 - 13…… path5:1 - 2 - 3 - 4 - 5 - 6 - 8 - 9 - 2 - 10 - 12 - 13…… path6:1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 2- 3 - 10 - 11 - 13 …… path4、path5、path6 后面的省略号(……)表示在控 制结构中以后剩下的路径是可选择的。在很多情况下,标 识判断结点,常常能够有效地帮助导出测试用例。在上例 中,结点2、3、5、6和10都是判断结点。
基本路径测试方法举例
1.依据程序内部逻辑画出相应的流图
4 6 7 9 R3
R1
R4
10 R2 12
14
13
基本路径测试方法举例
2.计算流图的环形复杂度(McCabe定义的程序复 杂性度量值)
• 计算环路复杂度的三种方法
– 环路复杂度=边数-节点数+2=10-8+2=4 – 环路复杂度=判断节点数+1=3+1=4
些基本路径设计构造相应的测试用例