基本路径测试法
软件测试 实验2 基本路径测试法

布置作业
实验后记
1、画出给定实验题目的程序流程图;
Y
N
N
Y
Y
N
2、以程序流程图为基础,画出相应的控制流图;
1:开始2:X++<10 3:A>1 4:C=C/A 5:B=0 6:C<0 7:X>1 8:X=X+1 9:A=B+C 10:
3、分别用三种方法计算该程序的环形复杂性V(G);
使用基本路径测试方法为以下程序段设计测试用例
实验2基本路径测试法
重点:掌握环形复杂性的概念及基本路径测试法。
难点:掌握基本路径测试法的步骤及测试用例的编写。
主要内容:
使用基本路径测试方法,为以下程序段设计测试用例。
void Do (int X,int A,int B, int C)
{
while (X++<10)
(1):V(G)=区域数目=6
(2):V(G)=边界数目-节点数目+2=14-10+2=6
(3):V(G)=判断节点数目+1=5+1=6
4、测试用例:
测试用例
覆盖路径
X=11,A=1,B=1,C=1
1-----2-----10
X=1,A=2,B=1,C=1
1-----2-----3-----4-----9-----2
X=2,A=1,B=1,C=2
1-----2-----3-----5-----6-----9-----2
X=1,A=1,B=1,C=-1
1-----2-----3-----5-----6-----7-----9-----2
基本路径测试法的步骤

基本路径测试法的步骤嘿,朋友们!今天咱来聊聊基本路径测试法。
这就好比你要去一个陌生的地方探险,得有个靠谱的路线图才行呀!基本路径测试法呢,就是帮你找到软件里那些关键的路径。
你想想看,软件就像一个大大的迷宫,里面有好多好多的路,你要是随便乱走,那可就晕头转向啦!但有了基本路径测试法,就像有了指南针一样。
咱先得把软件的各个模块呀、功能呀都搞清楚,这就像你得知道迷宫里都有哪些房间一样。
然后呢,找出那些最重要的流程,这就是你要走的主要道路啦。
比如说,一个购物软件,从挑选商品到下单付款,这就是一条关键路径呀。
接下来,可不能马虎,得仔细地沿着这些路径走一走,看看会不会有什么问题。
就像你走在路上,得留意有没有坑洼呀,有没有绊脚石呀。
如果有,那可得赶紧标记出来,让开发人员去修好。
有时候啊,你还得变着法儿地走。
比如故意走一些不太正常的路,看看软件能不能应对。
这就好像你在迷宫里突然想绕个弯,看看会不会有新发现。
要是软件在这些奇怪的情况下也能正常工作,那才叫厉害呢!再说说这测试的过程,可不能马马虎虎。
要像侦探一样,不放过任何一个小细节。
一个小按钮没反应,那可不行;一个页面显示不正常,那也不行。
这都得找出来解决掉呀!不然用户用起来得多别扭呀。
而且呀,基本路径测试法可不是一次性的事儿。
就像你家的东西时不时要检查检查一样,软件也得经常用这个方法来测一测。
万一有新的功能加进去了,那可得重新找找新的路径,再好好测试一番。
你说,要是没有基本路径测试法,那软件不就乱套啦?用户用着用着就出错,那多糟糕呀!所以呀,这个方法可太重要啦!咱可得好好重视,让软件变得稳稳当当的,让用户用得开开心心的,对不对?总之呢,基本路径测试法就像是软件的保护神,有了它,软件才能更好地为我们服务呀!咱可不能小瞧了它哟!。
白盒测试-基本路径法

⽩盒测试-基本路径法⼀、定义基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执⾏路径集合,从⽽设计测试⽤例的⽅法。
⼆、基本路径测试的步骤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个开放区域=4b)给定流图G的环形复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;V(G)=E-N+2=11-9+2=4c)给定流图G的环形复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
V(G)=P+1=3+1=43)导出独⽴路径注:因为环形复杂度为4,所以有四条独⽴路径PATH1:1-11PATH2:1-2-3-4-5-10-1-11PATH3:1-2-3-6-7-9-10-1-11PATH4:1-2-3-6-8-9-10-1-114)设计测试⽤例(略)。
白盒测试技术(基本路径测试法)

