4(2)第4章 白盒测试用例2-基本路径法解析
白盒测试中的路径长度分析技术
白盒测试中的路径长度分析技术在软件测试领域,白盒测试是一种重要的测试方法,旨在检查和评估程序内部结构的质量和可靠性。
路径长度分析技术是白盒测试中的一项关键技术,它帮助测试人员确定和评估软件代码中的各个路径的长度和复杂性。
本文将介绍路径长度分析技术以及其在白盒测试中的应用。
一、路径长度分析技术简介路径长度分析技术是一种定量评估软件程序中路径复杂性的方法。
在软件代码中,可能存在各种不同的路径,每个路径都可以被看作是一种不同的执行序列。
路径长度分析技术的目标是测量每个路径的长度,通过比较不同路径长度的差异以及与预期路径长度的比较,来评估和验证软件代码的正确性和可靠性。
路径长度分析技术通常使用一种特殊的指标来衡量路径的长度,这个指标是统计代码中的基本路径数。
基本路径是指软件代码中的最小独立路径,也就是说所有的执行路径都可以通过组合这些最小独立路径而得到。
通过计算基本路径数,可以得出软件代码中所有可能路径的数量,进而评估路径的复杂性和全面性。
二、路径长度分析技术的应用路径长度分析技术在白盒测试中有多种应用方式,主要包括以下几个方面:1. 测试用例生成:路径长度分析技术可以帮助测试人员生成全面、有效的测试用例,以尽可能覆盖软件代码中的各个路径,并发现其中的缺陷和问题。
通过分析路径长度,测试人员可以有针对性地生成测试用例,提高测试效率和覆盖率。
2. 缺陷检测:路径长度分析技术可以帮助测试人员检测和定位软件代码中潜在的缺陷和错误。
通过比较实际执行路径长度与预期路径长度的差异,可以发现代码中可能存在的异常逻辑、错误条件或遗漏情况。
测试人员可以根据路径长度分析的结果,有针对性地进行代码审查和调试,提高软件代码的质量和可靠性。
3. 性能评估:路径长度分析技术可以帮助测试人员评估软件代码的性能和效率。
通过统计各个路径的长度和执行频率,可以获得代码中各个路径的执行时间或资源消耗情况。
测试人员可以根据路径长度分析结果,优化代码中的性能瓶颈,提高软件的执行效率和响应速度。
软件白盒测试-基本路径测试
软件白盒测试-基本路径测试基本路径测试也是一种常用的白盒测试用例设计方法。
在实际工作中,即使一个简单的程序,路径数量往往也比较多,要在测试中覆盖所有的路径是不现实的。
而基本路径测试的方法就是一种简化路径数的测试方法,它是在分析程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证程序的每一个可执行语句至少执行一次。
1.1绘制控制流图控制流图是描述程序控制流的一种图示方法。
控制流图是退化的程序流程图,它是把程序流程图中的每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧。
这种图只描述程序内部的控制流程,完全不表现对数据的具体操作以及分支和循环的具体条件。
因此,它往往把一个简单的if语句与循环语句的复杂性看成是一样的,把嵌套的if语句与case语句的复杂性看成是一样的。
程序中的基本控制结构对应的图形符号如图1.1所示。
图1.1控制结构示意图图中的圆圈为控制流图的一个结点,它表示一个或多个无分支的源代码语句。
在绘制控制流图前,一般先画出程序的流程图,再把流程图映射成控制流图。
例如,有下面的函数。
void sort(int iRecordNum,int iType)1 {2 int x=0;3 int y=0;4 while (iRecordNum-- > 0)5 {6 if(0==iType)7 x=y+2;8 else9 if(1==iType)10 x=y+10;11 else12 x=y+20;13 }14 }其流程图如图1.2所示。
把流程图映射成对应的控制流图,如图1.3所示。
图1.2流程图图1.3控制流图映射关系如下。
一组顺序处理框可以映射为一个单一结点。
控制流图中的箭头表示了控制流的方向,类似于流程图中的流线,一条边必须终止于一个结点,但在选择或多分支结构中分支的汇聚处,即使没有可执行语句也应该绘制一个结点。
软件测试-实验2-白盒测试案例分析
实验 2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。
1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。
无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。
2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。
判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。
3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。
条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。
4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。
线性地增加了测试用例的数量。
5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。
软件测试-实验2-白盒测试案例分析
实验2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。
1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。
无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。
2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。
判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。
3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。
条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。
4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。
线性地增加了测试用例的数量。
5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。
白盒测试及其基本方法
⽩盒测试及其基本⽅法⼀、⽩盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进⾏,检验程序中的每条通路是否都能按预定要求正确⼯作。
这⼀⽅法是把测试对象看作⼀个打开的盒⼦,测试⼈员依据程序内部逻辑结构相关信息,设计或选择测试⽤例,对程序所有逻辑路径进⾏测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态⼀致。
⼆、概述⽩盒测试⼜称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
⽩盒测试是⼀种测试⽤例的设计⽅法,盒⼦对应的是被测试的测试,"⽩盒"法全⾯了解程序内部逻辑结构、对所有逻辑路径进⾏测试。
"⽩盒"法是穷举路径测试。
测试者必须检查程序的内部结构,从检查程序的逻辑着⼿,得出测试数据。
三、基本⽅法强度由低到⾼:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
(1)语句覆盖:就是设计若⼲个测试⽤例,运⾏被测程序,使得每⼀可执⾏语句⾄少执⾏⼀次。
(2)判定覆盖:使设计的测试⽤例保证程序中每个判断的每个取值分⽀⾄少经历⼀次。
(3)条件覆盖:条件覆盖是指选择⾜够的测试⽤例,使得运⾏这些测试⽤例时,判定中每个条件的所有可能结果⾄少出现⼀次,但未必能覆盖全部分⽀(4)判定条件覆盖:判定-条件覆盖就是设计⾜够的测试⽤例,使得判断中每个条件的所有可能取值⾄少执⾏⼀次,同时每个判断的所有可能判断结果⾄少执⾏,即要求各个判断的所有可能的条件取值组合⾄少执⾏⼀次。
(5)条件组合覆盖:在⽩盒测试法中,选择⾜够的测试⽤例,使所有判定中各条件判断结果的所有组合⾄少出现⼀次,满⾜这种覆盖标准成为条件组合覆盖。
(6)路径覆盖:是每条可能执⾏到的路径⾄少执⾏⼀次。
补充:(1)语句覆盖在所有的测试⽅法中是⼀种最弱的覆盖。
(2)判定覆盖和条件覆盖⽐语句覆盖强,满⾜判定/条件覆盖标准的测试⽤例⼀定也满⾜判定覆盖、条件覆盖和语句覆盖(3)路径覆盖也是⼀种⽐较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。
白盒测试技术(基本路径测试法)
控制流图的组成: 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
如何进行白盒测试技巧和步骤解析
如何进行白盒测试技巧和步骤解析白盒测试是软件测试中的一种重要测试方法,用于测试软件内部的结构、逻辑和代码。
通过白盒测试,测试人员可以深入了解软件的内部机制和实现细节,并通过技巧和步骤进行测试,以保证软件的质量和稳定性。
下面将介绍如何进行白盒测试的技巧和步骤解析。
一、了解软件结构和代码在进行白盒测试之前,首先需要对软件的结构和代码进行深入了解。
这包括阅读和分析软件设计文档、源代码和相关文档,熟悉软件的功能、模块和算法等。
通过深入了解软件的内部机制,可以有针对性地进行测试,提高测试的效果和覆盖率。
二、确定测试覆盖范围在进行白盒测试时,需要确定测试的覆盖范围。
根据软件的结构和代码,确定需要测试的模块、函数和代码段等。
可以通过结构化测试方法,如基本路径测试、控制流测试和数据流测试等,来确定测试的覆盖范围。
通过确定测试的覆盖范围,可以提高测试的有效性和效率。
三、设计测试用例在进行白盒测试时,需要设计合适的测试用例。
根据软件的结构和代码,设计测试用例,覆盖各种情况和路径。
可以使用黑盒测试的思想,设计输入数据和预期输出,同时结合软件的内部机制,设计特殊测试用例。
可以使用边界值测试、错误处理测试和异常测试等技巧,设计全面有效的测试用例。
四、编写测试代码在进行白盒测试时,需要编写测试代码。
根据设计的测试用例,编写测试代码,检查软件的运行结果和输出是否符合预期。
可以使用各种编程语言和工具,编写测试代码并执行测试。
通过编写测试代码,可以自动化执行测试,提高测试的效率和一致性。
五、执行测试并记录结果在进行白盒测试时,需要执行测试并记录测试结果。
根据设计的测试用例,执行测试代码,记录测试的运行结果和输出。
可以使用测试工具和框架,帮助执行和管理测试,并生成测试报告和日志。
通过执行测试并记录结果,可以对软件的质量和稳定性进行评估和改进。
六、分析测试结果和修复缺陷在进行白盒测试之后,需要分析测试结果并修复缺陷。
根据测试的运行结果和输出,分析软件存在的问题和缺陷,并进行修复。
白盒测试中的路径覆盖技巧与策略
白盒测试中的路径覆盖技巧与策略白盒测试(White Box Testing)是软件测试的一种方法,旨在对系统内部的逻辑结构和代码进行全面检查,以确保软件的正确性和质量。
路径覆盖是其中的一项重要技巧与策略,通过覆盖系统中的各个执行路径,有效提高测试的覆盖率,降低潜在的漏洞和错误。
一、基本概念与原理路径覆盖是指在白盒测试过程中,通过对程序中每个可能的路径进行测试,确保所有路径都得到覆盖的一种方法。
路径是程序执行的不同分支,包括条件分支、循环语句等。
覆盖率指的是在测试中覆盖到的路径比例,通常以百分比表示。
路径覆盖的原理是通过设计测试用例,使得每个路径都至少被执行一次,以达到全面覆盖的目的。
常用的路径覆盖方法包括语句覆盖、分支覆盖、条件覆盖、判定覆盖和路径覆盖等。
二、路径覆盖技巧与策略1. 语句覆盖(Statement Coverage)语句覆盖是最基本的路径覆盖技巧,要求测试用例至少触发程序中的每一条语句一次。
通过测试用例的设计,使得每个语句都至少被执行一次,确保代码的执行正确性。
2. 分支覆盖(Branch Coverage)分支覆盖是在语句覆盖的基础上新增的技巧,要求测试用例至少触发程序中每个条件分支的真假两种情况。
通过设计测试用例,使得每个分支的两个可能性都至少被执行一次,以测试程序在不同条件下的行为。
3. 条件覆盖(Condition Coverage)条件覆盖是在分支覆盖的基础上新增的技巧,要求测试用例至少触发程序中每个条件的真假两种情况。
通过设计测试用例,使得每个条件的两个可能性都至少被执行一次,以验证程序对条件的处理是否正确。
4. 判定覆盖(Decision Coverage)判定覆盖是在语句覆盖的基础上新增的技巧,要求测试用例至少覆盖到每个判定(决策)点,并使得其取到两种不同判定值的情况。
通过设计测试用例,使得每个判定点都至少被触发一次,以验证程序对不同判断情况的处理。
5. 路径覆盖(Path Coverage)路径覆盖是最为全面的覆盖技巧,要求测试用例覆盖到程序中所有的执行路径。
逻辑覆盖路径分析白盒测试方法
或
42
测试用例 覆盖分支 条件取值 【(1, 0, 3),(1, 0, 4)】 L3(b, e) T1T2 T3T4 【(2, 1, 1),(2, 1, 2)】 L3(b, e) T1T2T3T4
13
(二)动态白盒测试
动态白盒测试是指利用查看代码功能和 实现方式得到的信息来确定哪些要测试, 哪些不要测试,如何开展测试。 • 动态白盒测试的另一个常用名称是结 构测试,因为软件测试员可以查看并使 用代码的内部结构,从而设计和执行测 试。
•
14
• 软件人员使用白盒测试方法,主要 想对程序模块进行如下的检查:
– 对程序模块的所有独立的执行路径 至少测试一次; – 对所有的逻辑判定,取“真”与取 “假”的两种情况都至少测试一次; – 在循环的边界和运行界限内执行循 环体; – 测试内部数据结构的有效性,等。
15
• 对一个具有多重选择和循环嵌套的 程序,不同的路径数目可能是天文 数字。给出一个小程序的流程图, 它包括了一个执行20次的循环。 • 包含的不同执行路径数达520条,对 每一条路径进行测试需要1毫秒, 假定一年工作365 × 24小时,要想 把所有路径测试完,需3170年。
• 此阶段主要进行代码评审
4
(一)静态白盒测试
为什么要坚持编码标准和规范? • 可靠性。 • 可读性/维护性 • 移植性
5
(一)静态白盒测试
通用代码审查清单 数据引用错误; 数据声明错误; 计算错误; 比较错误; 控制流程错误; 子程序参数错误; 输入/输出错误; 其他检查。
白盒测试的基本方法
白盒测试的基本方法
1. 语句覆盖呀,这就像走迷宫时要把每条路都走一遍!比如在一个判断语句中,你得让程序把真和假两种情况都运行到呀。
2. 判定覆盖呢,类似于下棋要考虑到各种可能的走法!像一个 if-else 语句,得保证两种分支都被执行过哦。
3. 条件覆盖哇,就好像把每个零件都仔细检查一样!对于包含多个条件的判断,得把每个条件的不同情况都试过才行呢。
4. 判定条件覆盖呀,这好比既要走对路又要关注路上的细节!不但要让判定语句的所有分支执行,还要让条件的各种组合都出现呢。
5. 路径覆盖咧,就如同把整个地图的所有路线都走个遍!是要让程序运行经过所有可能的执行路径哦。
6. 接口测试呀,相当于检查不同部分之间连接是否顺畅!像两个模块之间的数据传递,得保证能准确无误呀。
7. 边界值测试哟,这就像行走在悬崖边要特别小心一样!比如输入范围的边界值,往往容易出问题呀,得重点关照呢。
总之,白盒测试的这些基本方法就像是我们手中的利器,能帮助我们把程序里隐藏的问题都找出来,让我们的软件变得更加可靠呀!。
4(2)第4章 白盒测试用例2-基本路径法
TC3
TC4
练习题
Logo
• 根据左图给出的程序流程 图,完成以下要求:
(1)画出相应的控制流 图。
(2)计算环形复杂度。
(3)给出相应的图矩阵。 (4)找出程序的独立 路径集合。
f b
c
3
d
4
e
5
• 在控制流图中只 有两种图形符号, 它们是: 1. 节点:以标有编 号的圆圈表示。 2. 控制流线或弧: 以箭头表示。
1. 程序的控制流图
Logo
节点
1、标有编号的圆圈 2、程序流程图中矩形框所表示的处 理 3、菱形表示的两个甚至多个出口判 断 4、多条流线相交的汇合点
1. 程序的控制流图
设计测试用例
Logo
• 根据上一步得出的独立路径,涉及测试用例, 如下: 输入数据 预期输出 TC1 TC2 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
Logo
X=X/A
2
3
( a ) 流程图
1
A>1
B=0
2
X=X/A
4 (d ) 流程图 c 对应的流图
3
( c ) 详细流程图
1. 程序的控制流图
Logo
1. 程序的控制流图
Logo
2. 程序环路复杂性
Logo
• 环路复杂性即McCabe复杂性度量,在 进行程序的基本路径测试时,从程序 的环路复杂性可导出程序基本路径集 合中的独立路径条数。
• 程序的环路复杂性给出了程序基本 路径集中的独立路径条数,这是确 保程序中每个可执行语句至少执行 一次所必需的测试用例数目的上界。
第08课--白盒测试(2)—路径分析测试(基本路径测试)
上述测试用例覆盖了4个条件产生的8种情况。
3. V(G) = 边的数目-节点的数目 + 2
环复杂度
环复杂度
闭合区域的数目 = 5 二值判定节点个数 + 1 =4+1=5 边的数目-节点的数目 + 2 = 16-13+2=5
基本路径
实用的定义 一条路径是基本路径如果: 1. 是一条从起始节点到终止节点的路径. 2. 至少包含一条其它基本路径没有包含的边. (至 少引入一个新处理语句或一个新判断的程序通 路.) 注意:对于循环而言,基本路径应包含不执行循 环和执行一次循环体。
SWPU
案例分析3
——已知程序代码,根据基本路径测试法, 导出测试用例
SWPU
PROCEDURE averagy; * This procedure computes the averagy of 100 or fewer numbers that liebounding values; it also computes the total input and the total valid. INTERFACE RETURNS averagy, total.input, total.valid; INTERFACE ACCEPTS value, minimum, maximum; TYPE value[1:100] IS SCALAR ARRAY; TYPE averagy, total.input, total.valid, minimum, maximum, sum IS SCALAR; TYPE i IS INTEGER;
使用基本路径设计测试用例方法推导三角形问题的测试用例
第08课--白盒测试路径分析测试(基本路径测试)..
❖ 测试思想 ▪ 根据程序的控制流图找出一个模块所需测试的基本路径,根据这 些基本路径设计构造相应的测试用例
基本路径测试
❖ 设计步骤
1. 根据模块逻辑构造控制流图(Flow Graph) 2. 计算控制流图的环复杂度 (Cyclomatic Complexity) 3. 列出包含起始节点和终止节点的基本路径 4. 检查一下列出的基本路径数目是否超过控制流图的
环复杂度
❖ 含义
▪ 用V(G)表示 ▪ 用来衡量一个模块判定结构的复杂程度,在数量上
表现为独立的路径条数,是需要测试的基本路径数 目的上限。
环复杂度
❖ 计算公式
1. V(G) = 闭合区域的数目 由节点和边围成的封闭区域
• 这些封闭区域一定是不可再分的 • 包括周边的区域
2. V(G) = 二值判定节点个数 + 1. 3. V(G) = 边的数目-节点的数目 + 2
环复杂度
❖ 环复杂度
▪ 闭合区域的数目 = 5 ▪ 二值判定节点个数 + 1
=4+1=5 ▪ 边的数目-节点的数目 +
2 = 16-13+2=5
基本路径
❖ 实用的定义 ▪ 一条路径是基本路径如果: 1. 是一条从起始节点到终止节点的路径. 2. 至少包含一条其它基本路径没有包含的边. (至 少引入一个新处理语句或一个新判断的程序通 路.) 注意:对于循环而言,基本路径应包含不执行循环 和执行一次循环体。
顺序
条件
循环
控制流图
❖ 如果判定中的条件表达式是复合条件时,即条件表
白盒测试测试方法详解
白盒测试white-box testing1测试概述白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
在动态分析技术中,最重要的技术是路径和分支测试。
下面要介绍的六种覆盖测试方法属于动态分析方法。
测试方法白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
要求1.保证一个模块中的所有独立路径至少被使用一次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运行所有循环;4.检查内部数据结构以确保其有效性。
白盒测试的基本路径测试法
资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载白盒测试的基本路径测试法地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容白盒测试的基本路径测试法一、白盒测试的主要测试方法1、代码检查法2、静态结构分析法3、静态质量度量法4、逻辑覆盖法5、基本路径测试法(应用最广泛)6、域测试7、符号测试8、Z路径覆盖9、程序变异二、基本路径测试法1、定义:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
2、基本路径测试法的基本步骤1) 程序的控制流图:描述程序控制流的一种图示方法。
2)程序圈复杂度:McCabe复杂性度量。
从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
3)导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。
4)准备测试用例:确保基本路径集中的每一条路径的执行。
3、基本路径测试法的工具方法1)图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。
三、程序的控制流图控制流程图是描述程序控制流的一种图示方法。
圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句。
流图中的箭头称为边或连接,代表控制流。
任何过程设计都要被翻译成控制流图。
1、根据程序流程图化成控制流图在将程序流程图简化成控制流图时,应注意:1)在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。
2)边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 程序环路复杂性
• 程序环路复杂性计算方法(三种):
Logo
• (1)流图中区域的数量对应于环形 复杂度 • (2)给定流图G的环形复杂度V(G), 定义为V(G)=E-N+2, E是流图中边 的数量,N是流图中节点的数量。 • (3) V(G)=P+1, P是流图G中的判 定节点数。
2. 程序环路复杂性
• 程序的环路复杂性给出了程序基本 路径集中的独立路径条数,这是确 保程序中每个可执行语句至少执行 一次所必需的测试用例数目的上界。
2. 程序环路复杂性
Logo
• 独立路径:指包括一组以前没有处理 的语句或条件的一条路径。
• 从控制流图来看,一条独立路径是 至少包含有一条在其它独立路径中 从未有过的边的路径。
3. 导出测试用例
Logo
• 每个测试用例执行之后,与预期结果 进行比较。如果所有测试用例都执行 完毕,则可以确信程序中所有的可执 行语句至少被执行了一次。 • 必须注意,一些独立的路径,往往不 是完全孤立的,有时它是程序正常的 控制流的一部分,这时,这些路径的 测试可以是另一条路径测试的一部分。
软件测试
第4章 白盒测试方法 ——基本路径法
目录
1 2 3 4 5 6 基本路径法的思想 控制流图 环形复杂度(环路复杂性) 独立路径 基本路径测试步骤 实例应用
Logo
课堂测试
Logo
• 写出逻辑覆盖测试包含的六种 基本类型,并写出它们的基本 测试要求。 例: 1、语句覆盖:使程序中的***语 句至少测试一次。
1. 程序的控制流图
Logo
1. 程序的控制流图
Logo
区域
Logo
1. 程序的控制流图
Logo
• 复合条件的控制流图 如果判断中的条件表达式是由一个 或多个逻辑运算符 (OR, AND, ...) 连接的复合条件表达式,则需改为 一系列只有单个条件的嵌套的判断。
A>1 AND B =0
1
基本路径测试
• 基本路径测试法的步骤:
Logo
(1)以详细或源代码作为基础,导出程序 的控制流图。 (2)计算得到控制流图G的环路复杂度 V(G) (3)确定基本路径集,生成测试用例,确 保基本路径集中每条路径的执行。
• 例:如下所示的c语言函数: 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 break; 8 else 9 if(itype==1) 10 x=x+10; 11 else 12 y=y+20; 13 } 14 }
Logo
控制流线或弧
1、箭头 2、与程序流程图中的流线一致,表 明了控制的顺序 3、控制流线通常标有名字
1. 程序的控制流图
Logo
1. 程序的控制流图
Logo
• 在选择或多分支结构中,分支的汇 聚处应有一个汇聚节点。 • 边和结点圈定的区域叫做区域,当 对区域计数时,图形外的区域也应 记为一个区域。
图中的圈复杂度, 计算如下:
Logo
流图中有四 个区域; V(G)=10条边 -8结点+2=4; V(G)=3个判 定结点+1=4。
3. 导出测试用例
Logo
• 导出测试用例,确保基本路径集中 的每一条路径的执行。 • 根据判断结点给出的条件,选择适 当的数据以保证某一条路径可以被 测试到 — 用逻辑覆盖方法。
f b
c
3
d
4
e
5
• 在控制流图中只 有两种图形符号, 它们是: 1. 节点:以标有编 号的圆圈表示。 2. 控制流线或弧: 以箭头表示。
1. 程序的控制流图
Logo
节点
1、标有编号的圆圈 2、程序流程图中矩形框所表示的处 理 3、菱形表示的两个甚至多个出口判 断 4、多条流线相交的汇合点
1. 程序的控制流图
控制流图
Logo
• 程序流程图又称框图,是我们最熟悉,也 是最容易理解的一种程序控制结构的图形 表示了。在这种图上的框里面常常标明了 处理要求或者条件,但是,这些标注在做 路径分析时是不重要的。为了更加突出控 制流的结构,需要对程序流程图做一些简 化。
1. 程序的控制流图
1
a
Logo
1
2
2 4 5 3
基本路径测试
(1)画出程序的控制流图。
Logo
(2)计算程序的环形复杂度,导出程序 基本路径集中的独立路径条数,这是 确定程序中每个可执行语句至少执行 一次所必须的测试用例数目的上界。
基本路径测试
Logo
(3)导出基本路径集,确定程序的独立 路径。
(4)根据(3)中的独立路径,设计测试 用例的输入数据和预期输出。
• 一条路径这里指一条“程序通路”。
2. 程序环路复杂性
思考:根据独立路 径的定义,在图示 的控制流图中, 有哪些独立的路 径?
Logo
2. 程序环路复杂性
Logo
• path1:1 - 11 path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11 path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11 path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11 • 路径 path1,path2,path3,path4组 成了控制流图的一个基本路径集。
Logo
X=X/A
2
3
( a ) 流程图
1
A>1
B=0
2
X=X/A
4 (d ) 流程图 c 对应的流图
3
( c ) 详细流程图
1. 程序的控制流图
Logo
1. 程序的控制流图
Logo
2. 程序环路复杂性
Logo
• 环路复杂性即McCabe复杂性度量,在 进行程序的基本路径测试时,从程序 的环路复杂性可导出程序基本路径集 合中的独立路径条数。
B. 基本路径测试
本次课将会接触到的新知识:
1.控制流图
2.环形复杂度
3.独立路径
基本路径测试
Logo
• 路径测试就是从一个程序的入口开始, 执行所经历的各个语句的完整过程。 从广义的角度讲,任何有关路径分析 的测试都可以被称为路径测试。
• 完成路径测试的理想情况是做到路径 覆盖,但对于复杂性大的程序要做到 所有路径覆盖是不可能的。
基本路径测试
Logo
• 在不能做到所有路径覆盖的前提下, 如果某一程序的每一个独立路径都 被测试过,那么可以认为程序中的 每个语句都已经检验过了,即达到 了语句覆盖。这种测试方法就是通 常所说的基本路径测试法。
基本路径测试
Logo
• 基本路径测试方法是在控制流图的基 础上,通过分析控制结构的环形复杂 度,导出执行路径的基本集,再从该 基本集设计测试用例。基本路径测试 方法包括4个步骤: