第九章 路径测试补充内容

合集下载

软件测试过程中的路径覆盖测试技术与效果评估

软件测试过程中的路径覆盖测试技术与效果评估

软件测试过程中的路径覆盖测试技术与效果评估在软件测试过程中,路径覆盖测试技术是一种常用的测试方法,通过覆盖程序代码中不同的路径,从而提高测试用例的覆盖率。

路径覆盖测试有助于发现代码中潜在的错误和漏洞,并确保软件能够在各种场景下正常运行。

本文将介绍路径覆盖测试的原理和技术,并评估其在软件测试中的效果。

路径覆盖测试是基于程序代码的控制流来设计测试用例,以覆盖程序中不同的路径。

路径是指从程序的入口到出口的执行序列,每个路径都有一定的可能性会发生错误。

路径覆盖测试技术通过设计一系列测试用例,使得每个路径都被至少覆盖一次,从而增加发现潜在错误的机会。

在路径覆盖测试中,常用的技术包括语句覆盖、判定覆盖、条件覆盖、分支覆盖等。

语句覆盖是最基本的路径覆盖测试技术,它要求测试用例覆盖代码中的每一个语句。

通过执行每个语句,可以验证代码的正确性,并发现潜在的错误。

然而,仅仅覆盖语句可能不足以发现所有的错误,因为一个语句可能对应多个路径。

为了提高测试的覆盖率,判定覆盖、条件覆盖和分支覆盖等技术可以被使用。

判定覆盖要求测试用例覆盖每个判定(if语句)的两个可能结果,以检查代码在不同条件下的行为。

条件覆盖则要求测试用例覆盖每个逻辑表达式的两个可能取值,以检查代码在不同条件下的运行情况。

而分支覆盖是在条件覆盖的基础上,要求测试用例覆盖每个分支(循环或条件语句)的两个可能结果。

路径覆盖测试技术在软件测试中的效果取决于测试用例设计的质量。

好的测试用例设计能够更全面地覆盖程序中的不同路径,从而发现更多的错误。

然而,路径覆盖测试也存在一些挑战。

程序的路径可能非常多,可能很难设计出覆盖所有路径的测试用例。

路径覆盖测试可能无法全面覆盖程序中的所有代码,因为某些路径可能很难到达或很难触发。

路径覆盖测试需要比较大的测试资源,包括时间、人力和计算资源。

因此,在实际测试中,需要权衡资源和覆盖率之间的关系,选择适合的测试方法和策略。

为了评估路径覆盖测试技术在软件测试中的效果,可以使用一些评估指标来度量测试用例的质量和覆盖率。

9第九章路径测试

9第九章路径测试
n1 e1 e2 n2 e4
从n1到n6的一条路径;
从n1到n5的一条路径;
从n3到n6的一条路径; n1和n3之间的一条半路径; n2和n4之间的一条半路径;
n3
e3 e5
n4
n5
n6
n7
n5和n6之间的一条半路径;
可到达性矩阵
• 定义: – 有m个节点的有向图 D=(V,E)的可达 性矩阵是一种m×m 矩阵R=(r(i,j)), 其中r(i,j)是1,当 n1 且仅当从节点i到节点j n2 有一条路径,否则该 n3 元素为0。 n4
路径与半路经
• 路径
– 定义:(有向)路径是一系列边,使得对 于该序列中的所有相邻边对偶ei、ej来说, 第一条边的终止节点是第二条边的初始节 点。
– 环路是一个在同一个节点上开始和结束的 有向路径
• 半路径
– 定义: (有向)半路径是一系列边,使得 对于该序列中至少有一个相邻边对偶ei、 ej来说,第一条边的初始节点是第二条边 的初始节点,或第一条边的终止节点是第 二条边的终止节点。 – 有向路径有时又叫链。
n5
n6 n7
n1
n3
e1 e2
n2
e4 n4 e5 n6 n7 n5
e3
n1 n2 n3 n4 n5 n6 n7
0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0
0
0 0
0
0 0
0
0 0
0
0 0
0
0 0
0
0 0
0
0 0
• 有向图的可到达矩阵可以通过相邻矩阵计算 如下: R = I + A + A2 + A 3+„„+ Ak 其中k是D最长路径的长度,I是单位矩阵。

软件测试(第2版 慕课版)课后习题答案

软件测试(第2版 慕课版)课后习题答案

第一章软件测试基础课后习题答案1.什么是软件测试?软件测试发现一个应用从开始到结束时的错误,测试是一个过程。

(Glenford J.Myers 提出对软件测试的定义)测试是发现错误而执行的一个程序或系统的过程测试以发现故障为目的,是为了发现故障而执行程序过程2.软件测试涉及哪几个关键问题?软件测试的经济性原则谁来测试(who)测试什么(what)什么时候测试(when)怎样进行测试(how)测试的停止标准是什么(which)3.为什么说软件需求说明是软件故障的最大来源?软件需求是描述了系统有哪些功能,功能操作,性能如何等问题,是开发阶段的重要文档,也是后期软件开发的重要依据。

如果软件需求一开始就错了,在后面处理过程则会把错误放大,这样使得修复起来成本就是提升。

4.简述软件测试的复杂性和经济性。

复杂性1.完全测试是不现实的2.软件测试是有风险的3.杀虫剂现象4.缺陷的不确定性经济性软件测试是软件生命期中费用消耗最大的环节。

测试费用除了测试的直接消耗外,还包括其他的相关费用5.分析最近发生的软件质量事故,并简要分析产生的原因。

具体案例具体分子6.启动Windows计算器,输入“6,000-6=”(逗号不能少),观察计算结果,这是软件故障吗?为什么?这是软件故障中的界面缺陷。

由于无法输入逗号,无法进行输入,当做一个界面缺陷,因为不符合需求,原本是小数点变成了逗号。

