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