白盒测试之基本路径测试法(2)

发表于:2015-03-26来源:uml.org.cn作者:轩缘点击数: 标签:白盒测试
第三步:导出测试用例 根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判

  第三步:导出测试用例  根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。)

  路径1:4-14

  路径2:4-6-7-14

  路径3:4-6-8-10-13-4-14

  路径4:4-6-8-11-13-4-14

  根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。

  第四步:准备测试用例

  为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子基本路径集的测试用例是:

  举例说明:流程图描述了最多输入50个值(以–1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值。

  步骤1:导出过程的流图。

  步骤2:确定环形复杂性度量V(G):

  1)V(G)= 6 (个区域)

  2)V(G)=E–N+2=16–12+2=6

  其中E为流图中的边数,N为结点数;

  3)V(G)=P+1=5+1=6

  其中P为谓词结点的个数。在流图中,结点2、3、5、6、9是谓词结点。

  步骤3:确定基本路径集合(即独立路径集合)。于是可确定6条独立的路径:

  路径1:1-2-9-10-12

  路径2:1-2-9-11-12

  路径3:1-2-3-9-10-12

  路径4:1-2-3-4-5-8-2…

  路径5:1-2-3-4-5-6-8-2…

  路径6:1-2-3-4-5-6-7-8-2…

  步骤4:为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。

  1)路径1(1-2-9-10-12)的测试用例:

  score[k]=有效分数值,当k < i ;

  score=–1, 2≤i≤50;

  期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。

  2)路径2(1-2-9-11-12)的测试用例:

  score[ 1 ]= – 1 ;

  期望的结果:average = – 1 ,其他量保持初值。

  3)路径3(1-2-3-9-10-12)的测试用例:

  输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;

  期望结果:n1=50、且算出正确的总分和平均分。

  4)路径4(1-2-3-4-5-8-2…)的测试用例:

  score=有效分数,当i<50;

  score[k]<0, k< i ;

  期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。

  5)路径5的测试用例:

  score=有效分数, 当i<50;

  score[k]>100, k< i ;

  期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。

  6)路径6(1-2-3-4-5-6-7-8-2…)的测试用例:

  score=有效分数, 当i<50;

  期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。

  注意事项:

  必须注意,一些独立的路径,往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。

  方法工具:图形矩阵

  导出控制流图和决定基本测试路径的过程均需要机械化,为了开发辅助基本路径测试的软件工具,称为图形矩阵(graph matrix)的数据结构很有用。

  利用图形矩阵可以实现自动地确定一个基本路径集。一个图形矩阵是一个方阵,其行/列数控制流图中的结点数,每行和每列依次对应到一个被标识的结点,矩阵元素对应到结点间的连接(即边)。在图中,控制流图的每一个结点都用数字加以标识,每一条边都用字母加以标识。如果在控制流图中第i个结点到第j个结点有一个名为x的边相连接,则在对应的图形矩阵中第i行/第j列有一个非空的元素x。

  对每个矩阵项加入连接权值(link weight),图矩阵就可以用于在测试中评估程序的控制结构,连接权值为控制流提供了另外的信息。最简单情况下,连接权值是 1(存在连接)或0(不存在连接),但是,连接权值可以赋予更有趣的属性:

原文转自:http://www.uml.org.cn/Test/200804036.asp