第6章_6.4_基本路径法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开始 1 i =1,n1=n2=0,sum=0 F 2和3 Score[ i ]<>-1 AND n2<50 4 F T n2=n2+1
5 和6 Score[ i ]>0 AND score[i]<100
7
T 8 i = i +1 9 n1>0
n1=n1+1,sum=sum+score[i]
F 11 average= – 1 12
T 10 average=sum/n1
返回
《软件测试与质量保证》课件
2 ) 路 径 2(1-2-9-1112) 的测试用例:不 满足条件 2 ,不满足 条件9 score[ 1 ]=– 1 ; 期望的结果: average = – 1 , 其他量保持初值。
开始 1 i =1,n1=n2=0,sum=0 F 2和3 Score[ i ]<>-1 AND n2<50 4 F T n2=n2+1
《软件测试与质量保证》课件
1、控制流图

控制流图(可简称流图)是对程序流程图进行简化后得到
的,它可以更加突出的表示程序控制流的结构。


控制流图中包括两种图形符号:节点和控制流线。
节点由带标号的圆圈表示,可代表一个或多个语句、一个
处理框序列和一个条件判定框。

控制流线由带箭头的弧或线表示,可称为边。它代表程序
10
14 13
12
《软件测试与质量保证》课件
基本路径测试案例1(续)
计算环形复杂度: 10(条边)- 8(个节点)+ 2 = 4 导出独立路径(用语句编号表示) 路径1:4→14 路径2:4→6→7→14 路径3:4→6→9→10→13→4„ 路径4:4→6→9→12→13→4„ 注 :“„”表示后面剩下的路径是可 以选择的。原因在于存在循环结 构。
2.
3.
4.
《软件测试与质量保证》课件
基本路径测试案例1
void Sort ( int iRecordNum, int iType ) 1{ 2 int x=0; 3 int y=0; 4 while ( iRecordNum-- > 0 ) 5 { 6 If ( iType==0 ) 7 {x=y+2;break;} 8 else 9 If ( iType==1 ) 10 x=y+10; 11 else 12 x=y+20; 13 } 14 }
《软件测试与质量保证》课件
图矩阵实例
1

1
2
3
4
5
1
2

a c b d e f
1
2
2 4 5 3
f b
3
3
Biblioteka Baidu
4
4


5
5
(a)
(b)
《软件测试与质量保证》课件
3、环形复杂度及其计算方法
环形复杂度又称为圈复杂度,以图论为基础,为我们提 供了非常有用的软件度量。可用如下三种方法之一来计 算环形复杂度: 1、控制流图中区域的数量对应于环形复杂度。
《软件测试与质量保证》课件
基本路径测试案例1(续)

画出控制流图:
4 6 7 9
void Sort ( int iRecordNum, int iType ) 1{ 2 int x=0; 3 int y=0; 4 while ( iRecordNum-- > 0 ) 5 { 6 If ( iType==0 ) 7 {x=y+2;break;} 8 else 9 If ( iType==1 ) 10 x=y+10; 11 else 12 x=y+20; 13 } 14 }
如何根据流程图得到控制流图?
1
1
2
2
3
3
5
6 5
6
8
8
(a)程序流程图
(b)控制流图
《软件测试与质量保证》课件
如何根据流程图得到控制流图?(续)
1

1
2
2 4 5 3
f b

3

4

5
(a)
(b)
《软件测试与质量保证》课件
关于复合条件的处理
如何画复合条件的控制流图 ?
《软件测试与质量保证》课件
路径4:1-2-3-6-7-9-10-1…
注:“„”表示后面剩下的路 径是可以选择的,原因在于 存在循环结构。
《软件测试与质量保证》课件
5、程序基本路径集及其确定方法

程序基本路径集是指由若干条独立路径组成的集合,其数量
由环形复杂度确定。

McCabe开发了一种算法,用于确定程序的基本路径集合,方 法如下:
《软件测试与质量保证》课件
如何由源程序直接得到控制流图?(续)
根据源代码可以导出程序的控制流 图,如图所示。每个圆圈代表控制 流图的节点,圆圈中的数字对应程 序中某一行的编号。箭头代表边的 方向,即控制流方向。
10 6 7 9 11
13,14
18
16
《软件测试与质量保证》课件
2、图矩阵

图矩阵是控制流图的矩阵表示形式。
1 2 9 11 R5 12 R6 10 R4 3 4 5 R3
R1 6
R2 8
7
《软件测试与质量保证》课件
步骤 4 :为每一条独立路径 各设计一组测试用例, 以便强迫程序沿着该路 径至少执行一次。 1 )路径 1(1-2-9-10-12) 的 测试用例:不满足条件 2, 满足条件9 score[1]=60; score[2]=–1 期望结果:根据输入的有 效分数算出正确的分数 个 数 n1=1 、 总 分 sum=60 和平均分average=60。
如何由源程序直接得到控制流图?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 main () { int num1=0, num2=0, score=100; int i; char str; scanf (“%d, %c\n”, &i, &str); while (i<5) { if (str=’T’) num1++; else if (str=’F’) { score=score-10; num2 ++; } i++; } printf (“num1=%d, num2=%d, score=%d\n”, num1, num2, score); }
9
n1>0
T
10 average=sum/n1
返回
《软件测试与质量保证》课件
步骤2:确定环形复杂性度量V(G):
1 2 9 11 R5 12 R6 R4 3 4 5 R3
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是谓 词结点。
中的控制流。
《软件测试与质量保证》课件
常见结构的流程图与控制流图
《软件测试与质量保证》课件
控制流图实例
节点
1 2 3 6 7 9 8