7.软件测试应遵循哪些重要的原则或方针?1.完全测试程序是不可能的2.软件测试是有风险的3.测试无法找到隐藏的软件故障4.存在的故障数量与发现的故障数量成正比5.杀虫剂现象6.并非所有软件故障都能修复7.一般不要丢弃测试用例8.应避免测试自己编写的程序9.软件测试是一项复杂且具有创造性的和需要高度智慧的挑战性任务8.假定无法完全测试某一程序,那么在决定是否应该停止测试时应考虑哪些问题?在工作中,常用的停止测试标准有五类:测试超过了预定时间,停止测试执行了所有测试用例但没有发现故障,停止测试使用特定的测试用例方法作为判断测试停止的基础正面指出测试完成要求,如发现并修改70个软件故障根据单位是见查出故障数量决定是否停止测试9 . 假如星期一测试软件的某一功能时,每小时能发现一个新的软件故障,那么星期二会以什么频率发现软件故障?第一感觉就是与第一天(星期一)的一样,既然前一天发现的频率以每小时都有新的故障,说明软件的缺陷很高,所以第二天也可能有同样的频率。

软件测试 9第九章路径测试

软件测试 9第九章路径测试

有向图的相邻矩阵
定义: 定义: – 有m 个节点的有向图D=(V,E) 个节点的有向图D= D=( 的相邻矩阵是一种m 矩阵: 的相邻矩阵是一种m×m矩阵: A=( )),a ,a( A=(a( i,j )),a(i,j)是 从节点i到节点j 1,当且仅当从节点i到节点j有一 条边,否则该元素为0 条边,否则该元素为0. – 有向图的相邻矩阵不一定是对称的. 有向图的相邻矩阵不一定是对称的. 其中行的和是节点的外度,列的和 其中行的和是节点的外度, 是节点的内度. 是节点的内度.
常用的程序图
续…………
If-Then-Else 条件 前测试环路 后测试环路
对于后面三种情况, 对于后面三种情况,请举出常用的程序语句
2 有向图
简单的说:有向图就是在图中增加了方向. 简单的说:有向图就是在图中增加了方向. 定义: 定义:
– – – – 有向图D=( 有向图D=(V,E)包含: D= 包含: 一个节点的有限集合: ……,n 一个节点的有限集合:V={n1,n2,……,nm}, 一个边的集合: ……,e 一个边的集合:E={e1,e2,……,ep}, 其中每条边e 是节点n 其中每条边ek=<ni, nj>,是节点ni, nj ∈ V的一 个对偶. 个对偶.
第三部分 结构性测试
图论 路径测试 数据流测试 结构性测试回顾
Software Testing
测试人员的图论
用于测试的图
1 程序图
程序图的定义
– 传统定义:节点是程序语句,边表示控制流 传统定义:节点是程序语句, – 改进定义:节点要么是整个语句,要么是语 改进定义:节点要么是整个语句, 句的一部份, 句的一部份,边表示控制流 串行 If-Then

软件测试之基本路径测试

软件测试之基本路径测试

软件测试之基本路径测试基本路径测试是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. 设计测试用例:对于每个基本路径,设计至少一个测试用例来覆盖该路径。

测试用例应该包括输入数据、预期输出和执行结果。

4. 执行测试用例:按照设计好的测试用例,逐一执行并记录执行结果。

如果某个测试用例无法通过,则说明该基本路径存在错误或缺陷。

5. 分析结果:根据执行结果分析程序中存在哪些错误或缺陷,并及时修复。

下面是一个简单示例:假设有以下代码片段:```pythondef max(a, b, c):if a > b:if a > c:return aelse:return celse:if b > c:return belse:return c```则其控制流图如下:```(1)|/ \(2) (3)| |(4) (5)| |(6) (7)| |(8) |\ /(9)```其中,数字表示程序中的行号。

根据控制流图,可以找出以下三个基本路径:- 1-2-4-6-8-9- 1-2-4-7-9- 1-3-5-7-9针对每个基本路径,可以设计如下测试用例:1. 输入:a=3, b=2, c=1;预期输出:3。

2. 输入:a=2, b=3, c=1;预期输出:3。

3. 输入:a=1, b=2, c=3;预期输出:3。

执行测试用例后,如果所有测试用例均能通过,则说明程序中不存在错误或缺陷;否则,需要根据执行结果分析并修复问题。

通过以上步骤进行基本路径测试,可以有效地检测程序中的错误和缺陷,并提高程序的质量和稳定性。

软件工程(第五版)--习题及答案---第九章

软件工程(第五版)--习题及答案---第九章

一、判断题1、(×)测试是为了验证该软件以正确地实现了用户的需求.2、(√)发现错误多的程序模块,残留在模块中的错误也多。

3、(×)白盒测试法是根据程序的功能来设计测试用例的。

4、(×)黑盒法是根据程序的内部逻辑来设计测试用例的.5、(√)确定测试计划是在需求分析阶段制定的。

6、(√)集成测试计划是在概要设计阶段制定的。

7、(√)单元测试是在编码阶段完成的.8、(√)集成测试工作最好由不属于该软件开发组的软件设计人员承担.9、(√)为了提高软件的测试效率,测试工作需要有测试工具的支持。

10、(×)在做程序的单元测试时,桩模块比驱动模块容易编写.二、选择题1、测试用例是专门为了发现软件错误而设计的一组或多组数据,它由(C)组成。

A、测试输入数据B、预期的测试输出数据C、测试输入与预期的输出数据D、按照测试用例设计方法设计出的数据2、测试和调试最大的不同在于(A).A、操作者的心理状态不同B、它们的行为取向不同C、使用的工具不同D、运用的方法不同3、一个成功的测试是(B)。

A、发现错误B、发现至今尚未发现的错误C、没有发现错误D、证明发现不了错误4、白盒法和黑盒法最大的不同在于(A).A、测试用例设计方法不同B、测试的任务不同C、应用的测试阶段不同D、基于的知识集不同5、单元测试阶段主要涉及(D)的文档。

A、需求设计B、编码和详细设计C、详细设计D、概要设计6、检查软件产品是否符合需求定义的过程称为(A)。

A、确认测试B、集成测试C、验证测试D、验收测试7、软件调试的目的是(B)。

A、发现错误B、改正错误C、改善软件的性能D、挖掘软件的潜能8、进行软件测试的目的是(A).A、尽可能多地找出软件中的错误B、缩短软件的开发时间C、减少软件的维护成本D、证明程序没有缺陷9、选择一个适当的测试用例,用于测试下面的程序,能达到判定覆盖的是(C)。

A、B、10、在进行单元测试时,常用的方法是(A ). A 、采用白盒测试,辅之以黑盒测试 B 、采用黑盒测试,辅之以白盒测试 C 、只使用白盒测试 D 、只使用黑盒测试11、白盒测试方法一般适合于(A )测试。

临床路径知识测试题及答案

临床路径知识测试题及答案

医院临床路径管理知识测试题一.选择题1.依据《实施临床路径管理试点医院目标数》要求,进一步扩充辖区内临床路径管理试点医院的数量,达到的三级甲等综合医院、的二级甲等综合医院开展临床路径管理的目标。

正确答案:BA .40% 10% B.50% 20% C.55% 25% D.60% 30%2.依据《关于进一步加强临床路径管理试点工作的通知》(卫办医政函〔2011〕574号)的要求,三级甲等综合医院要选取不少于个病种开展临床路径管理,二级甲等综合医院不少于个病种实施临床路径管理。

正确答案:AA .10 5 B.10 10 C.15 5 D.15 103.依据《关于进一步加强临床路径管理试点工作的通知》(卫办医政函)的要求,对于符合进入临床路径标准的患者,达到入组率不低于,入组后完成率不低于的目标。

正确答案:BA .40% 60% B.50% 70% C.55% 75% D.60% 80%4.依据《关于“十二五”期间推进临床路径管理工作的指导意见》的要求,各地区应扩大临床路径管理医院范围,到2015年末,辖区内三级医院、的二级医院应当开展临床路径管理工作。

正确答案:DA .70% 50% B.80% 60% C.90% 70% D.所有80%5.依据《关于“十二五”期间推进临床路径管理工作的指导意见》(卫医政发〔2012〕65号)的要求,各医院要在现有临床路径管理工作基础上,逐步增加临床路径管理专业和病种数。

力争2015年末,三级综合医院不少于个专业个病种开展临床路径管理,至少包括心血管介入、神经血管介入、骨关节植入治疗和肿瘤性疾病等病种。

正确答案:BA .10 50 B.15 60 C.20 70 D.25 706.依据《关于“十二五”期间推进临床路径管理工作的指导意见》(卫医政发〔2012〕65号)的要求,各医院要在现有临床路径管理工作基础上,逐步增加临床路径管理专业和病种数,对三级综合医院开展病种做了具体要求,至少包括、、和等病种。

临床路径考试试题及答案

临床路径考试试题及答案

临床路径考试试题及答案姓名:科室:得分:一、选择题,共10题,每题2分,共20分。

1、临床路径管理实施意义:(。

)A、规范医疗服务B、提高医疗质量、保证医疗安全。

C、控制医疗成本、减少资源浪费D、获得最佳服务E、以上都是2、临床路径病种选择遵循的原则:(。

)A、常见病、多发病。

B、治疗方案相对明确,技术相对成熟,诊疗费用相对稳定,疾病诊疗过程中变异相对较少。

C、结合医疗机构实际,优先考虑卫生行政部门已经制定临床路径推荐参考文本的病种。

D、A+B+CE、A+B3、变异的处理步骤:(。

)A、记录B、提出解决方法C、优化改进D、A+B+CE、A+B4、变异的原因分析包括:(。

)A、病情变化或出现并发症B、遇周末,调整日期。

C、病人要求(拒绝)使用抗生素/做该项检查/继续补液/继续住院/出院D、需要治疗其他疾病E、以上都是F、B+C+D5、临床路径实施效果评估内容包括:(。

)A、平均住院日数。

B、平均住院费用C、治愈好转率D、变异率E、变异原因分析F、顾客满意度G、以上都是。

H、A+B+C+F6、关于临床路径实施下列说法正确的是:(。

)A、临床路径是医生的事情,医生就可以完成。

B、患者不需要知道临床路径的实施。

C、临床路径的顺利实施需要患者、医生、护理人员的共同配合来完成D、经治医生对实施临床路径患者可以根据患者的病情随意调整治疗方案E、以上均不对7、临床路径管理的流程包括:(。

)A、计划准备阶段B、临床路径制定阶段C、临床路径实施阶段D、评价改进阶段E、以上均是8、临床路径实施流程包括:(。

)A、首诊医师完成患者检诊工作,对住院患者进行临床路径的准入评估。

B、符合准入的,按照临床路径确定的诊疗流程实施诊疗。

C、相关护理组在为患者做入院介绍时详细介绍其住院期间诊疗服务计划及需要给予配合的内容。

D、经治医师对当天诊疗项目完成情况及病情的变化,以及病情变异情况进行分析、处理,并做好记录。

E、医师在临床路径表中的治疗项目完成后,执行人在相应的签名栏签名。

第9章 路径测试

第9章 路径测试

白盒测试的特点:依据软件设计说明书进 行测试、对程序内部细节的严密检验、针 对特定条件设计测试用例、对软件的逻辑 路径进行覆盖测试。
白盒测试
白盒测试要求对被测程序的结构特性做到一定 程度的覆盖,并以软件中某类成分是否都已经 得到测试为准则来判断软件测试的充分性,也 称为基于覆盖的测试技术。 白盒测试主要检查内容:
六种覆盖测试方法
语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 组合覆盖 路径覆盖

语句覆盖(面)
语句覆盖:是最起码的结构覆盖要求, 语句覆盖要求设计足够多的测试用例, 使得程序中每条语句至少被执行一次。 优点:可以很直观地从源代码得到测试 用例,无须细分每条判定表达式。
语句覆盖
1、用语句覆盖准则对 该程序设计测试用例; 2、用分支覆盖准则对 该程序设计测试用例;
练习2
程序如下:
main() { int i,j,k,match; scanf(“%d%d%d,&i,&j,&k); if(i<=0‖j<=0‖k<=0‖i+j<=k‖i+k<=j‖j+k<=i) match=4; else if(i==j&&i==k&&j==k) match=1; else if(i==j‖i==k‖j==k) match=2; else match=3; printf(“match=%d\n”,match); }

对程序模块的所有独立的执行路径至少测试一次; 对所有的逻辑判定,取“真”与取“假”的两种情 况都至少测试一次; 在循环的边界和运行界限内执行循环体; 检查内部数据结构以确保其有效性。
白盒测试

第九章 路径测试概要

第九章 路径测试概要

Ex2: A,B,C,B,C,B,C,G 1
东北大学软件学院
McCabe的基路径算法
McCabe接下来开发了一种算法过程(叫做基线方法),用于 确定基路径集合。这种方法首先选择一个基线路径,应该 对应某个“正常案例”程序执行。这种方法有一定的随意 性, McCabe 建议选择都有尽可能多的判断节点的路径。 接下来重新回溯基线路径,依次“翻转”每个判断点,即 当节点的外度≥2时,必须取不同的边。
测试覆盖指标
测试覆盖指标,是度量一组测试用例覆盖(或执行)某个程 序程度的工具。
指标 C0 覆盖描述 所有语句
C1
C1P C2 Cd CMCC Cik Cstat C∞
所有DD-路径(判断分支)
所有判断的每种分支 C1覆盖+循环覆盖 C1覆盖+DD-路径的所有依赖对偶 多条件覆盖 包含最多k次循环的所有程序路径(通常k=2) 路径具有“统计重要性”的部分 所有可能的执行路径
第九章 路径测试
东北大学软件学院
程序图
定义 给定采用命令式程序设计语言编写的一段程序,其 程序图是一种有向图,图中的节点表示语句片段, 边表示控制流。( 完整语句是“默认”的语句片段 ) 。
东北大学软件学院
三 角 形 程 序 的 程 序 图
4
5
6 9
7
8
10 12 13 21 15 22 23 20
第一
A B
原始
在B处翻 转p1
p1:A-B-C-E-F-H-J-K-M-NO-最后
p2:A-B-D-E-F-H-J-K-M-NO-最后 p3:A-B-C-E-F-G-O-最后
不等边 三角形
不可行 不可行 等边三 角形
C E

软件测试第九章

软件测试第九章
4.无结构循环
不能测试,重新设计出结构化的程序后再进行测试。
9.3.2 变异测试
变异测试是一种故障驱动测试,即针对某一类特定程序故障进行的测试, 变异测试也是一种比较成熟的排错性测试方法。它可以通过检验测试数据集的 排错能力来判断软件测试的充分性。
总之,对程序进行变换的方法多种多样,具体操作要靠测试人员的实际经 验。通过变异分析构造测试数据集的过程是一个循环过程,当对源程序及其变 异体进行测试后,若发现某些变异体并不理想,就要适当增加测试数据,直到 所有变异体达到理想状态,即变异体集合中的每一个变异体在T上都存在错误。
(1)对最内层循环按照简单循环的测试方法进行测试,把其他外层循环 设置为最小值;
(2)逐步外推,对其外面一层的循环进行测试。测试时保持本次循环的 所有外层循环仍取最小值,而由本层循环嵌套的循环取某些“典型”值; 反复进行(2)中操作,向外层循环推进,直到所有各层循环测试完毕。
3.串接循环
如果串接循环的循环体之间是彼此独立的,那么采用简单循环的测试方法进 行测试。如 果串接循环的循环体之间有关联,例如前一个循环体的结果是后一个循环体的 初始值,那么需要应用嵌套循环的测试方法进行测试。
9.2 路径分析测试
着眼于路径分析的测试称为路径分析测试。完成路径测试的理想情况是做到 路径覆盖。路径覆盖也是白盒测试最为典型的问题。独立路径选择和Z路径覆盖 是两种常见的路径覆盖方法。
9.2.1 控制流图
白盒测试是针对软件产品内部逻辑结构进行测试的,测试人员必须对测试中 的软件有深入的理解,包括其内部结构、各单元部分及之间的内在联系,还有程 序运行原理等等。为了更加突出程序的内部结构,便于测试人员理解源代码,可 以对程序流程图进行简化,生成控制流图。

白盒测试-路径测试

白盒测试-路径测试

循环 m 次 m<n 分别循环 n­1,n 和 n+1 次 (2)嵌套循环 由最内层循环开始测试,所有外层的循环次数设置为最小,内层循环则按照简单循环测试方 法进行测试。
路径 1:4­14 路径 2:4­6­7­14 路径 3:4­6­8­10­13­4­14 径 4:4­6­8­11­13­4­14
步骤 1:画出控制流图 步骤 2:计算环形复杂度(可以得出四个独立的路径) 步骤 3:找出独立路径 步骤 4:设计测试用例 详细步骤见/html/10/n­76410.html 1、 循环测试 目的:检查循环结构的有效性 (1)简单循环 跳过整个循环 只循环一次 循环两次
白盒测试(二)
教学目标:
知识: 1. 理解路径测试方法的原理 2. 掌握循环测试方法 技能: 1. 利用路径测试方法设计测试用例 2. 上网搜索信息的能力
教学方法:
采取问题牵引方法引入新课,在新知识讲解过程中采取案例分析法
教学过程:
案例 1:根据下图给出的程序流程图,完成以下要求: (1)画出相应的控制流图。 (2)计算环形复杂度。 (3)给出相应的图矩阵。 (4)找出程序的独立路径集合。
1、控制流图: 图中的每一个圆称为流图的结点,代表一条或多条语句。 流图中的箭头称为边或连接,代表控制流 在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。 n 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
2、环形复杂度计算方法: Ø 控制流图中区域的数量对应于环形复杂度。 Ø 给定控制流图 G 的环形复杂度—V(G),定义为
V(G) = E­N+2 其中,E 是控制流图中边的数量,N 是控制流图中的节点数量。 Ø 给定控制流图 G 的环形复杂度—V(G),也可定义为

软件测试之基本路径测试

软件测试之基本路径测试

软件测试之基本路径测试软件测试之基本路径测试基本路径测试是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 环形复杂性环形复杂性是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于基本路径方法,计算所得的值定义了程序基本集的独立路径数量,并为我们提供了确保所有语句至少执行一次的测试数量的上界。

整理基本路径测试

整理基本路径测试

白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、根本路径测试法、域测试、符号测试、Z路径覆盖、程序变异.其中运用最为广泛的是根本路径测试法.根本路径测试法是在程序限制流图的根底上,通过分析限制构造的环路复杂性,导出根本可执行路径集合,从而设计测试用例的方法.设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次.在程序限制流图的根底上,通过分析限制构造的环路复杂性,导出根本可执行路径集合,从而设计测试用例.包括以下4个步骤和一个工具方法:1.程序的限制流图:描述程序限制流的一种图示方法.2.程序圈复杂度:McCabe复杂性度量.从程序的环路复杂性可导出程序根本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界.3.导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果.4.准备测试用例:保证根本路径集中的每一条路径的执行.工具方法:图形矩阵:是在根本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个根本路径集.程序的限制流图:描述程序限制流的一种图示方法.圆圈称为限制流图的一个结点,表示一个或多个无分支的语句或源程序语句QAYO同序结构.IF选择结构.限内循珞结构,CASE去分支结构/Until德环结构•,流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句流图中的箭头称为边或连接,代表限制流任何过程设计都要被译成限制流图.如何根据程序流程图画出限制流程图在将程序流程图简化成限制流图时,应注意:n在选择或多分支结构中,分支的会聚处应有一个会聚结点.n边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域.用流图表热的传涕读畦序*区嚅:由边和卿横勤加起来的区就, 计舞[域,不要忘记区域外的筱次•n如果判断中的条件表达式是由一个或多个逻辑运算符(OR, AND, NAND, NOR) 连接的复合条件表达式,那么需要改为一系列只有单条件的嵌套的判断.例如:1 if a or b3 else对应的逻辑为:独立路径:至少沿一条新的边移动的路径判断结点判断结点\根本路径测试法的步骤:o 第一步:画出限制流图流程图用来描述程序限制结构.可将流程图映射到一个相应的流图〔假设流程图的菱形决定框中不包含 复合条件〕.在流图中,每一个圆,称为流图的结点,代表一个或多个语句.一个处理方框序列和一个菱形 决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表限制流,类似于流程图中的箭头.一条 边必须终止于一个结点,即使该结点并不代表任何语句〔例如:if-else-then 结构〕.由边和结点限定的范围 称为区域.计算区域时应包括图外部的范围路径 1 : 1 -1 1 ** 路径 2 : 1--2-3-4-5-1.-1f] ]. .路径3: IN 二A6-8-9T0TTL对以上路径的遍历,就 是至少一次地执行了 程序中的所有语句…时 有下面的二国既 用根本路径灰际法诲■信星山〔说1 iR 熨旦m.她国或辑j.Iype 〕+,2- ini x=o ;4 3・履¥=.¥4+四hi 性口砥熟飒期一上.A 5. 「 6. lf(0==曲I 曲+, 7. { zy+Z; break; }* 6.eke**g,if(i=±iiyqR> 101Jt-Y + lOjf 11. 削8/ 12. *=v+N 口;"13. 上14.H画出其程序流程图和对应的限制流图如下第二步:计算圈复杂度圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的根本的独立路 径数目,为保证所有语句至少执行一次的测试数量的上界.独立路径必须包含一条在定义之前不曾用到的 边.有以下三种方法计算圈复杂度:流图中区域的数量对应于环型的复杂性程方标履国在割底国WfTAHiCS给定流图G的圈复杂度V(G),定义为V(G)=E-N+2 , E是流图中边的数量,N是流图中结点的数量给定流图G的圈复杂度V(G),定义为V(G)=P+1 , P是流图G中判定结点的数量.对应上面国中的图.夏桑度,计算如下;/•流回中有四个区域t *•¥g)=10弄边-白鳍盛〒之=4;*•做3t判定结点+J4, d第三步:导出测试用例根据上面的计算方法,可得出四个独立的路径.(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路.V(G)值正好等于该程序的彳立路径的条数.)U 路径1 : 4-14U 路径2 : 4-6-7-14U 路径3 : 4-6-8-10-13-4-14U 路径4 : 4-6-8-11-13-4-14根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径..第四步:准备测试用例为了保证根本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子根本路径集的测试用例是:举例说明:例:下例程序流程图描述了最多输入50个值〔以-1作为输入结束标志〕,计算其中有效的学生分数的个5&1S1:行工知输入数盛一.照国期!唯三0,吃着*就阻电g [更蛔口的累一个评谱期鳍果F x = 0* 路径 2m +-6-7-14-输入数据:jg&cjrdNyms LjTypfl=O^ 也瞬果;x=&5Sit3i ,4 :6-B -10-13-4-14'输人娥$ iE9£J9mo= l^T ype=l^ 预期理"里,K =10H膈俊七 4-6'B-11-13-4*14L (*>2.以行哈3 iniv=o ;* +. 5师值〔腐蹦期卜 5. (36. 网口==皿*7, {x=y+2; & 时51 9,讦〔1= =|口口的・x=y+LO;(11. 国与牛’12. x=y +20>13,break;州数、总分数和平均值.步骤1:导出过程的流图.步骤2:确定环形复杂性度量V(G):1)V(G)= 6 (个区域)2)V(G)=E N+2=16 V2+2=6其中E为流图中的边数,N为结点数;3)V(G)=P+1=5+1=6其中P为谓词结点的个数.在流图中,结点2、3、5、6、9是谓词结点.步骤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…步骤4:为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次.1)路径1(1-2-9-10-12)的测试用例:score[k]=有效分数值,当k < i ;score[i]= 1,2 <i <50;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average o2)路径2(1-2-9-11-12)的测试用例:score[ 1 ]= - 1 ;期望的结果:average =1 ,其他量保持初值.3)路径3(1-2-3-9-10-12)的测试用例:输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;期望结果:n1=50、且算出正确的总分和平均分.4)路径4(1-2-3-4-5-8- 2…)的测试用例:score[i]=有效分数,当i<50;score[k]<0 , k< i ;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average o举例说明:例:下例程序流程图描述了最多输入50个值(以-1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值.步骤1:导出过程的流图步骤2:确定环形复杂性度量V(G):1)V(G)= 6 (个区域)2)V(G)=E N+2=16 V2+2=6其中E为流图中的边数,N为结点数;3)V(G)=P+1=5+1=6其中P为谓词结点的个数.在流图中,结点2、3、5、6、9是谓词结点.步骤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 -步骤4:为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次.1)路径1(1-2-9-10-12)的测试用例:score[k]=有效分数值,当k < i ;score[i]= 1,2 <i <50;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average 2)路径2(1-2-9-11-12)的测试用例:score[ 1 ]= - 1 ;期望的结果:average =1 ,其他量保持初值.3)路径3(1-2-3-9-10-12)的测试用例:输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;期望结果:n1=50、且算出正确的总分和平均分.4)路径4(1-2-3-4-5-8- 2…)的测试用例:score[i]=有效分数,当i<50;score[k]<0 , k< i ;连接权为“俵示存在一个连接,在图中如果一行有两个或更多的元素“ 1,〞那么这行所代表的结点一定是一个判定结点,通过连接矩阵中有两个以上〔包括两个〕元素为“1的个数,就可以得到确定该图圈复杂度的另一种算法.2.3.3根本路径测试法根本路径测试法是在程序限制流图的根底上,通过分析限制构造的环路复杂性,导出基本可执行的路径集合, 从而设计测试用例的方法. 设计出的测试用例要保证在测试中程序的 每个执行语句至少执行一次.根本路径测试法的重点内容如下:程序的限制流图:描述程序限制流的一种图示方法.程序环形复杂度:McCabe 复杂性度量.从程序的环路复杂性可导出程序根本路径集合 中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必需的测试用例数目的 上界.导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果.准备测试用例:保证根本路径集中的每一条路径的执行.程序限制流图〔可简称流图〕是对程序流程图进行简化后得到的,它突出表示程序限制流的结构.程序限制流图是描述程序限制流的一种方式,其要点如下:1〕图形符号:圆圈代表一个结点,表示一个或多个无分支的语句或源程序语句. n1、总分sum 和平均分 average期望结果:根据输入的有效分数算出正确的分数个数 用拈特力2〕程序限制流边和点圈定的局部叫做区域.当对区域计数时,图形外的一个局部也应记为一个区域.3〕判断语句中的条件为复合条件〔即条件表达式由一个或多个逻辑运算符连接的逻辑表达式〔a and b〕〕时,那么需要改变复合条件的判断为一系列只有单个条件的嵌套的判断.结点由带标号的圆圈表示, 可代表一个或多个语句、一个处理框序列和一个条件判定框〔假设不包含复合条件〕.限制流线由带箭头的弧或线表示, 可称为边,它代表程序中的控制流.为了满足路径覆盖, 必须首先确定具体的路径以及路径的个数. 我们通常采用限制流图的边〔弧〕序列和节点列表示某一条具体路径.路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程.任何关于路径分析的测试都可以叫做路径测试.完成路径测试的理想情况是做到路径覆盖,但对于复杂性高的程序要做到所有路径覆盖〔测试所有可执行路径〕是不可能的.在不能实现所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么可以认为程序中的每个语句都已经检验过了,即到达了语句覆盖.这种测试方法就是通常所说的根本路径测试方法.根本路径测试方法是在限制流图的根底上,通过分析限制结构的环形复杂度,导出执行路径的根本集,再从该根本集设计测试用例.根本路径测试方法包括以下4个步骤:1〕画出程序的限制流图.2〕计算程序的环形复杂度,导出程序根本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必需的测试用例数目的上界.3〕导出根本路径集,确定程序的独立路径.4〕根据步骤3〕中的独立路径,设计测试用例的输入数据和预期输出.程序限制流图如图2-4所示.IF选择结构While楣环结构多分立结构{I洲循环结构技犬应力莪程序的环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度提供定量尺度的软件度量.将环形复杂度用于根本路径方法,可以提供程序根本集的独立路径数量,保证所有语句至少执行一次测试.独立路径是指程序中至少引入了一个新的处理语句集合或一个新条件的程序通路,包括一组以前没有处理的语句或条件的一条路径.通常环形复杂度以图论为根底,提供软件度量.可用如下方法来计算环形复杂度:1〕限制流图中区域的数量对应于环形复杂度.2〕给定限制流图G的环形复杂度V 〔G〕,其定义为:V (G) = E-N+2其中,E是限制流图中边的数量,N是限制流图中的节点数量.计算环形复杂度如图2-5所示.计算结果为节点数量N=8 ,导出边的数量E=10 〔用①、②、③、④、⑤、⑥、⑦、⑧、⑨、⑩编号表示〕,V 〔G〕 = E-N+2=10-8+2= 10 〔条边〕-8 〔个节点〕+ 2 = 4 ,导出独立路径用路径1、路径2、路径3、路径4编号表示.四、根本路径测试如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为根本路径测试.它是在程序限制流图的根底上,通过分析限制构造的环路复杂性,导出根本可执行路径集合,从而设计测试用例的方法.设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次.1.程序的限制流图限制流图是描述程序限制流的一种图示方法.根本限制构造的图形符号如图10-4-7所示.符号C称为限制流图的一个结点,一组顺序处理框可以映射为一个单一的结点.限制流图中的箭头称为边,它表示了限制流的方向,在选择或多分支结构中分支的会聚处,即使没有执行语句也应该有一个会聚结点.边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域.%-iNniMSjfi CASF 定力王干忤图10-4-7限制流图的各种图形符号如果判定中的条件表达式是复合条件时,即条件表达式是由一个或多个逻辑运算符(OR , AND ,NAND ,NOR)连接的逻辑表达式,那么需要改复合条件的判定为一系列只有单个条件的嵌套的判定.例如对应图10-4-8 (a)的复合条件的判定,应该画成如图10-4-8 (b)所示的限制流图.条件语句 ifaORb 中条件a和条件b 各有一个只有单个条件的判定结点.2 .计算程序环路复杂性进行程序的根本路径测试时,程序的环路复杂性给出了程序根本路径集合中的独立路径条数,这是确 保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界.所谓独立路径,是指包括一组以前 没有处理的语句或条件的一条路径.如在图 10-4-9 (b)所示的限制流图中,一组独立的路径是pathl : 1-11path2 : 1-2-3-4-5-10-1-11path3 : 1-2-3-6-8-9-10-1-11path4 : 1-2-3-6-7-9-10-1-11川眸结构】F 选探轴构MIlLFiSJaffi路径pathl , path2 , path3 , path4组成了图10-4-9 (b)所示限制流图的一个根本路径集.只要设计出的测试用例能够保证这些根本路径的执行,就可以使得程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试.根本路径集不是唯一的,对于给定的限制流图,可以得到不同的根本路径集.(a)程序流程图(b)限制流图图10-4-9程序流程图与对应的限制流图通常环路复杂性可用以下3种方法求得.(1)将环路复杂性定义为限制流图中的区域数.(2)设E为限制流图的边数,N为图的结点数,那么定义环路复杂性为V (G) = E-N+2(3)假设设P为限制流图中的判定结点数,那么有V (G) =P+1.由于图10-4-9 (b)所示限制流图有4个区域.其环路复杂性为4.它是构成根本路径集的独立路径数的上界.可以据此得到应该设计的测试用例的数目.3.导出测试用例利用逻辑覆盖方法生成测试用例,保证根本路径集中每条路径的执行.。

基本路径测试共6页word资料

基本路径测试共6页word资料

白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。

其中运用最为广泛的是基本路径测试法。

基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。

在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

包括以下4个步骤和一个工具方法:1. 程序的控制流图:描述程序控制流的一种图示方法。

2. 程序圈复杂度:McCabe复杂性度量。

从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。

3. 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。

4. 准备测试用例:确保基本路径集中的每一条路径的执行。

工具方法:图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。

程序的控制流图:描述程序控制流的一种图示方法。

圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句。

流图中的箭头称为边或连接,代表控制流任何过程设计都要被翻译成控制流图。

如何根据程序流程图画出控制流程图?在将程序流程图简化成控制流图时,应注意:n 在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。

n 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。

如下页图所示n 如果判断中的条件表达式是由一个或多个逻辑运算符(OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。

例如:1 if a or b2 x3 else4 y对应的逻辑为:独立路径:至少沿一条新的边移动的路径基本路径测试法的步骤:o 第一步:画出控制流图流程图用来描述程序控制结构。

基本路径测试_软件工程_[共4页]

基本路径测试_软件工程_[共4页]

128
这组测试用例覆盖了所有条件的可能取值的组合,覆盖了所有判断的可取分支,但路径漏掉了L4,测试还不完全。

6.2.7 路径测试
路径测试是设计足够的测试用例,覆盖程序中所有可能的路径。

若仍以图6-7为例,则可以
6.3 基本路径测试
上节的例子是个非常简单的程序段,只有4条路径。

但在实际问题中,一个不太复杂的程序,其路径都是一个庞大的数字。

如图6-6所示的程序竟有520条路径。

要在测试中覆盖这样多的路径是不现实的。

为解决这一难题,只得把覆盖的路径数压缩到一定限度内,如程序中的循环体只执行一次。

本节所介绍的基本路径测试就是这样一种测试方法,它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。

实施基本路径测试需要利用程序环路复杂性计算的McCabe方法(参看本书第5章5.5.1节)。

基本路径测试法适用于模块的详细设计及源程序,其主要步骤如下:
(1)以详细设计或源代码作为基础,导出程序的控制流图;
(2)计算得到的控制流图G的环路复杂性V(G);
(3)确定线性无关的基本路径集;
(4)生成测试用例,确保基本路径集中每条路径的执行。

下面以一个求平均值的过程averagy为例,说明测试用例的设计过程。

用PDL描述的averagy 过程如图6-9所示。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语句覆盖 判定覆盖
条件覆盖
判定-条件覆盖 条件组合覆盖
路径覆盖
东北大学软件学院
举例
a b F
(A>1)∧(B=0)
T
c
x=x/A
d
F
T
(A=2)∨(x>1)
e
x=x+1
东北大学软件学院
路径
L1 L2 L3 L4 ( ( ( ( a a a a c b b c e d e d ) ) ) )
第九章 路径测试补充内容
东北大学软件学院
结构性测试主要检查内容
1. 对程序模块的所有独立的执行路径至少测试一次; 2. 对所有的逻辑判定,取“真”与取“假”的两种情 况都至少测试一次; 3. 在循环的边界和运行界限内执行循环体;等等
东北大学软件学院
结构性测试的主要方法
逻辑覆盖,是以程序内部的逻辑结构为基础的设计测试 用例的技术,它属白盒测试。
【(2, 0, 4),(2, 0, 3)】覆盖 ace【L1】 如果将例子中的∧和∨互换,使用该用例仍可覆盖所有4 个可执行语句; 语句覆盖可能发现不了判断中逻辑运算中出现的错误; 东北大学软件学院
判定覆盖
判定覆盖就是设计若干个测试用例,运行被测程序,使得 程序中每个判断的取真分支和取假分支至少经历一次。
【(2, 0, 4), ace(L1) (2, 0, 3)】 【(1, 1, 1), abd(L2) (1, 1, 1)】
!T1 !T2 !T3 !T4 b,d
采用判定-条件覆盖,逻辑表达式中的错误不一定能够查 出来。 东北大学软件学院
分解例子
A>1
T
B=0
F
T
and
F
X=X/A
A=2
F
T
or
X>1
作 作 作 作 作 作 作 作
T1T2 T1!T2 !T1T2 !T1!T2 T3T4 T3!T4 !T3T4 !T3!T4
东北大学软件学院
条件组合覆盖测试用例
测试用例 【(2, 0, 4), 0, 3)】 【(2, 1, 1), 1, 2)】 【(1, 0, 3), 0, 4)】 通过路径 (2, ace(L1) (2, abe(L3) (1, abe(L3) 覆盖条件 T1 T2 T3 T4 T1 !T2 T3 !T4 !T1 T2 !T3 T4 覆盖组 合号 ① ⑤ ② ⑥ ③ ⑦
L1: (A=2) and (B=0) or (A>1) and (B=0) and (X/A>1) L2: (A<=1) and (X<=1) or (B<>0) and (A<>2) and (X<=1) 【(2, 0, 4),(2, 0, 3)】覆盖 ace【L1】 【(1, 1, 1),(1, 1, 1)】覆盖 abd【L2】
东北大学软件学院
语句覆盖
语句覆盖就是设计若干个测试用例,运行被测程序,使 得每一可执行语句至少执行一次。
在图例中,正好所有的可执行语句都在路径L1上,所以 选择路径 L1设计测试用例,就可以覆盖所有的可执行语 句。 L1:(A=2) and (B=0) or (A>1) and (B=0) and (X/A>1)
东北大学软件学院
条件覆盖测试用例
测试用例
【(2, 0, 4),(2, 0, 3)】 【(1, 0, 1),(1, 0, 1)】
通过路径 条件取值
ace(L1) abd(L2) T1 T2 T3 T4 !T1 T2 !T3 T4
覆盖分支
c,e b,d
【(2, 1, 1),(2, 1, 2)】
测试用例
如果将X>1错写成X<1,利用上面的测试用例仍可得到同样 的结果; 只是判定覆盖不能保证一定能查出在判断条件中存在的错 误; 东北大学软件学院
条件覆盖
条件覆盖就是设计若干个测试用例,运行被测程序,使得 程序中每个判断的每个条件的可能取值至少执行一次。 对于第一个判断: 条件 A>1 取真为 T1,取假为!T1 条件 B=0 取真为 T2,取假为!T2 对于第二个判断: 条件A=2 取真为 T3,取假为!T3 条件X>1 取真为 T4,取假为!T4
【(1, 1, 1), 1, 1)】
(1, abd(L2)
!T1 !T2 !T3 !T4
④ ⑧
东北大学软件学院
路径测试
路径测试就是设计足够的测试用例,覆盖程序中所有可能的 路径。
测试用例
【(2, 0, 4), 3)】 【(1, 1, 1), 1)】
通过路径
(2, 0, ace(L1) (1, 1, abd(L2)
F
T
X=X+1
东北大学软件学院
条件组合覆盖
条件组合覆盖就是设计足够的测试用例,运行被测程序, 使得每个判断的所有可能的条件取值组合至少执行一次。
记:① ② ③ ④ ⑤ ⑥ ⑦ ⑧
A>1, A>1, A≯1, A≯1, A=2, A=2, A≠2, A≠2,
B=0 B≠0 B=0 B≠0 X>1 X≯1 X>1 X≯1
abe(L3)
T1 !T2 T3 !T4
b,e
通过路径
条件取值
覆盖分支
【(1, 0, 3),(1, 0, 4)】
【(2, 1, 1),(2, 1, 2)】
abபைடு நூலகம்(L3)
abe(L3)
!T1 T2 !T3 T4
T1 !T2 T3 !T4
b,e
b,e
东北大学软件学院
判定--条件覆盖
判定-条件覆盖就是设计足够的测试用例,使得判断中 每个条件的所有可能取值至少执行一次,同时每个判断 的所有可能判断结果至少执行一次。 测试用例 通过路径 条件取值 T1 T2 T3 T4 覆盖分支 c,e
覆盖条件
T1 T2 T3 T4 !T1 !T2 !T3 !T4
【(1, 1, 2), 3)】
【(3, 0, 3), 1)】
(1, 1, abe(L3)
(3, 0, acd(L4)
!T1 !T2 !T3 T4
T1 T2 !T3 !T4
东北大学软件学院
相关文档
最新文档