基本路径法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径的集合,然后根据可执行路径进行测试用例设计的方法。此方法设计出的测试用例需保证被测程序的每个可执行语句至少执行一次。
基本路径法包括以下4个步骤。
(1)画程序控制流图。程序控制流图是描述程序控制流的一种图示方法。
(2)计算程序环形复杂度:McCabe复杂性度量。从程序的环形复杂度可导出程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次的测试用例数目的上界。
(3)导出测试用例。根据环形复杂度和程序结构来设计测试用例数据输入和预期结果。
(4)准备测试用例。确保基本路径集中的每一条路径的执行。
此外,基本路径法还包含一个工具方法:图形矩阵。图形矩阵是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。
基本路径法测试用例设计如例1所示。
例1
1 a=float(input("请输入三角形边长a:"))
2 b=float(input("请输入三角形边长b:"))
3 c=float(input("请输入三角形边长c:"))
4 ifa+b=cora+c=borb+c=a\
5 orabs(a-b)=corabs(b-c)=a\
6 orabs(c-a)=b:
7 print("不能构成三角形!")
8 elifa==borb==cora==c:
9 ifa==bandb==c:
10 print("等边三角形")
11 else:
12 print("等腰三角形")
13 else:
14 print("普通三角形")
1.画程序控制流图
例1所对应的程序流程图如下图1所示。
计算环形复杂度需要画出程序的控制流图。控制流图中只有两种图形符号。
圆:控制流图中的圆被称为流图的节点,表示一个或多个无分支的语句或源程序语句。
箭头:控制流图中的箭头被称为边或连接,代表控制流。
在基本路径测试法中,任何过程设计都要被翻译成控制流图。不同的结构对应不同的控制流图,如图2所示。
图1例1程序流程图
图2不同结构的控制流图
在将程序流程图转换为控制流图时,需要注意以下几点。
(1)选择或分支结构的分支汇聚处应有一个汇聚节点。
(2)边和节点圈定的范围叫作区域。在计算区域数时,图形外的区域也应记为一个区域。
(3)若判断结构的条件表达式包含一个或多个逻辑运算符(OR、AND、NAND、NOR)连接的复合条件表达式,则需要将其修改为一系列只有单条件的嵌套判断。
根据上述内容可将例1程序流程图对应的控制流图转换出来,如图3所示。
2.计算程序环形复杂度
获得程序控制流图之后,接下来计算环形复杂度。环形复杂度有3种计算方法。
(1)控制流图中的区域数等于环形复杂度。
(2)环形复杂度V(G)=E-N+2,E为控制流图中的边数,N为控制流图中的节点数。
(3)环形复杂度V(G)=P+1,P为数据流图中的判定节点数。
图3例1程序控制流图
因此,例1的环形复杂度计算如下:
例1的区域数为4
V(G)=11-9+2=4
V(G)=3+1=4
3.导出测试用例
根据环形复杂度的计算可得出例1的4条独立路径(一条独立路径是和其他独立路径相比至少引入了一个新处理语句或一个新判断的程序通路)。
路径1:1→4→7→结束语句
路径2:1→4→8→9→11→结束语句
路径3:1→4→8→9→10→结束语句
路径4:1→4→8→13→结束语句
接下来根据上述独立路径来设计测试用例,并根据测试用例来输入数据,使程序分别执行上述的4条独立路径。
4.准备测试用例
根据例1中的判断节点给出的条件,选择合适的数据来确保上述4条路径均得到执行。满足例1基本路径集的测试用例如下表所示。
满足例1基本路径集的测试用例
续表
至此,基本路径法全部介绍完成。
转载请注明:http://www.0431gb208.com/sjslczl/3651.html