6.8.2 基本路径测试
基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证被测程序的每个可执行语句至少被执行一次。
采用基本路径测试法设计测试用例,主要包括以下4个步骤。
(1)以详细设计或源代码作为基础,导出程序控制流图。
程序控制流图是描述程序控制流的一种图示方法,可以用图6.15的基本符号来描述程序结构。
控制流图由结点和控制流线(弧)两种图形符号组成。
结点以标有编号的圆圈表示,用于表示程序流程图中矩形框、菱形框的功能,是一个或多个五分支的语句或源程序语句。
控制流线(弧)也称控制流图的边或链接,以箭头表示,与程序流程图中的流线功能一致,需注意以下情况。
①分支的汇聚处应有一个汇聚结点,即使该结点并不代表任何语句;
②由边和结点限定的范围称为区域。需要注意,图形外的区域也应记为一个区域。

图6.15 程序控制流图的基本符号示意图
例6.10 程序的源代码如下。

首先标注程序控制流图的结点,如上图所示,注意分支的汇聚处应有一个汇聚结点。画出程序控制流图如图6.16所示。
(2)计算程序控制流图的环路复杂度。通过对程序控制流图的分析和判断,来计算程序控制流图的环路复杂度。环路复杂度用V(G)表示,有三种计算方法。
①将环路复杂度定义为控制流图中的区域数。
如图6.17所示,程序控制流图将整个平面分成四个区域,R1、R2、R3和R4,因此V(G)=4。
②设定E为控制流图的边数,N为图的结点数,则定义环路的复杂度为V(G)=E-N+2。
如图6.17所示,E=10,N=8,V(G)=10-8+2=4。(https://www.daowen.com)
③设定P为控制流图中的判定结点数,则有V(G)=P+1。
如图6.17所示,图中的判定结点数P=3,V(G)=3+1=4。

图6.16 控制流图

图6.17 控制流图区域划分
(3)确定独立路径集合。从程序的环路复杂度可导出程序的独立路径条数。
独立路径,是指和其他的路径相比,至少引进一个新的处理语句集合或一个新判断条件的程序通路,即独立路径必须至少包含一条在定义之前不曾使用的边。如果只是已有路径的简单合并,并未包含任何新边,则不是独立路径。
独立路径集合中的每一条路径都是唯一的,但独立路径集合不是唯一的,可以有多组不同的独立路径集合。
如图6.17所示,可确定独立路径为如下四条。
第一条:①→⑧。
第二条:①→②→③→⑧。
第三条:①→②→④→⑤→⑦→①→⑧。
第四条:①→②→④→⑥→⑦→①→⑧。
(4)根据独立路径,设计测试用例,确保基本路径集合中每条路径的执行。
为了确保独立路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证每一条路径都被测试到。
依据步骤3)中的独立路径,结合程序源代码,设计测试用例如表6.23所示。
表6.23 基本路径测试用例