控制流图的组成: 1. 节点:以标有编号的圆圈表示。可代表一个或多个语句、一
个处理框序列和一个条件判定框(假设不包含复合条件)。包 含条件的节点被称为判断节点,分支的汇聚处应该有一个汇 点。, 2. 控制流线或弧:以箭头表示,又称为边。 3. 边和结点圈定的区域叫做区域,当对区域计数时,图形外的 区域也应记为一个区域。
之
1
▪ 1.白盒测试技术概念以及方
法
▪ 2.基本路径测试法
重点
▪ 步骤
▪ 实现
黑盒
X=2
?
y=4
白盒
X=2 y=2x
y=4
白盒测试以源代码为基本对象,是对软件的过 程性细节做细致的检查,允许测试人员利用程序内 部的逻辑结构及有关信息,设计或选择测试用例, 对程序所有逻辑路径进行测试,通过在不同点检查 程序状态,确定实际状态是否与预期的状态一致。
2.计算环路复杂度,又称为圈复杂度
❖ 案例分析
3.列出程序中形成的基本路径集合
路径1:4-14 路径2:4-6-7-14 路径3:4-6-8-10-13-414 路径4:4-6-8-11-13-414
❖ 案例分析
4.推导出可以确保集合中每条独立路径都被执行的 测试用例。
2
1
4
3
分析控制流图:
1. 节点数: 9 2. 判断节点数: 3 3. 边数: 11 4. 区域数: 4
程 序 流 程
控 制 流 图
图
程序的环路复杂性给出了程序基本路径集中的 独立路径条数,这是确保程序中每个可执行语句至 少执行一次所必需的测试用例数目的上界。
程序环路复杂性计算方法(三种):
(1)流图中区域的数量对应于环形复杂度; 4. (2)给定流图G的环形复杂度V(G),定义 为V(G)=E-N+2, E是流图中边的数量, N是流图中节点的数量。 V(G)=11-9+ 2. (3) V(G)=P+1, P是流图G中的判定节 点数。 V(G)=3+1
基本路径测试方法

基本路径测试方法
基本路径测试方法是一种白盒测试技术,用于测试软件系统中的所有可能路径。
它是一种结构化的测试方法,基于程序的控制流图,通过遍历系统中的所有可能路径来验证系统的正确性和稳定性。
基本路径测试方法的主要步骤如下:
1. 识别控制流图:首先,需要将软件系统的源代码转换为控制流图。
控制流图是一个图形化表示程序控制流程的图,由控制流程节点和控制流程边组成。
2. 确定基本路径:在控制流图中,基本路径是从程序的入口节点到出口节点的一条路径。
基本路径测试的目标是遍历系统中的所有基本路径。
3. 计算基本路径的数量:基本路径的数量是基于控制流图中的节点和边的数量计算得出的。
它代表了系统中的所有可能路径。
4. 设计测试用例:根据基本路径的数量,设计测试用例来覆盖系统中的所有基本路径。
每个测试用例应该包含一个输入和一个预期输出,以验证系统在不同路径下的行为。
5. 执行测试用例:按照设计的测试用例,逐个执行测试用例。
记录测试结果并与预期输出进行比较,以确定系统是否按照预期工作。
6. 分析测试结果:分析测试结果,查找系统中的错误和缺陷。
如果测试结果与预期输出不一致,说明系统在某些路径下出现了错
误。
7. 修复错误和重复测试:对发现的错误进行修复,并重新执行测试用例。
重复测试过程,直到系统在所有基本路径上都能按照预期工作。
通过基本路径测试方法,可以全面地测试系统中的各种情况和路径,从而提高软件的质量和稳定性。
它可以帮助开发人员找出隐藏的错误和缺陷,并及时修复,确保系统的正确性和可靠性。
白盒测试测试方法详解

白盒测试white-box testing1测试概述白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
在动态分析技术中,最重要的技术是路径和分支测试。
下面要介绍的六种覆盖测试方法属于动态分析方法。
测试方法白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
要求1.保证一个模块中的所有独立路径至少被使用一次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运行所有循环;4.检查内部数据结构以确保其有效性。
基本路径测试法的概念

基本路径测试法的概念
一、确定测试需求
在进行基本路径测试之前,首先需要明确测试需求。
测试需求应详细列出需要测试的功能、性能、安全等方面的要求,以便为后续的测试提供指导。
二、绘制流程图
流程图是一种表示程序逻辑的图形化表示方法,可以帮助我们更好地理解程序的执行流程。
在基本路径测试中,我们需要根据测试需求绘制相应的流程图,以便确定基本路径。
流程图可以采用各种图形符号来表示不同的控制结构,如顺序、选择、循环等。
三、确定基本路径
基本路径是指在流程图中从起点到终点的所有路径中,具有最小路径长度的一条路径。
在基本路径测试中,我们需要确定所有可能的基本路径,并对每一条路径编写相应的测试用例。
确定基本路径的方法可以采用深度优先搜索或广度优先搜索等算法。
四、编写测试用例
测试用例是用来验证软件是否符合要求的一种测试计划和执行过程。
在基本路径测试中,我们需要为每一条基本路径编写相应的测试用例,以便对程序进行全面覆盖。
测试用例应该详细列出测试的前提条件、输入数据、执行步骤和预期结果等信息,以便对程序的正确性和可靠性进行全面的评估。
通过基本路径测试法,我们可以全面了解程序的执行流程和逻辑,确保程序中每个模块都能正常工作并满足需求。
同时,该方法还可以帮助我们发现潜在的错误和漏洞,提高软件的质量和可靠性。
软件测试之基本路径测试