4,5
其中,包含条件的节点被称 为判定节点(也叫谓词节点 ),由判定节点发出的边必 须终止于某一个节点,由边 和节点所限定的范围被称为 区域。
10
11
区域
《软件测试与质量保证》课件

图矩阵是一个方形矩阵,其维数等于控制流图的节点数。
矩阵中的每列和每行都对应于标识的节点,矩阵元素对应 于节点间的边。

通常,控制流图中的结点用数字标识,边则用字母标识。 如果在控制流图中从第 i 个结点到第 j 个结点有一个标识
为 x 的边相连接,则在对应图矩阵的第 i 行第 j 列有一个
非空的元素 x 。
根据左图给出的程序流程图,完 成以下要求:
(1)画出相应的控制流图。
(2)给出相应的图矩阵。
(3)计算环形复杂度。 (4)找出程序的基本路径集合。
《软件测试与质量保证》课件
基本路径测试法测试步骤
基本路径测试步骤:
1.
画出程序的控制流图 计算流图G的环路复杂性V(G) 确定只包含独立路径的基本路径集 根据上面的独立路径,设计测试用例,使程序分别沿上面 的独立路径执行。
10
R1 6 R2 8
7
《软件测试与质量保证》课件
步骤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„ 注: “„”表示后面剩下的路径 是可以选择的。原因在于存在 循环结构。
《软件测试与质量保证》课件
基本路径测试

完成路径测试的理想情况是做到路径覆盖,但对于复杂性
大的程序要做到所有路径覆盖(测试所有可执行路径)是 不可能的。

在不能做到所有路径覆盖的前提下,如果某一程序的每一 个独立路径都被测试过,那么可以认为程序中的每个语句 都已经检验过了,即达到了语句覆盖。这种测试方法就是 通常所说的基本路径测试方法。

2、给定控制流图G的环形复杂度—V(G),定义为 V(G) = E-N+2 其中,E是控制流图中边的数量,N是控制流图中的 节点数量。 3、给定控制流图G的环形复杂度—V(G),也可定义为 V(G) = P+1 其中,P是控制流图G中判定节点的数量。
《软件测试与质量保证》课件
4、独立路径

独立路径是指程序中至少引入了一个新的处理语句集合或一
5和6 Score[ i ]>0 AND score[i]<100 T n1=n1+1,sum=sum+score[i] 8 i = i +1 F 9 n1>0 T 7
11
10
average= – 1 12 返回
average=sum/n1
步骤1:导出程序的流图。
开始 1 i =1,n1=n2=0,sum=0 F 2 和3 Score[ i ]<>-1 AND n2<50
5和6 Score[ i ]>0 AND score[i]<100
7
T 8 i = i +1 9 n1>0
n1=n1+1,sum=sum+score[i]
测试用例2
测试用例3
测试用例4
《软件测试与质量保证》课件
案例2
下例程序流程图描述了最多输入50个值(以–1作为 输入结束标志),计算其中有效的学生分数的个数、总 分数和平均值。
《软件测试与质量保证》课件
1
开始
i =1,n1=n2=0,sum=0 F 2和3 Score[ i ]<>-1 AND n2<50 4 F T n2=n2+1
《软件测试与质量保证》课件
6.4 基本路径法
《软件测试与质量保证》课件
覆盖测试与路径测试
白盒测试的两种常用技术:

覆盖测试:在测试过程中,以覆盖某些程序元素为测试目标
的测试。

路径测试:从流程图上讲,程序的一次执行对应于从入口到 出口的一条路径,针对路径的测试即为路径测试。从广义的 角度讲,任何有关路径分析的测试都可以被称为路径测试。
1、选择一个基线路径。
2、沿基线路径后退,碰到判定节点后翻转,将翻转后的路径作 为基线路径,重复本步骤,直到所有的判定节点都被翻转。 注意:为遵循先易后难的原则,对于循环,一般先让路径跳过 循环,然后考虑进入循环。

基本路径集通常并不唯一。
《软件测试与质量保证》课件
程序基本路径集确定案例
确定步骤见下页……
《软件测试与质量保证》课件
1 2 9 11 R5 12 R6 10 R4 3 4 5 R3
4
F
T n2=n2+1
5和6 Score[ i ]>0 AND score[i]<100 7
T
8 i = i +1
n1=n1+1,sum=sum+score[i]
R1 6 R2 8 7
F
11 average= – 1 12

4 6 7 9
10
14 13
12
《软件测试与质量保证》课件
基本路径测试案例1 (续)
设计测试用例:
输入数据 测试用例1 irecordnum = 0 itype = 0 irecordnum = 1 itype = 0 irecordnum = 1 itype = 1 irecordnum = 1 itype = 2 预期输出 x=0 y=0 x=0 y=0 x = 10 y=0 x=0 y = 20
《软件测试与质量保证》课件
在A处翻转 在C处翻转
P1:A,B,C,G P2:A,B,C,B,… 在B处翻转 P3:A,B,E,F,G P4:A,D,E,F,G 在D处翻转 P5:A,D,F,G 注:―…‖表示后面剩下的路径 是可以选择的,原因在于存 在循环结构。
《软件测试与质量保证》课件
课堂练习一
个新条件的程序通路。

采用流图的术语,即独立路径必须至少包含一条在本次定义
路径之前不曾用过的边。
《软件测试与质量保证》课件
独立路径实例
独立路径:至少沿一条新的边移动的路径。
1
路径1:1-11
路径2:1-2-3-4-10-1… 路径3:1-2-3-6-8-9-10-1…
4,5
2
3
6
7 9 10 11 8
相关文档
最新文档