基本路径法练习
基本路径法的基本原理
基本路径法的基本原理
基本路径法是一种在有向图中找到所有从起始点到目标点的路径的算法。它的基本原理如下:
1. 创建一个空的路径集合,其中每个路径都以起始点为起点,并且初始路径只包含起始点。
2. 重复以下步骤,直到路径集合中没有新的路径可以添加:
- 在路径集合中选择一个尚未探索完全的路径。
- 获取路径中最后一个顶点的邻居顶点。
- 如果邻居顶点是目标点,则将该路径添加到路径集合中的完整路径中。
- 如果邻居顶点不是目标点,且还未在当前路径中出现,则根据当前路径创建一个新路径,将该邻居顶点添加到新路径中,并将新路径添加到路径集合中。
3. 返回路径集合中包含目标点的完整路径。
基本路径法的关键是选择尚未探索完全的路径并获取其最后一个顶点的邻居顶点。这样可以通过不断扩展路径来找到所有可能的路径。通过持续的路径扩展,最终可以找到从起始点到目标点的所有路径。
白盒测试-基本路径法
一、定义
基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
二、基本路径测试的步骤
1)画出程序控制流图(前提是已经有了程序流程图)
2)计算环路复杂度
3)导出独立路径(可执行路径)
4)设计测试用例
三、认识控制流图
1、描述程序控制流的一种图示方法,控制流图中只有2种图形符号:
结点:标有编号的圆圈表示
控制流线或边或连接:以箭头表示
2、各种语句结构的控制流图
3、认识什么是区域
区域:边和结点圈定的区域叫做区域。
封闭区域+开放区域
4、如果判断中的条件表达式是由一个或多个逻辑运算符(OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。
If(a>1 and b<2)
{
…
}
If(a>1)
{
If(b<2)
{
…
}
}
(a)流程图
四、环形复杂度的计算
有以下三种方法计算环形复杂度:
a)流图中封闭区域的数量+1个开放区域=总的区域数=环形复杂度
b)给定流图G的环形复杂度V(G),定义为V(G)=E-N+2,E是流图中
边的数量,N是流图中结点的数量;
c)给定流图G的环形复杂度V(G),定义为V(G)=P+1,P是流图G
中判定结点的数量。
五、举例
1)画出程序控制流图
2)计算环形复杂度
a)流图中封闭区域的数量+1个开放区域=总的区域数=环形复杂度
3个封闭区域+1个开放区域=4
b)给定流图G的环形复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数
量,N是流图中结点的数量;
V(G)=E-N+2=11-9+2=4
基本路径测试法
H
J
1
控制流程图的图形符号
程序控制流程图
1 边 1
3
结点 区域
2 6 3 6 7 8 4 5 7 R3 8 R1 R2
4
9 10 R4
11 (a)程序流程图 )
11 (b)控制流图
2
程序控制流程图 a b x y y
if a and b then x else y
复合逻辑下的控制流程图
3
基本路径测试的步骤
基本路径测试
— 在程序控制流图的基础上,通过分析控制构造的环路复杂性, 导出基本可执行路径集合,从而设计测试用例的方法 — 在基本路径测试中,设计出的测试用例要保证在被测程序的每 一条可执行语句上至少执行一次 — 程序的控制流程图
WHILE 循环结构
顺序结构
IF 选择结构
UNTIL 循环结构
CASE 多分支结构 选择结构
画出程序控制流程图 计算程序环路复杂性 确定独立路径集合
准备测试用例
4
例:下面是一个程序段,试设计基本路径测试的测试用
例,设计出的测试用例要保证每一个基本独立路径至少要执 行一次
22 24
I
H
1. int Test(int i_count, int i_flag) 2. { 3. int i_temp = 0; 4. while (i_count > 0) 5. { 6. if (0 == i_flag) 7. { 8. i_temp = i_count + 100; 9. break; 10. } 11. else 12. { 13. if (1 == i_flag) 14. { 15. i_temp = i_temp + 10; 16. } 17. else 18. { 19. i_temp = i_temp + 20; 20. } 21. } 22. i_count- -; 23. } 24. return i_temp; 25. }
基本路径测试法习题
使用基本路径测试方法,设计测试下面列出的伪码程序的测试用例。 1: START
INPUT (A,B,C,D)
2: IF(A>0)
3: AND (B>0)
4: THEN X=A+B
5: ELSE X=A-B
6: END
7: IF(C>A)
8: OR(D
9: THEN Y=C-D
10: ELSE Y=C+D
11: END
12: PRINT (X,Y)
STOP
(1) 画出流图并计算上述程序的环形复杂度V(G)。
(2)若使用基本路径覆盖法设计基本路径的基本路径集合?
(3)给出路径集合下的测试用例。
基本路径覆盖法
具体图片请看上面的图,这是一个流图,现在要导出独立路径,
书本给出的答案是这样的:有3条路径
3-4-5-6-7,8
3-5-7,8
3-5-6-7,8
请问为什么不可以是这样的答案呢?
3-4-5-6-7,8
3-5-7,8
3-4-5-7,8(这是多出来的路径,为什么不可以还是什么原因呢)
3-5-6-7,8
路径集所要求的是覆盖所有语句,而不是所有路径,而且一般要求用尽可能少的路径完成用例设计,以便用例数尽可能少。所谓独立路径,是指至少包含一条新边的路径,也就是包含一些前面的路径未包含的语句,当所有的语句都包含了,基路径集就够了。基路径集是非唯一的。3-4-5-7,8(这是多出来的路径,为什么不可以还是什么原因呢),这条路径的所有边都已被其他路径包含,所以不算它。
void Sort(int iRecordNum,int iType)
1 {
2 int x=0;
3 int y=0;
4 while (iRecordNum-- > 0)
5 {
6if(0= =iType)
7x=y+2;
8 else
9if(1= =iType)
10 x=y+10;
11 else
12 x=y+20;
13 }
14 printf(“x=%d,y=%d”,x,y);}
基本路径法_软件测试技术
If语句
Case语句
包含条件的节点被称为判断节点(也叫 谓词节点),由判断节点发出的边必须 终止于某一个节点,由边和节点所限定 的范围被称为区域。
这里我们假定在流程图中用菱形框表 示的判定条件内没有复合条件,而一 组顺序处理框可以映射为一个单一的 结点。 控制流图中的箭头(边)表示了控制 流的方向,类似于流程图中的流线, 一条边必须终止于一个结点。 在选择或者是多分支结构中分支的汇 聚处,即使汇聚处没有执行语句也应 该添加一个汇聚结点。
第2章 白盒测试
内容提纲
复习 控制流图 环形复杂度 图矩阵 练习 作业
复习
逻辑覆盖测试的类型 具体的定义?6
来自百度文库
基本路径测试的思想
在实践中,一个不太复杂的程序,其路径都是一 个庞大的数字,要在测试中覆盖所有的路径是 不现实的。为了解决这一难题,只得把覆盖的 路径数压缩到一定限度内,例如,程序中的循 环体只执行一次。下面介绍的基本路径测试就 是这样一种测试方法,它在程序控制图的基础 上,通过分析控制构造的环行复杂性,导出基 本可执行路径集合,从而设计测试用例的方法。 设计出的测试用例要保证在测试中程序的每一 个可执行语句至少执行一次。
流程图
控制流图
1
1
a 2
c b 4 e 5 d 3
基本路径测试方法PPT精品文档
基本路径测试方法
1
▪ 基本路径测试是一种白盒测试技术。
▪ 1.根据过程设计结果画出相应的流图
▪ 2.计算流图的环形复杂度
▪ 3.确定线性独立路径的基本集合
▪ 4.流图中一条边必须终止于一个 结点,即使这个结点不代表任何 语句。(实际相当于一个空语句)
由程序流程图 画出流图的注意事项
7
8
9
10
流图中线性无关的区域等于环形复杂度 R1-R6共6个区域,环形复杂度为6
计算流图 环形复杂度
11
流图G的环形复杂度V(G)=E-N+2。 其中,E是流图中边的条数,N是结点数。
(例如9-10-12)
15
1)路径1(1-2-9-10-12)的测试用例: score[k]=有效分数值,当k < i ;
score[i]=–1, 2≤i≤50;
期望结果:根据输入的有效分数算出正确的 分数个数n1、总分sum和平均分average。 因为该路径要求n1>0,无法独立测试,所以必 须作为路径4或5或6的一部分来测试。
设计可强制执行基本集合中 每条路径的测试用例
20
6)路径6(1-2-3-4-5-6-7-8-2…)的测试用例: score[i]=有效分数, 当i<50;
基本路径测试方法
基本路径测试方法
基本路径测试方法是一种白盒测试技术,用于测试软件系统中的所有可能路径。它是一种结构化的测试方法,基于程序的控制流图,通过遍历系统中的所有可能路径来验证系统的正确性和稳定性。
基本路径测试方法的主要步骤如下:
1. 识别控制流图:首先,需要将软件系统的源代码转换为控制流图。控制流图是一个图形化表示程序控制流程的图,由控制流程节点和控制流程边组成。
2. 确定基本路径:在控制流图中,基本路径是从程序的入口节点到出口节点的一条路径。基本路径测试的目标是遍历系统中的所有基本路径。
3. 计算基本路径的数量:基本路径的数量是基于控制流图中的节点和边的数量计算得出的。它代表了系统中的所有可能路径。
4. 设计测试用例:根据基本路径的数量,设计测试用例来覆盖系统中的所有基本路径。每个测试用例应该包含一个输入和一个预期输出,以验证系统在不同路径下的行为。
5. 执行测试用例:按照设计的测试用例,逐个执行测试用例。记录测试结果并与预期输出进行比较,以确定系统是否按照预期工作。
6. 分析测试结果:分析测试结果,查找系统中的错误和缺陷。如果测试结果与预期输出不一致,说明系统在某些路径下出现了错
误。
7. 修复错误和重复测试:对发现的错误进行修复,并重新执行测试用例。重复测试过程,直到系统在所有基本路径上都能按照预期工作。
通过基本路径测试方法,可以全面地测试系统中的各种情况和路径,从而提高软件的质量和稳定性。它可以帮助开发人员找出隐藏的错误和缺陷,并及时修复,确保系统的正确性和可靠性。
实训题目:基本路径测试用例设计----------上机
实训题目:基本路径测试用例设计------------上机
实训目的:
1、一步熟悉白盒测试的方法和策略
2、点掌握圈复杂度概念和基本路径测试用例设计方法
3、增强测试经验
实训地点:机房
实训课时:2课时
实训重点、难点:基本路径测试用例设计
实训安排:首先讲解基本路径测试设计测试用例的步骤,要求学生注意总结方法和技巧,然后布置上机任务,要求学生对照课件和课本完成上机任务。老师在机房进行辅导。
实训步骤:
一、Voidsort(inti,intj,intk)
1{
2intm,n,p;
3m=n=p=0;
4if(i>5andj<8)
5m++;
6else
7if(k>=9)
8n++;
9else
10p++;
11Printf(“%d,%d,%d”,m,n,p);
12}
按照基本路径测试方法设计测试用例?
1、画流图,计算复杂度
2、导出测试用例
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
使用基本路径法设计出的测试用例能够保证程序的每一条可执行语句在测试过程中至少执行一次。以下代码由C语言书写,请按要求回答问题。
IntIsLeap(intyear)
1{
2if(year%4==0)
3{
4if(year%100==0)
5{
6if(year%400==0)
7leap=1;
8else
9leap=0;
10}
11else
12leap=1;
13}
14else
15leap=0;
16returnleap;
17}
【问题1】(3分)
请画出以上代码的控制流图
【问题2】(4分)
请计算上述控制流图的圈复杂度V(G)(独立线性路径数)
[练习]实验04.使用基本路径测试法求解“自动售货机”问题
实验04:使用基本路径测试法求解“自动售货机”问题
实验学时:2
实验类型:设计
实验要求:必修
一、实验目的
●理解并掌握基本路径覆盖测试法,能够实际运用;
●使用Eclipse+JUnit+EclEmma进行单元测试。
二、实验要求
●开发环境:Eclipse v3.7及以上版本;JUnit v4.10及以上版本;文本编辑
软件。
●硬件要求:CPU PIV 以上,256M 内存,1G 硬盘空间。
●系统要求:Windows98/Me/XP/NT/2000,IE 5 以上。
三、实验内容
1.下载并安装Eclipse+JUnit+EclEmma实验环境;
2.通读自动售货机程序,并在Eclip se环境下运行该程序;
3.使用基本路径测试法设计测试用例;
⏹绘制程序控制流图;
⏹计算环路复杂度;
⏹确定基本路径;
⏹设计测试用例。
4.完整填写以下表格:
5.编写JUnit测试用例,并运行程序,保证所有测试用例通过测试;
6.使用EclEmma检测测试用例覆盖率,保证覆盖率达到100%。
四、实验结果检查与评定
●提交时间:2013年4月24日之前/2013年5月1日22:00之前
●提交地址:学习委员邮箱
●文档命名方式:12软件专升本X班_0907052XXX_张三_实验04.doc
实验报告
实验序号:实验项目名称:
附录
问题描述
自动售货机程序:
●若投入5角钱或1元钱的硬币,按下“橙汁”或“啤酒”按钮,则相应
的饮料就送出来;
●若售货机没有零钱找,则显示“零钱找完”的红灯亮,这是再投入一元
硬币并按下按钮后,饮料不送出来而且1元硬币也退出来;
基本路径法
第8页/共23页
基路径测试
考虑下列约束:经过C则必经过H,经过D则 必经过G
原始 P1:A-B-C-E-F-H-J-K-M-NO-最终
在B处翻 P2:A-B-D-E-F-H-J-K-M-N转P1 O-最终
在F处翻 P3:A-B-C-E-F-G-O-最终 转P1
在H处 P4:A-B-C-E-F-H-I-N-O-最终 翻转P1
McCabe的基路径方法
弱点: 一、假设测试基路径集合是充分的
(实际未必)
二、向量运算用于程序路径的表达上, 没有意义。
第13页/共23页
基本路径测试用例生成
10.2 软件测试技术
基本路径
• 至少引入一个新语句或者新判Leabharlann Baidu的程序执行通道
测试用例的设计方法
• 流程图 ==> 流图 ==> 基本路径 ==> 测试用 例
• 因此,一组基向量在一定程度上可表示整个向量空间的本质:空间中的一切都可 以用基表示.
第2页/共23页
基路径测试—向量空间的启发
• 基对测试的潜在意义:如果可以把程序看做是一种向量空间,则这种空间的基就 是要测试的非常有意义的元素集合。如果基没有问题,则可以期望能够用基表达 的一切都是没有问题的。
第14页/共23页
流程图和流图示意图
10.2 软件测试技术
基本路径测试方法
基本路径测试方法
基本路径测试方法是一种软件测试技术,用于确定程序代码中的基本路径。基本路径是指程序中的一条完整路径,从程序的入口点到出口点,并覆盖了程序中的所有语句至少一次。
以下是一些常见的基本路径测试方法:
1. 控制流图测试:控制流图是程序代码的可视化表示,将程序的控制流程以图形的形式展示出来。基于控制流图,测试人员可以识别出程序中的所有基本路径,并构建测试用例来覆盖这些路径。
2. 边界值测试:边界值测试是一种基于输入的测试方法,通过确定输入的边界值来测试程序的行为。测试人员可以选择基本路径中的关键节点或语句,提供边界值作为输入,以确保程序在边界情况下的正确性。
3. 数据流测试:数据流测试是一种基于程序中的数据流动进行的测试方法。测试人员可以识别程序中的数据流动,包括变量的定义、使用和修改,然后构建测试用例来测试这些数据流动路径。
4. 语句覆盖测试:语句覆盖测试是一种基于代码的测试方法,旨在确保每个语句至少被执行一次。测试人员可以识别出基本路径中的每个语句,并构建测试用例来覆盖这些语句。
5. 判定覆盖测试:判定覆盖测试是一种基于程序中的判定语句进行的测试方法。测试人员可以识别出基本路径中的判定语句,并构建测试用例来覆盖这些判定语句的两个分支。
这些方法可以互相结合使用,以提高测试的覆盖率和效果。基本
路径测试方法可以帮助测试人员发现程序中的潜在错误和缺陷,并提高程序的质量和可靠性。
实训四 基本路径测试技术
实训四基本路径测试
目标:(思想、知识、能力)
1.了解基本路径测试方法概念
2.掌握基本路径测试方法用例设计过程
3.掌握基本技巧、策略
内容:
1. 基本路径测试方法思想
主要知识:
(1)概念:基本路径测试就是这样一种测试方法,它在程序控制流图的基础
上,通过分析控制构造的环形复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。
(2)步骤:
A、绘制程序控制流图;
B、通过分析环形复杂性,计算圈复杂度;
C、确立独立路径集合;
D、准备测试用例:确保基本路径集中的每一条路径的执行。
2. 基本路径测试方法举例
如下面的一个方法:
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;
8 else
9 if(iType==1)
10 x=y+10;
11 else
12 x=y+20;
13 }
14 }
第一步:画出控制流图
第二步:计算圈复杂度
有以下四种方法计算圈复杂度:
1、流图中区域的数量对应于圈复杂度;
2、给定流图G的圈复杂度-V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;
3、给定流图G的圈复杂度-V(G),定义为V(G)=P+1,P是流图G中判定结点的数量;
4、给定流图G的圈复杂度-V(G),V(G)=图形矩阵中行上数字之和大于等于2的行数加1。
基本路径覆盖法
具体图片请看上面的图,这是一个流图,现在要导出独立路径,
书本给出的答案是这样的:有3条路径
345-6-7,8
3-5-7 ,8
3-5-6-7 ,8
请问为什么不可以是这样的答案呢?
345-6-7 , 8
3-5-7 , 8
3-4-5-7 , 8 (这是多出来的路径,为什么不可以还是什么原因呢)
3-5-6-7 ,8
路径集所要求的是覆盖所有语句,而不是所有路径,而且一般要求用尽可能少的路径完成用
例设计,以便用例数尽可能少。所谓独立路径,是指至少包含一条新边的路径,也就是包含
一些前面的路径未包含的语句,当所有的语句都包含了,基路径集就够了。基路径集是非唯一的。3-4-5-7,8 (这是多出来的路径,为什么不可以还是什么原因呢),这条路径的所有边都已被其他路径包含,所以不算它。
常见结构的流程图与控制流图
void Sort(i ntiRecordNum,i ntiType)
1 {
2 int x=0;
3 int y=0;
4 while (iRecordNum-- > 0)
5 {
6 if(0= =iType)
7 x=y+2;
8 else
9 if(1= =iType)
10 x=y+10;
x=y+20; "x=%d,y=%d ” ,x,y);}
/流图中有四个区域;
丁 ¥(G)=1条边-9结点+2二斗; / V(C>3个判足结点+匸4。
1
1 else 12
13 }
14 printf( 对应上面图中的圏复杂度「计算如下:
夕路径1 : 4—14
・路^至 2 : 4—&—7—13—4—14
”路^彳益3 : 4—6—8—10—13—4—〔4 上路^空 4 : 4—6—8—11—〔3—4—^4
小学五年级上册数学《路径》练习题
小学五年级上册数学《路径》练习题
一、填空题
1. 从A点到B点有_________条路径。
2. 从C点到D点有_________条路径。
3. 从E点到F点有_________条路径。
4. 从G点到H点有_________条路径。
二、选择题
1. 从A点到B点的路径长度是:
- A. 3
- B. 4
- C. 5
- D. 6
2. 从C点到D点的路径长度是:
- A. 2
- B. 3
- C. 4
- D. 5
3. 从E点到F点的路径长度是:
- A. 3
- B. 4
- C. 5
- D. 6
4. 从G点到H点的路径长度是:
- A. 2
- B. 3
- C. 4
- D. 5
三、解答题
1. 请你找出从A点到B点的一条路径,并写出路径顺序。
2. 请你找出从C点到D点的一条路径,并写出路径顺序。
3. 请你找出从E点到F点的一条路径,并写出路径顺序。
4. 请你找出从G点到H点的一条路径,并写出路径顺序。
四、判断题
1. 从A点到B点的路径长度是4。
- A. 对
- B. 错
2. 从C点到D点的路径长度是3。
- A. 对
- B. 错
3. 从E点到F点的路径长度是5。
- A. 对
- B. 错
4. 从G点到H点的路径长度是3。
- A. 对
- B. 错
五、应用题
1. 某人从A点走到H点,他可以选择不重复的路径有多少条?
2. 如果某人只能按照如下规则移动:每次只能向右或向下移动一步,不允许斜线移动,那么从A点到H点有多少种不重复的路径?
六、拓展题
请你自己设计一个迷宫,然后找出从入口到出口的路径,并写出路径顺序。
基本路径测试法
基本路径测试法
基本路径测试法(Basic Path Testing)是软件测试的一种测试技术,它根据程序的控制流图中给出的完整路径,对每个路径进行覆盖,以发现
程序中的错误和隐藏的问题。基本路径测试法是基于控制流图的,通过以
测试编写者的视角,观察程序的流程框架,从而把整个程序拆分成一条条
子路径,然后依次覆盖这些子路径,可以有效探测待测程序中的错误和隐
蔽的问题。
基本路径测试法的优点是涵盖面较广,测试者可以基于程序的控制流
列出所有的路径,然后一一覆盖,从而发现程序的问题和错误,较好的覆
盖到程序中的所有路径,基本路径测试法更多的是探测程序是否存在走不
到的路径,这样便可以发现重大的程序缺陷,可以有效地检查出测试覆盖率,也可以帮助测试者重点测试程序中比较重要的路径。
但是,基本路径测试法也有一些缺点,例如它不能解决循环死锁的问题,如果程序有跳转的情况,也不能很好的检测出,而且它的测试用例较多,对于有限的测试时间以及测试者的精力,可能会造成负担,而且基本
路径测试法也不能覆盖到系统的细小缺陷,所以在使用的时候,要适当结
合其它的测试技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
T 10
average=sum/n1
12 返回
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11 average= – 1
9 n1>0
T 10
average=sum/n1
12 返回
步骤1:导出程序的流图。
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
T 10
average=sum/n1
12 返回
5 ) 路 径 5(1-2-3-4-5-68-2…)的测试用例:满 足条件2,满足条件3, 满足条件5,不满足条 件6
score[1]=101
score[2]=60,
score[3]=-1 ;
期望结果:根据输入的有 效分数算出正确的分数 个数n1=1、总分sum=60 和平均分average=60。
期望结果:根据输入的有 效分数算出正确的分数 个 数 n1=1 、 总 分 sum=60 和平均分average=60。
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
11 R5 10 12 R6
4 5 R3
R1 6 R2 7
注: “…”表示后面剩下的路径是可
8
以选择的。原因在于存在循环结构
步骤4:为每一条独立路径 各设计一组测试用例, 以便强迫程序沿着该路 径至少执行一次。
1 ) 路 径 1(1-2-9-10-12) 的 测试用例:不满足条件2 ,满足条件9
score[1]=60; score[2]=–1
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
T 10
average=sum/n1
12 返回
2 ) 路 径 2(1-2-9-1112)的测试用例:不 满足条件2,不满足 条件9
score[ 1 ]=– 1 ;
期望的结果:average = – 1 ,其他量保 持初值。
基本路径法
案例2
下例程序流程图描述了最多输入50个值(以–1作为 输入结束标志),计算其中有效的学生分数的个数、总 分数和平均值。
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6 Score[ i ]>0 AND score[i]<100
4 ) 路 径 4(1-2-3-4-5-82…) 的 测 试 用 例 : 满 足 条件2,满足条件3,不 满足条件5
score[1]=-0.5
;
score[2]=60
,
score[3]=-1 ;
期望结果:根据输入的有 效分数算出正确的分数 个 数 n1=1 、 总 分 sum=60 和平均分average=60。
T 10
average=sum/n1
12 返回
6 ) 路 径 6(1-2-3-4-5-67-8-2…)的测试用例: 满足条件2,满足条件3 ,满足条件5,满足条 件6
score[1]=60
,
score[2]=60
;
score[3]=-1 ;
期望结果:根据输入的有 效分数算出正确的分数 个 数 n1=2 、 总 分 sum=120 和 平 均 分 average=60。
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
词结点。
8
步骤3:确定基本路径集合(即
1
独立路径集合)。于是可确定6
条独立的路径:
2
路径1:1-2-9-10-12
9
R4 3
路径2:1-2-9-11-12
Βιβλιοθήκη Baidu
路径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…
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
T 10
average=sum/n1
12 返回
1
2
9
R4 3
11 R5 10 12 R6
4 5 R3
R1 6 R2 7
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
8
步骤2:确定环形复杂性度量V(G):
1
1)V(G)= 6 (个区域)
2
2)V(G)=E–N+2=16–12+2=6 其中E为流图中的边数,N为结点数
9
R4 3
; 3)V(G)=P+1=5+1=6
11 R5 10 12
4 5 R3
其中P为谓词结点的个数。在流 图中,结点2、3、5、6、9是谓
R6
R1 6 R2 7
T 10
average=sum/n1
12 返回
3)路径3(1-2-3-9-10-12) 的测试用例:满足条件2 ,不满足条件3,满足条 件9
输 入 多 于 50 个 有 效 分 数 , 即试图处理51个分数
期望结果:n1=50、且算出 正确的总分和平均分。
开始 1
i =1,n1=n2=0,sum=0
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0