软件测试之基本路径测试软件测试之基本路径测试基本路径测试是Tom McCabe[MCC76]首先提出的一种白盒测试技术,基本路径测试方法上”。
允许测试用例设计者导出一个过程设计的逻辑复杂性测度,并使用该测度作为指南来定义执行路径的基本集。
从该基本集导出的测试用例保证对程序中的每一条语句至少执行一次。
1 流图符号在介绍基本路径方法之前,必须先介绍一种简单的控制流表示方法,即流图或程序图①。
流图使用图1-1中的符号描述逻辑控制流,每一种结构化构成元素有一个相应的流图符号。
为了说明流图的用法,我们采用图1-2中的过程设计表示法,此处,流程图用来描述程序控制结构。
图 1-2b将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。
在图1-2b中,每一个圆,称为流图的节点,代表一个或多个语句。
一个处理方框序列和一个菱形决测框可被映射为一个节点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。
一条边必须终止于一个节点,即使该节点并不代表任何语句(例如:参见if-else-then结构的符号)。
由边和节点限定的范围称为区域。
计算区域时应包括图外部的范围①。
任何过程设计表示法都可被翻译成流图,图1-3显示了一个程序设计语言(PDL,ProgramDesign Language)片段及其对应的流图,注意,对PDL语句进行了编号,并将相应的编号用于流图中。
程序设计中遇到复合条件时,生成的流图变得更为复杂。
当条件语句中用到一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)时,就出现了复合条件。
图1-4中,将一个PDL片段翻译为流图,注意,为语句IF a OR b中的每一个a 和b创建了一个独立的节点,包含条件的节点被称为判定节点,从每一个判定节点发出两条或多条边。
2 环形复杂性环形复杂性是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于基本路径方法,计算所得的值定义了程序基本集的独立路径数量,并为我们提供了确保所有语句至少执行一次的测试数量的上界。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
画出程序控制流程图 计算程序环路复杂性 确定独立路径集合
准备测试用例
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
控制流程图的图形符号
程序控制流程图
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
基本路径测试的步骤
画出程序控制流程图
4
C
6
A
D
E
13
F
G
8 19
J
B
15
计算程序环路复杂性
— 程序的环路复杂性给出程序基本路径集合中的独立路径条数 — 确保程序中每个可执行语句至少执行一次所必须的测试用例数目 的上界 — 独立路径:指至少引入一个新处理语句或一条新判断的程序通路 — 就是程序环路复杂性的三种方法:
H
J
导出程序基本路径
4
C
6
A
D
E
13
F
G
8 19
B
15 22
I
J
B(4,24) C,E,J(4,6,8,24) C,D,F, H, A, B (4, 6, 13, 15, 22, 4, 24) C,D,G, I, A, B (4, 6, 13, 19, 22, 4, 24)
H
24
设计测试用例
4
C
6
A
D
E
13
F
G
8 19
B
15 22
I
24
B(4,24) 输入数据: i_count = 0, 或者是i_count < 0的某一个值 预期结果: i_temp = 0 C,E,J(4,6,8,24) 输入数据: i_count = 1 i_flag = 0 预期结果: i_temp = 101 C,D,F, H, A, B (4, 6, 13, 15, 22, 4, 24) 输入数据: i_count = 1 i_flag = 1 预期结果: i_temp = 10 C,D,G, I, A, B (4, 6, 13, 19, 22, 4, 24) 输入数据: i_count = 1 i_flag = 2 预期结果: i_temp = 20
基本路径测试
— 在程序控制流图的基础上,通过分析控制构造的环路复杂性, 导出基本可执行路径集合,从而设计测试用例的方法 — 在基本路径测试中,设计出的测试用例要保证在被测程序的每 一条可执行语句上至少执行一次 — 程序的控制流程图
WHILE 循环结构
顺序结构
IF 选择结构
UNTIL 循环结构
CASE 多分支结构 选择结构
程序控制流图中的区域数 程序控制流图的边数 - 程序控制流图的结点数 + 2 程序控制流图中的判定结点数 + 1
4
C
6
A
D
E
13
F
G
8 19
B
15 22
I
区域数:4 边数 - 结点数 + 2 = 10 – 8 +2 = 4 判定结点数 + 1 = 3 + 1 = 4