
基本路径覆盖法设计测试用例 (软件测试作业 基本路径测试)
前置知识:
定义
基本路径测试法又称独立路径测试,是在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出基本可执行路径集合,从而设计出相应的测试用例的方法。设计出的测试用例要保证在测试中程序的语句覆盖100%,条件覆盖100%。
测试步骤
基本路径测试法包括以下4个步骤:
(1) 画出程序的控制流图:描述程序控制流的一种图示方法;
(2) 计算程序的环形复杂性:McCabe复杂性度量;从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界;
(3) 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果;
(4) 准备测试用例:确保基本路径集中的每一条路径的执行;
第一步:画出控制流图
流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。在流图中,每一个圆,称为流图的结点,表示一个或多个无分支的语句或源程序语句。一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句。由边和结点限定的范围称为区域,计算区域时应包括图外部的范围。
在控制流图中的两种图形符号:
结点:
①标有编号的圆圈;
②程序流程图中矩形框所表示的处理 ;
③菱形表示的两个甚至多个出口判断;
④多条流线相交的汇合点。
边或连接:
①箭头;
②与程序流程图中的流线一致,表明了控制的顺序;
③控制流线通常标有名字。
常见结构的控制流图
在将程序流程图简化成控制流图时,应注意:
在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。
如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。
在程序流图中一系列的顺序执行语句可以合成为一个结点,但是对于多分支的判断则需要分界为独立的分支,每个分支一个结点。
第二步:计算圈复杂度
圈复杂度用来衡量一个模块判定结构的复杂程度,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路,通俗的来说就是该路径要比其他路径至少多一个新的路径,并且该路径应该是从头至尾的,不可间断。
有以下几种方法计算圈复杂度:
①给定流图G的圈复杂度V(G),定义为V(G)=Area,Area是流程图中的区域数量(即为封闭区域数量+1);
②给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流 图中结点的数量;
③给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
第三步:导出测试用例
第四步:准备测试用例
为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到。
有了这些前置知识我们就可以开始做题了,题目如下:
有下面结构的C函数,用基本路径测试方法设计测试用例。(请大家把答案写作业本上拍照上传)
Void pd (int x,int y, int z)
{
While (x>0)
{
If (y==0 )
{if (z>10 )
{
语句体1
}
else
{
语句体2
}
}
else
{
If ( z<0 )
{
语句体3
}
}
}
语句体4
}
第一步画出控制流图:
先对语句进行编号:
控制流图:
第二步:计算圈复杂度:根据控制流图可得环路复杂度V(G)=Area,即为7
第三步:导出测试用例
- 1 → 5 → 6 → 8 → 10 → 11 → 13 → 15 → 5 → 6 → 7 → 16 → 18 → 4
- 1 → 5 → 6 → 8 → 10 → 11 → 14 → 15 → 5 → 6 → 7 → 16 → 18 → 4
- 1 → 5 → 6 → 7 → 16 → 17 → 19 → 21 → 22 → 15 → 5 → 6 → 7 → 16 → 18 → 4
-
-
-
通过这些测试用例,我们能够覆盖给定函数的每条基本路径,以确保程序的各种情况都得到了测试。
-
路径:1 → 5 → 6 → 8 → 10 → 11 → 13 → 15 → 5 → 6 → 7 → 16 → 18 → 4
- 输入:x = 2, y = 0, z = 11(覆盖语句体1)
-
路径:1 → 5 → 6 → 8 → 10 → 11 → 14 → 15 → 5 → 6 → 7 → 16 → 18 → 4
- 输入:x = 2, y = 0, z = 9(覆盖语句体2)
-
路径:1 → 5 → 6 → 7 → 16 → 17 → 19 → 21 → 22 → 15 → 5 → 6 → 7 → 16 → 18 → 4
- 输入:x = 0, y = 1, z = -5(覆盖语句体3) 第四步:准备测试用例
-
用例编号 X Y Z 预期结果 测试目的 TC1 10 0 15 语句体1,语句体4 测试循环正常执行和条件判断 TC2 10 0 -5 语句体1,语句体4 测试循环正常执行和条件判断 TC3 5 0 15 语句体2,语句体4 测试循环正常执行和条件判断 TC4 5 0 -5 语句体2,语句体4 测试循环正常执行和条件判断 TC5 0 0 15 语句体4 测试循环结束后的执行 TC6 0 0 -5 语句体4 测试循环结束后的执行 TC7 10 1 15 语句体1 测试非零 y 值的情况
-
-
更多推荐



所有评论(0)