路径测试

路径测试,路径测试是指设计测试用例用来执行不同的路径;路径覆盖指的是测试条件执行的路径占总的路径的百分比,100%的路径覆盖可以确保100%的语句覆盖、判定覆盖和LCSAJ覆盖。

路径测试方法的先驱是Tom McCabe,他提出了一种通过分析测试对象控制流图的拓扑结构来设计测试用例的方法。路径测试的主要步骤如下。
(1)根据测试对象的源程序得到控制流图。
(2)计算控制流图的圈复杂度C(Cyclomatic Complexity)。
(3)选择基本路径。
(4)为每条基本路径创建一个测试用例。
(5)执行测试用例。
下面通过例子阐述如何根据测试对象的控制流图设计路径测试用例,下图所示为一个控制流图的例子。
路径测试

McCabe定义了控制流图的圈复杂度 C = 边数(Edges)– 节点数(Nodes)+ 2。其中边在控制流图中以箭头表示,而节点通过圆圈表示。通过分析图2-7所示控制流图,可以得到其边数为24,节点数为19,因此得到的圈复杂度C为7。

如果控制流图中的判定都是二元方式(即每个节点分化出来的只有两条边),那么圈复杂度C的计算更加简单,即C = p + 1,其中p为二元判定的数目。在这个例子中,二元节点的数目是6个,分别是A、D、E、F、K和L。所以得到的圈复杂度C为7,和前面得到的结果一致。

圈复杂度的含义是测试对象以线性方式组合可以得到的独立的和无环回路径(有时称为“基本路径”)的最小数目,在控制流图中任何一条基本路径至少覆盖了其他路径没有覆盖的一个节点。由于路径测试中的基本路径的集合覆盖了控制流图的所有边和节点,所以满足100%的语句覆盖和判定覆盖。

根据McCabe创建基本路径的过程,可以逐步得到测试对象控制流图的如下7条基本路径。
(1)选择1条测试对象执行的典型路径,尽量避免选择异常处理的路径。例如,从测试人员的角度看,典型的路径是测试对象最频繁执行的路径,这里选择ABDEGKMQS。
(2)选择第2条路径:仅仅改变典型路径的第1个判定的输出方向,其他判定输出和典型路径保持不变,因此得到的第2条路径是ACDEGKMQS。
(3)选择第3条路径:改变第2个判定的输出方向,得到的第3条路径是ABDFILORS。
(4)选择第4条路径:改变典型路径的第3个判定输出,而保持其他判定输出不变,得到的第4条路径是ABDEHKMQS。
(5)选择第5条路径:按照前面的思路直到典型路径到达控制流图的最后一个判定输出,得到的第5条路径是ABDEGKNQS。
(6)到目前为止,基于典型路径的所有判定都已经覆盖。接下来根据第2条路径选择不同的判定输出,覆盖第2条路径的所有其他判定输出,分别得到第6条路径ACDFJLORS和第7条路径ACDFILPRS。

因此根据测试对象的控制流图,基于McCabe创建测试用例的过程最终得到了ABDEGKMQS、ACDEGKMQS、ABDFILORS、ABDEHKMQS、ABDEGKNQS、ACDFJLORS和ACDFILPRS。共7条独立的基本路径。

根据得到的7条基本路径,为每条路径创建一个测试用例。并选择合适的测试输入数据,使其遍历每条路径。需要注意的是创建的基本路径集合并不一定是惟一的,可以创建不同的基本路径集合。但是对于任何一个基本路径集合,基于其创建的测试用例应该都可以覆盖测试对象的每条语句和每个判定。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!