第08课--白盒测试路径分析测试(基本路径测试)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
满足上例基本路径集的测试用例是:
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个值的正确的平均值,正确的总计数
(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都是判断结点。
– 环路复杂度=区域的数目=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
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——三角形问题
102
基本路径和测试用例(2)
8186
8990
87
88
92
99100
93
94
95
96
9798
基本路径和测试用例 3. 81-86->87->88->92->93 ->94->102 相应的测试用例: 测试输入 = (68,68,68) 预期结果= 这是一个等边三角形! 4. 81-86->87->89-90->92->99-100->102 相应的测试用例: 测试输入 = (68,8,60) 预期结果= 这不是一个三角形!
基本路径
基本路径 1. 1-2-11 2. 1-2-3-4-5-6-10-2-11
3. 1-2-3-4-5-7-10-2-11
4. 1-2-3-8-9-10-2-11
5. 1-2-3-8-10-2-11
基本路径测试方法举例
基本路径测试用例的设计
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 }
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
path5: 输入数据:value[i]=有效输入,且 i<100 value[k]>最大值,当 k≤i 时 预期结果:n个值的正确的平均值,正确的总计数 path6: 输入数据:value[i]=有效输入,且 i<100 预期结果:n个值的正确的平均值,正确的总计数
控制流图
说明
控制流图是由节点和边组成的有向图 1. 节点代表了代码或程序流程图中矩形框中所表示的 处理,菱形表示的判断处理以及判断处理流程相交 的汇合点,在图中用标有编号的圆圈表示 2. 边表明了控制的顺序,在图中用有向箭头表示。
控制流图
三种逻辑结构的控制流图
顺序
条件
循环
控制流图
如果判定中的条件表达式是复合条件时,即条件表
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) 预期结果 = 这是一个不等边三角形!
逻辑覆盖
路径分析 测试
循环、条 件分支
…
基本路径测试
相关概念 1. 基本路径 本质上是从程序入口到出口的一些通路。之所以称其为基本路径, 原因在于可以通过对基本路径进行连接或者重复操作得到程序中 的其它路径 2. 控制流图 基于代码结构构造的有向图,可用于描述程序的控制结构
测试思想 根据程序的控制流图找出一个模块所需测试的基本路径,根据这
些基本路径设计构造相应的测试用例
基本路径测试
设计步骤
1. 2. 3. 4.
根据模块逻辑构造控制流图(Flow Graph) 计算控制流图的环复杂度 (Cyclomatic Complexity) 列出包含起始节点和终止节点的基本路径 检查一下列出的基本路径数目是否超过控制流图的 环复杂度 5. 设计覆盖这些基本路径的测试用例
基本路径测试方法举例
1.依据程序内部逻辑画出相应的流图
4 6 7 9 R3
R1
R4
10 R2 12
14
13
基本路径测试方法举例
2.计算流图的环形复杂度(McCabe定义的程序复 杂性度量值)
• 计算环路复杂度的三种方法
– 环路复杂度=边数-节点数+2=10-8+2=4 – 环路复杂度=判断节点数+1=3+1=4
3. V(G) = 边的数目-节点的数目 + 2
环复杂度
环复杂度
闭合区域的数目 = 5 二值判定节点个数 + 1 =4+1=5 边的数目-节点的数目 + 2 = 16-13+2=5
基本路径
实用的定义 一条路径是基本路径如果: 1. 是一条从起始节点到终止节点的路径. 2. 至少包含一条其它基本路径没有包含的边. (至 少引入一个新处理语句或一个新判断的程序通 路.) 注意:对于循环而言,基本路径应包含不执行循 环和执行一次循环体。
环复杂度
含义
用V(G)表示 用来衡量一个模块判定结构的复杂程度,在数量上 表现为独立的路径条数,是需要测试的基本路径数 目的上限。
来自百度文库
环复杂度
计算公式
1. V(G) = 闭合区域的数目 由节点和边围成的封闭区域
• 这些封闭区域一定是不可再分的 • 包括周边的区域
2. V(G) = 二值判定节点个数 + 1.
使用基本路径设计测试用例方法推导三角形问题的测试用例
控制流图
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
102
基本路径与环复杂度
8186 87
88
8990 92
99100
93
94
95
96
9798
1. 81-86->87->88->92->99-100->102 2. 81-86->87->88->92->93->95->9798->102 3. 81-86->87->88->92->93->95->96>102 4. 81-86->87->88->92->93->94->102 5. 81-86->87->89-90->92->93->94>102
并不是所有的基本路径都对应程序的可执行通路, 都可作为设计测试用例的依据。之所以存在这种 情况,是因为控制流图中并不包含程序的处理信 息,无法明确前后节点之间的逻辑关系。
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;
第3章 白盒测试方法
把程序看成装在一个透明的白盒子里,程序的结构和处理 呈现过程完全可见,按照程序的内部逻辑测试程序,以检 查程序中的每条通路是否都能按照预先要求正确工作。
1 2
黑盒测试与白盒测试 逻辑覆盖测试
主 要 内 容
3 4 5 6
路径分析测试
分支条件测试、循环测试
其它测试类型
综合测试实例
白盒测试的常用方法
每个测试用例执行之后,与预期结果进行比较。如果所有测试 用例都执行完毕,则可以确信程序中所有的可执行语句至少被执 行了一次。
达式是由一个或多个逻辑运算符(OR,AND,NAND, NOR)连接的逻辑表达式,则需要改复合条件的判定 为一系列只有单个条件的嵌套的判定。例如对应图 (a) 的复合条件的判定,应该画成如图 (b) 所示的控制流 图。 条件语句 if a OR b 中条件a和条件b各有一个只 有单个条件的判定结点。