第18章 白盒测试
软件测试技术基础课后习题答案
解:软件缺陷产生的主要原因有:需求规格说明错误;设计错误;程序 代码有误;其他。其中在需求分析阶段引入的缺陷最多,修复的成本又 最低。
4. 当用户登录某网站购物完毕并退出后,忽然想查查购物时付账 的总金额,于是按了浏览器左上角的“退回”按钮,就又回到了 退出前的网页,你认为该购物软件有缺陷吗?如果有,属于哪 一类?
解:有缺陷。其所属类别与软件产品说明书的要求有关。
5. 什么是软件测试?简述其目的与原则。
解:软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺 陷而展开的贯穿整个软件开发生命周期,对软件产品(包括阶段性产 品)进行验证和确认的活动过程。
测试目的:(1)证明:获取系统在可接受风险范围内可用的信 心;尝试在非正常情况和条件下的功能和特性;保证一个工作产品是完 整的并且可用或可被集成。 (2)检测:发现缺陷、错误和系统不足; 定义系统的能力和局限性;提供组件、工作产品和系统的质量信息。 (3)预防:澄清系统的规格和性能;提供预防或减少可能制造错误的 信息;在过程中尽早检测错误;确认问题和风险,并且提前确认解决这 些问题和风险的途径。
8. 简述软件测试过程。
解:软件测试过程主要包括如下6个活动:测试计划;测试需求分析; 测试设计;测试规程实现;测试执行;总结生成报告。
9. “软件测试能够保证软件的质量”这句话对吗?软件测试和软件 质量之间是什么关系?
解:不对。软件测试是保障软件质量的手段之一,但不是唯一手段。测 试是产品高质量的必要非充分条件,软件测试不能决定软件质量。
快速原型模式首先构造一个功能简单的原型系统,然后通过对原型 系统逐步求精,不断扩充完善得到最终的软件系统。原型系统在扩充完 善过程中不断被检查、测试和修改。
白盒测试
条件覆盖
A=2,B=0,X=4 (沿路径ace执行) A=1,B=1,X=1 (沿路径abd执行)
条件覆盖
条件覆盖
条件覆盖
对例2中的所有条件取值加以标记。 对于第一个判断:
条件x>3 取真值为T1,取假值为-T1 条件z<10 取真值为T2,取假值为-T2
对于第二个判断:
条件x=4 取真值为T3,取假值为-T3 条件y>5 取真值为T4,取假值为-T4
测试覆盖标准
测试覆盖标准
上页小程序的流程图,其中包括了一个执行 达20次的循环。那么它所包含的不同执行路 径数高达520(=1013)条,若要对它进行 穷举测试,覆盖所有的路径。假使测试程序 对每一条路径进行测试需要1毫秒,同样假 定一天工作24小时,一年工作365 天, 那 么要想把如图所示的小程序的所有路径测试 完,则需要3170年。
判定/条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个 判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果 也至少执行一次,换句话说,即是要求各个判断的所有可能的条件取值组 合至少执行一次;
条件组合覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判 断的所有可能的条件取值组合至少执行一次;
分支覆盖
对例1的程序,如果设计两个例子,使 它们能通过路径ace和abd,或者通过路 径acd和abe,就可达到“判定覆盖”标 准,为此,可以选择输入数据为:
① A=3,B=0,X=1 (沿路径acd执行); ② A=2,B=1,X=3(沿路径abe执行)
分支覆盖
A=3,B=0,X=1 (沿路径acd执行) A=2,B=1,X=3 (沿路径abe执行)
入口
a (x>3)&&(z<10) No c b Yes 执行语句块1
软件测试技术及方法
软件测试技术及方法第一章软件测试技术软件测试是软件开发生命周期中必不可少的环节,主要是为了验证软件是否能够满足用户和开发者的需求。
下面介绍一些常见的软件测试技术:1. 黑盒测试:在此测试方法中,测试人员并不知道系统内部的工作原理,只对输入输出的结果进行检测。
黑盒测试能够验证系统的功能是否满足需求,但无法检测系统内部的错误。
2. 白盒测试:白盒测试方法主要是通过对源代码的分析,检查程序的内部结构是否符合要求。
白盒测试能够找出程序中的逻辑错误和代码位置问题,协助开发人员解决问题。
3. 灰盒测试:灰盒测试方法是黑盒测试和白盒测试的结合体,既考虑测试人员对系统的外部功能,还考虑了他们对于系统的内部实现的一定程度的认识。
主要用于中等复杂的系统进行测试。
4. 压力测试:在多用户同时操作或者数据流非常大的情况下,测试系统是否能够承受大量用户的访问请求。
通过压力测试可以找出系统存在的性能瓶颈,以便优化系统。
5. 安全测试:测系统在安全性方面是否具备可靠、完善的特性。
其重点在于防范系统被病毒、木马、黑客等攻击行为所侵犯。
6. 兼容性测试:在不同的操作系统、浏览器和设备上测试系统是否可以正常运行。
7. 回归测试:在系统升级或者添加新功能后,重新进行测试,以确保之前无错的部分依旧能够按照预期运行。
第二章软件测试方法在进行软件测试时,需要遵循一定的测试流程和方法。
以下是一些常见的软件测试方法:1. 白盒测试和黑盒测试的组合:白盒测试用以测试程序的内部结构,而黑盒测试用以测试程序的外部行为,二者结合可以找出进一步的错误。
2. 自动化测试:通过自动化测试脚本,可以减少人工测试的劳动力和时间,并提高测试的覆盖率和准确性。
3. 模拟测试:通过人为模拟真实场景,如网络故障或者流量超载等,以验证系统是否可以正常工作及如何应对异常情况。
4. 冒烟测试:在系统功能测试前进行简单的测试,验证系统是否可以正常运行。
如果无法通过冒烟测试,则不必进行更详细的测试。
软件测试技术及其应用
软件测试技术及其应用第一章:引言软件测试是在软件开发过程中,对软件系统进行验证和验证的过程。
它是确保软件质量和可靠性的关键步骤之一。
随着软件规模的增长和复杂性的提高,软件测试技术也日益成为软件开发过程中不可或缺的一部分。
本章将介绍软件测试的定义、重要性以及测试过程中的关键概念。
1.1 软件测试的定义软件测试是在软件开发过程中对软件系统进行验证和验证的过程。
它的目标是发现软件系统中的错误、缺陷和缺陷,并确保软件的质量和可靠性。
软件测试是软件开发生命周期中的关键步骤之一,可以帮助开发团队识别和纠正软件中的问题,提高软件的可靠性和稳定性。
1.2 软件测试的重要性软件测试在软件开发过程中起着至关重要的作用。
它可以帮助开发团队识别和纠正软件中的问题,提高软件的质量和可靠性。
以下是软件测试的几个重要方面:1.2.1 提高软件质量软件测试可以帮助开发团队发现和纠正软件中的错误和缺陷,确保软件的质量。
通过对软件进行全面的测试,可以提高软件的可靠性和稳定性,减少由于软件错误和缺陷引起的问题。
1.2.2 降低风险软件测试可以帮助开发团队降低风险。
通过检测和纠正软件中的问题,可以减少由于软件错误和缺陷引起的问题。
这可以提高软件系统的可靠性,同时降低项目失败的风险。
1.2.3 提高用户体验软件测试可以帮助开发团队提高用户体验。
通过对软件进行全面的测试,可以确保软件的功能和性能达到用户的期望。
这可以提高用户对软件的满意度,增加用户的忠诚度。
1.3 软件测试的关键概念在进行软件测试时,有几个关键概念需要了解:1.3.1 测试用例测试用例是一组输入、预期输出和执行条件的规范,用于测试软件系统的特定功能或特性。
它们是测试过程中的基本构建块,用于验证软件的正确性和完整性。
1.3.2 测试计划测试计划是指确定测试范围、测试目标、测试资源和测试进度的计划。
它是软件测试过程中的指导文件,用于确保测试的完整性和一致性。
1.3.3 缺陷管理缺陷管理是指跟踪、记录和解决软件系统中发现的问题和缺陷的过程。
软件测试(第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 . 假如星期一测试软件的某一功能时,每小时能发现一个新的软件故障,那么星期二会以什么频率发现软件故障?第一感觉就是与第一天(星期一)的一样,既然前一天发现的频率以每小时都有新的故障,说明软件的缺陷很高,所以第二天也可能有同样的频率。
白盒测试
二、白盒测试的常用方法
6、组合覆盖 、
条件组合覆盖是指设计若干个测试用例,执行被测试程序时,程 序中每个判断条件的的内部判断式的各种真假组合可能都至少被 执行一遍。可见,满足条件组合覆盖的测试用例组一定满足判断 覆盖、条件覆盖和判断/条件覆盖。 在上述示例程序段中,每个判定各包含有两个条件,这两个条件 在判定中有8种可能的组合:
一、什么是白盒测试
4、控制流图 、
控制流图的特点:
具有唯一入口节点,即源节点,表示程序段 的开始语句; 具有唯一出口节点,即汇节点,表示程序段 的结束语句; 节点由带有标号的圆圈表示,表示一个或多 个无分支的源程序语句; 控制边由带箭头的直线或弧表示,代表控制 流的方向。
一、什么是白盒测试
4、控制流图 、
1、覆盖率测试 、
白盒测试技术的常见方法之一就是覆盖测试,它 是利用程序的逻辑结构设计相应的测试用例。测 试人员要深入了解被测程序的逻辑结构特点,完 全掌握源代码的流程,才能设计出恰当的用例。 根据不同的测试要求,覆盖测试可以分为语句覆 盖、判断覆盖、条件覆盖、判断/条件覆盖、条件 组合覆盖和路径覆盖。
A=2为true,记为T3; A=2为false,记为-T3; X>1为true,记为T4; X>1为false,记为-t4;
二、白盒测试的常用方法
4、条件覆盖 、
测试用例 Test Case 1 Test Case 5 A,B,X 2,0,3 1,1,1 执行路径 ace abd 覆盖条件 T1,T2,T3,T4 -T1,-T2,-T3,-T4
一、什么是白盒测试
4、控制流图 、
白盒测试是针对软件产品内部逻辑结构进行测试 的,测试人员必须对测试中的软件有深入的理解, 包括其内部结构、各单元部分及之间的内在联系, 还有程序运行原理等等。因而这是一项庞大并且 复杂的工作。为了更加突出程序的内部结构,便 于测试人员理解源代码,可以对程序流程图进行 简化,生成控制流图(Control Flow Graph)。 简化后的控制流图是由节点和控制边组成的。
白盒测试
案例: 案例:选择排序
public void select_sort ( int a[ ] ) { int i, j, k, t, n = a.length; for ( i = 0; i<n-1; i++ ) { k = i; for( j = i + 1; j < n; j++ ) { if ( a[j] < a[k] ) k = j; } if ( i != k ) { t = a[k]; a[k] = a[i]; a[i] = t; } }}
A
B
白盒测试
白盒测试方法:
控制流测试
逻辑覆盖 路径测试
数据流测试 基于程序片的测试
1 控制流图
控制流图是退化的程序流程图,图中每 个处理都退化成一个结点,流线变成连 接不同结点的有向弧。 控制流图将程序流程图中结构化构件改 用一般有向图的形式表示。
控制流图
在控制流图中用圆“○”表示节点,一 个圆代表一条或多条语句。 控制流图中的基本元素:
√ ×
语句覆盖 Case1:A=2, B=0, X=3
a F b F d T (A>1) AND (B=0) T c X=X/A
(A=2) OR (X>1)
e
X=X+1
Case2:A=2, B=1, X=3
a F b F d T
语句覆盖
此语句未覆盖
(A>1) AND (B=0)
T c X=X/A
a (A>1) AND (B=0) b T c X=X/A 错写成X<1 错写成 F (A=2) OR (X>1) d T e X=X+1
因此判定覆盖仍是弱的覆盖标准。 因此判定覆盖仍是弱的覆盖标准。
白盒测试——精选推荐
⽩盒测试⽩盒测试(White-box Testing,⼜称逻辑驱动测试,结构测试)是把测试对象看作⼀个打开的盒⼦。
利⽤⽩盒测试法进⾏动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
⽩盒测试⼜称为结构测试和逻辑驱动测试。
⽩盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
测试⽅法:六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能⼒呈由弱⾄强的变化。
语句覆盖每条语句⾄少执⾏⼀次。
判定覆盖每个判定的每个分⽀⾄少执⾏⼀次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满⾜判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每⼀种组合⾄少出现⼀次。
路径覆盖使程序中每⼀条可能的路径⾄少执⾏⼀次。
⽩盒测试也称结构测试或逻辑驱动测试,它是知道产品内部⼯作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进⾏,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确⼯作,⽽不顾它的功能,⽩盒测试的主要⽅法有逻辑驱动、基路测试等,主要⽤于软件验证。
"⽩盒"法全⾯了解程序内部逻辑结构、对所有逻辑路径进⾏测试。
"⽩盒"法是穷举路径测试。
在使⽤这⼀⽅案时,测试者必须检查程序的内部结构,从检查程序的逻辑着⼿,得出测试数据。
贯穿程序的独⽴路径数是天⽂数字。
但即使每条路径都测试了仍然可能有错误。
第⼀,穷举路径测试决不能查出程序违反了设计规范,即程序本⾝是个错误的程序。
第⼆,穷举路径测试不可能查出程序中因遗漏路径⽽出错。
第三,穷举路径测试可能发现不了⼀些与数据相关的错误。
要求:1.保证⼀个模块中的所有独⽴路径⾄少被使⽤⼀次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运⾏所有循环;4.检查内部数据结构以确保其有效性。
白盒测试
白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。
利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
白盒测试又称为结构测试和逻辑驱动测试。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
如何挑选白盒测试工具白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。
白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。
软件测试教学PPT-白盒测试
逻辑覆盖法
路径覆盖 寻找程序地路径地方法 单个判断语句地路径计算 单个循环语句地路径计算 有嵌套判断或循环时地路径计算
基本路径法
基本路径测试法是在程序控制流图地基 本上,通过分析控制构造地环路复杂,导 出基本可执行地路径集合,从而设计测 试用例地方法。
在基本路径测试,设计出地测试用例要 保证在测试程序地每条可执行语句至少 执行一次。
需求使用程序地控制流图行可视化表达。
基本路径法
程序地控制流图 是描述程序控制流地一种图示方法。其,
圆圈称为控制流图地一个结点,表示一个 或多个无分支地语句或源程序语句;箭头 称为边或连接,代表控制流。 在将程序流程图简化成控制流图时,应注 意: 在选择或多分支结构,分支地汇聚处应有 一个汇聚结点; 边与结点圈定地区域叫做区域,当对区域 计数时,图形外地区域也应记为一个区域。
基本路径法
程序地控制流图
基本路径法
环路复杂度 环路复杂度是一种为程序逻辑复杂提供定
量测度地软件度量 有以下三种方法用于计算环路复杂度: 流图区域地数量对应于环路地复杂度; 给定流图G地环路复杂度V(G),定义为
V(G)=E-N+二,其E是流图边地数量,N是流 图结点地数量; 给定流图G地环路复杂度V(G),定义为 V(G)=P+一,其P是流图G判定结点地数量。
T一,T二,-T三,T四 一,七
T一,-T二,T三,T四 二,五
-T一,T二,-T三,-T四 -T一,-T二,-T三,-T
四
T一,T二,T三,-T四
《软件白盒测试》课件
03 白盒测试的常用技术
代码覆盖技术
添加项标题
语句覆盖:确保每个语句都被执行至少一次
添加项标题
判定覆盖:确保每个判定(if、else、switch等)都被执行至少一次
添加项标题
条件覆盖:确保每个判定中的每个条件都被执行至少一次
添加项标题
路径覆盖:确保程序中的每个路径都被执行至少一次
添加项标题
循环覆盖:确保每个循环都被执行至少一次,包括循环体和循环条件
软件白盒测试
,
汇报人:
目录 /目录
01
点击此处添加 目录标题
04
白盒测试的实 践过程
02
软件白盒测试 概述
05
白盒测试的优 缺点
03
白盒测试的常 用技术
06
白盒测试工具 介绍
01 添加章节标题
02 软件白盒测试概述
定义和概念
软件白盒测试: 一种软件测试方 法,通过分析程 序的内部结构和 逻辑,验证程序 的正确性和完整 性。
感谢您的观看
汇报人:
添加项标题
数据流覆盖:确保程序中的数据流都被执行至少一次,包括输入、输出和内部数据流
路径覆盖技术
定义:通过执行所有可能的路径来测试软件 优点:能够全面覆盖软件的所有路径,提高测试覆盖率 缺点:需要大量的测试数据,可能导致测试时间过长 应用场景:适用于逻辑复杂的软件系统,如操作系统、数据库管理系统等
析和改进
测试用例设计
确定测试目标:明确测试的目的和范 围
设计测试用例:根据测试目标设计测 试用例
执行测试用例:按照测试用例执行测 试
记录测试结果:记录测试过程中的异 常情况和测试结果
分析测试结果:分析测试结果,找出 问题所在
白盒测试PPT课件
-18/XX-
2.判定覆盖
基本思想是:设计若干测试用例,运行被测程序,使得程序中每个 判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满 足。
单击此处编辑母版标题样式
规范 标准 专业 高效
-19/X1X-
2.判定覆盖……续1
¬ a=2,b=1 ,c=6可 覆盖判断M的Y分支 和判断Q的Y分支;
单击此处编辑母版标题样式
规范 标准 专业 高效
-8/XX-
4.1.2静态结构分析
静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调 用关系图、函数内部控制流图。其中,函数调用关系图以直观的图形 方式描述一个应用程序中各个函数的调用和被调用关系;控制流图显 示一个函数的逻辑结构,它由许多节点组成,一个节点代表一条语句 或数条语句,连接结点的叫边,边表示节点间的控制流向。
1.语句覆盖……续2
【优点】 :可以很直观地从源代码得到测试用例,无须细分每条判 定表达式。
【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在的语句 ,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全 面的考虑。语句覆盖是最弱的逻辑覆盖。
单击此处编辑母版标题样式
规范 标准 专业 高效
单击此处编辑母版标题样式
规范 标准 专业 高效
-4/XX-
4.1.1 代码检查
代码检查包括代码走查、代码审查等
单击此处编辑母版标题样式
规范 标准 专业 高效
-5/XX-
代码走查
有组织的代码走查在编码阶段去除错误的成本是在软件发布阶段去除 错误成本的1/92
全部的代码是否都需要走查 最大的问题是劝说开发者要遵循一定的标准
单击3此. 处条编件辑覆盖母版标题样式
软件工程白盒测试
软件工程白盒测试1.概述1.1 目的1.2 背景这个章节提供了软件工程白盒测试的背景信息,包括其定义、重要性和应用领域等。
1.3 参考资料这个章节列出了用于软件工程白盒测试的参考资料,包括相关文献、标准和规范等。
2.测试计划2.1 目标这个章节描述了软件工程白盒测试的目标,包括发现软件中的缺陷和问题,提高软件质量等。
2.2 测试范围这个章节确定了软件工程白盒测试的范围,包括测试的软件模块、功能和特性等。
2.3 测试方法这个章节介绍了软件工程白盒测试的方法,包括静态测试、动态测试和结构测试等。
2.4 测试工具这个章节列出了用于软件工程白盒测试的工具,包括代码覆盖工具、静态代码分析工具和调试工具等。
3.测试设计3.1 测试用例这个章节描述了针对软件工程白盒测试的测试用例设计,包括输入数据选择、预期结果和测试执行过程等。
3.2 测试策略这个章节确定了针对软件工程白盒测试的测试策略,包括测试方法的选择、测试覆盖率要求等。
3.3 编写测试代码这个章节介绍了编写软件工程白盒测试代码的要求,包括代码风格、命名规范和注释要求等。
4.测试执行4.1 测试环境这个章节描述了软件工程白盒测试的测试环境要求,包括硬件、软件和配置等。
4.2 测试步骤这个章节描述了软件工程白盒测试的测试步骤,包括测试数据准备、测试代码编译和运行等。
4.3 测试结果这个章节记录了软件工程白盒测试的测试结果,包括通过的测试用例和发现的缺陷等。
5.测试总结5.1 测试评估这个章节对软件工程白盒测试进行评估,包括测试效果、测试覆盖率和缺陷密度等。
5.2 问题和建议这个章节记录了软件工程白盒测试过程中发现的问题和提出的改进建议。
6.附件本文档涉及的附件包括测试用例、测试代码和测试报告等。
7.法律名词及注释这个章节列出了本文档中涉及的法律名词及其注释,以便读者理解相关法律概念。
白盒测试循环测试
本节内容就讲到这里,谢谢,再见!
// 先执行再判断
代
int i=1,s=0,a=100;
int i=1,s=0,a=100;
码
while (i<=a)
do
实
{
{
例
s=s+i;
s=s+i;
i=i+1;
i=i+1;
}
}while (i<=a);
明度对比
色
彩
明度对比是色彩间深浅层次的对比,画面由黑白来显示,黑与白等差分九
的
级,最深为1,最亮为9,画面中所占面积最大的色彩深浅,决定了画面的
循环边界条件测试
设 i 为实际循环次数,n 是最大循环次数, 那么测试 用例应包括:
① 直接跳过循环体,让i=0; ② 只执行一遍循环体,让i=1; ③ 执行两遍循环体,让i=2; ④ 执行m遍循环体(2< m < n-1) ; ⑤ 执行n -1遍循环体,让i=n-1; ⑥ 正好执行 n 遍循环体,让i=n; ⑦ 超出最大循环次数。
环仍旧取最小值; ③ 向外扩展循环体,测试下一个循环; ④ 所有外层循环变量取最小值; ⑤ 其余内层嵌套的循环体取典型值; ⑥ 继续本步骤直到所有的循环体均测试完毕。
复合循环结构测试
3. 测试非结构循环 测试非结构循环是一件十分令人头痛的事情,最好的 方法是重新设计循环体结构,使其变成嵌套循环或者连接 循环。
Z 路径覆盖测试
对于两种基本循环结构,Z 路径覆盖测试都会把它们简化为 一个简单的判定结构,如图所示。
Z 路径覆盖测试
先判断后循环,由于判断结果有真 也有假,所以变成了一个有两个分支的 IF 结构。如图中的分支和分支
软件工程白盒测试
白盒测试白盒测试以程序的结构为依据,所有又称为结构测试。
早期的白盒测试把注意力放在流程图的各个判定框,使用不同的逻辑覆盖标准来表达对程序进行测试的详尽程度。
随着测试技术的发展,人们越来越重视对程序执行路径的考察,并且用程序图代替流程图来设计测试用例。
为了区分这两种白盒测试技术,以下把前者称为逻辑覆盖测试,后者称为路径测试。
一、逻辑覆盖测试逻辑覆盖测试法(Logic Coverage Testing)考察的重点是图中的判定框(菱形框)。
因为这些判定若不是与选择结构有关,就是与循环结构有关,是决定程序结构的关键成分。
按照对被测程序所作测试的有效程度,逻辑覆盖测试可由弱到强区分为5种覆盖标准:举例说明:有一个程序段如下:bd(a)语句覆盖:设计若干个测试用例,运行被测程序,使得每一个可执行语句至少执行一次。
例如在上图所给出的例子中,正好所有的可执行语句都在路径L1(a->c->e)上,所以选择路径L1设计测试用例,就可以覆盖所有的可执行语句。
L1(a->c->e)={(A>1) and (B=0) } and {(A=2) or (x/A>1)}=(A=2) and (B=0) or {(A>1) and (B=0) and (x/A>1)}测试用例可以设计为:【(2,0,4),(2,0,3)】覆盖ace【L1】从程序中每个可执行语句都得到执行这一点来看,语句覆盖的方法似乎能够比较全面的检验每一个可执行语句。
但与后面介绍的其它覆盖相比,语句覆盖是最弱的逻辑覆盖准则。
(b)判定覆盖所谓判定覆盖就是设计若干个测试用例,运行被测试程序,使得程序中每个判断的取真分支和取假分支至少经历一次。
判定覆盖又称为分支覆盖。
如上例如果选择路径L1(a->c->e)和L2(a->b->d),可得满足要求得测试用例:L2(a->b->d)={(A<=1) or (B≠0) } and {(A≠2) and (x<=1)}=( 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】如果选取路径L3(a->b->e)和L4(a->c->d)L3(a->b->e)={(A<=1) or (B≠0) } and {(A=2) or (x>1)}={( A<=1) and (x>1)} or {( B≠0) and (A=2) } or {( B≠0) and (x>1)}L4(a->c->d)={(A>1) and (B=0) } and {(A≠2) and (x/A<=1)}还可以得到另一组可用得测试用例:【(2,1,1),(2,1,2)】覆盖abe【L3】【(3,0,3),(3,1,1)】覆盖acd【L4】所有测试用例得取法不唯一。
软件测试5-白盒测试
3.导出基本路径集,确定只包含独立路径的
基本路径集;
4.根据第3步,设计测试用例;
独立路径
独立路径:至少沿一条新的边移动的路径
路径1:1-11
1 2,3 6 7 9 10 8 4,5
路径2:1-2-3-4-5-10-1-11 路径3:1-2-3-6-8-9-10-1-11 路径4:1-2-3-6-7-9-10-1-11
程序图的圈复杂度计算方法(三种):
V(G)=e – n + 2p;
e:边数,n:节点数,p:出口数 当p=1时,V(G)= e – n + 2; V(G)=P+1;P是图G 中判定节点的数量 程序图中区域的数量对应于环路的复杂性;
白盒测试分类
白盒测试分为静态白盒测试和动态白盒测试。 静态测试通过评审文档和阅读代码等方式测 试软件。可以利用专门的静态测试工具分析 代码中的缺陷,也可以人为去测试,但静态 测试对测试人员的编码和测试等水平要求很 高。
常用动态白盒测试
逻辑覆盖测试 路径测试 程序插桩法
5.2 逻辑覆盖
e
X=X+1
Case2:A=2, B=1, X=3
a F b
F d T
语句覆盖
此语句未覆盖
(A>1) AND (B=0)
T
c X=X/A
(A=2) OR (X>1)
e
X=X+1
语句覆盖用例设计
用例 Case1 Case2
A 2 2
B 0 1
X 3 3
执行路径 ace abe
√ ×
Case1:A=2, B=0, X=3
3.条件覆盖
设计若干测试用例,使程序的每个判定
软件测试教学PPT-白盒测试
基本路径法
基本路径测试法适用于模块地详细设计 与源程序。其步骤如下:
以详细设计或源代码为基本,导出程序 地控制流图;
计算得出控制流图G地环路复杂度V(G); 确定线性无关地路径地基本集; 生成测试用例,确保基本路径集中每条
路径地执行。
基本路径法
对于下面地程序,假设输入地取值范围是 1000<year<2001,使用基本路径测试法为变量 year设计测试用例,使满足基本路径覆盖地要 求。
基本路径法
根据源代码绘制程序地控制流图如下
基本路径法
通过控制流图,计算环路复杂度V(G)=区域数=4。 线形无关地路径集为: 1-3-8 1-2-5-8 1-2-4-7-8 1-2-4-6-8 设计测试用例: 路径1:输入数据:year=1999 预期结果:leap=0 路径2:输入数据:year=1996 预期结果:leap=1 路径3:输入数据:year=1800 预期结果:leap=0 路径4:输入数据:year=1600 预期结果:leap=1
从覆盖源程序语句地详尽程度,可以分为 语句覆盖 判定覆盖 条件覆盖 条件判定覆盖 条件组合覆盖 路径覆盖
逻辑覆盖法
语句覆盖 指地是代码中所有地语句都至少执行一
遍 虽然覆盖了可执行语句,但是不能检查
判断逻辑是否有问题 是很不充分地一种测试,是最弱地逻辑
覆盖准则 测试覆盖率工具:如
The End
白盒测试方法选择
选择白盒测试方法地几条经验: 在测试中,可采取先静态再动态地组合方式,先进
行代码检查与静态结构分析,再进行覆盖测试; 利用静态分析地结果作为引导,通过代码检查与
动态测试地方式对静态分析地结果做进一步确认; 覆盖测试是白盒测试地重点,一般可使用基本路
白盒测试技术案例详解
白盒测试技术案例详解白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。
其中运用最为广泛的是基本路径测试法。
基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
包括以下4个步骤和一个工具方法:1. 程序的控制流图:描述程序控制流的一种图示方法。
2. 程序圈复杂度:McCabe复杂性度量。
从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
3. 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。
4. 准备测试用例:确保基本路径集中的每一条路径的执行。
工具方法:图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。
程序的控制流图:描述程序控制流的一种图示方法。
圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句。
流图中的箭头称为边或连接,代表控制流任何过程设计都要被翻译成控制流图。
如何根据程序流程图画出控制流程图?在将程序流程图简化成控制流图时,应注意:n 在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。
n 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
如下图所示n 如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。
例如:1 if a or b2 x3 else4 y对应的逻辑为:独立路径:至少沿一条新的边移动的路径基本路径测试法的步骤:o 第一步:画出控制流图流程图用来描述程序控制结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第18章白盒测试18.1综述本节将提供两个实例,详细地说明白盒测试中如何使用静态测试和动态测试方法,以及使用这两种方法进行测试时相应的测试内容和测试用例的设计过程。
根据白盒测试的特点,一般我们可以在单元测试以及集成测试阶段,使用白盒测试的各种方法,到系统测试阶段,软件的系统结构已经确定,功能接口的黑盒测试将居于主要地位,代码级的白盒测试退居次位:当使用黑盒测试的方法检查错误时,可以通过代码检查定位错误的具体位置,或通过使用性能测试分析性能的瓶颈所在,或通过内存测试,分析出错的原因是否是由于内存使用不当所致。
与其他测试相类似,白盒测试的流程也由测试计划、测试设计、测试实施、测试结果分析等阶段组成。
前面章节中已经介绍了白盒测试中主要使用的静态测试和动态测试方法,下面将分别使用两个例子进行具体说明。
∙在静态测试中将使用一个汽车车身控制的软件示例,测试内容包括静态结构分析和代码质量度量。
∙在动态测试中将使用一个计算器的程序示例,测试内容为覆盖率测试。
18.2静态测试汽车车身控制软件用C语言编写,是用于汽车控制的软件,主要包括电动车窗、遥控中央门锁与防盗、外车灯、车内灯、后窗及后视镜加热延时和手动雨刮控制6个模块。
∙测试环境。
①硬件。
普通PC机;CPU:PIII 600Hz;内存:128MB;硬盘:10GB。
②软件。
操作系统:Windows 2000 Professional中文版;第18章白盒测试565编译系统:Visual Studio 6.0。
∙测试工具。
使用Telelogic公司的Logiscope 5.1作为测试工具。
18.2.1 静态测试结果结构分析使用测试工具Logiscope对上述汽车车身控制软件进行静态结构分析时,可以得到以下几种主要图形。
∙函数调用关系图:以直观的图形方式描述了一个应用程序中各个函数的调用和被调用关系;∙模块控制流图:显示一个函数的内部逻辑结构;∙内部文件调用关系图:以图形方式描述了应用程序中各个文件间的调用和被调用关系。
1.函数调用关系图如图18-1所示是汽车车身控制软件的函数调用关系图,图中的每一个方块代表一个函数,方块内的数字代表函数的编号。
从图可知,该应用程序从上到下分为7层,包括44个函数,函数之间没有存在递归调用的情况,结构比较简单。
图18-1 函数调用关系图44个函数中编号为18、19、37、40和42的函数被调用次数较高,其他函数功能的566软件评测师教程Array正确实现严重依赖于这些函数,它们的质量好坏对系统的影响明显要高于其他函数,因此可认为属于重要函数,需要加强对它们的测试,例如使用较高的代码覆盖率要求等措施;其他函数属于次要函数,可以采用较低的代码覆盖率要求。
2.文件调用关系图文件调用关系图与函数调用关系图相类似,它体现了文件之间的依赖关系。
如图18-2所示即为上述汽车车身控制软件的文件调用关系图,其中的方块代表各源文件及其编号,由图可知,该软件包括6个源文件,按结构组成可分为5层,结构简单。
图18-2 文件调用关系图3.模块控制流图如图18-3所示是被测汽车车身控制软件中函数n_Pulse_Counter的模块控制流图。
通过该图可以看出,该函数有一个入口和一个出口,3个不嵌套的判断结点,结构比较简单,易于实现和理解,属于非常好的结构。
图18-3 模块控制流图该汽车车身控制软件的模块控制流图绝大部分与如图18-3所示相似,均属于比较好的结构,没有存在重大缺陷。
18.2.2 静态质量度量分析1.质量度量模型静态质量度量法通过使用质量度量模型分析程序的复杂性,引用复杂度参数来度量软件是否易于理解、是否可读、是否方便维护、是否可靠。
建立的质量度量模型遵循ISO 9126、DO-178B、SEI/CMM标准,描述了Halstead、McCabe的度量方法学和质量因素(可维护性、可重用性等)和质量准则(可测试性、可读性等),使用多种参数,包括圈复杂度,强化复杂度,设计复杂度,集成复杂度,代码行数,Halstead复杂度等,例如:可执行语句数、运算符总数、运算符频度、操作数总数、操作数频度、函数中算第18章 白盒测试 567子和算法出现频度、函数内调用函数的总数、直接调用函数的数量、调用本函数的上级函数数量、goto 语句数量、类和函数的扇入扇出、注释行的比例、语句函数、平均语句长度、函数参数数量、基本圈复杂度,可以用于全面而系统地评价整个软件系统的质量。
在静态质量度量中,质量度量模型是我们的测试用例。
2.测试结果上述汽车车身控制软件的静态质量度量结果包括如下内容。
∙ Metrics Kiviat 图; ∙Criteria Kiviat 图;∙ Criteria 分布图; ∙ Factors 分布图。
其中对于程序中的每个函数或方法,我们测量出其所有Metrics 参数,并使用一个多轴极坐标系来表示,所得到的图称为Metrics Kiviat 图;按照各Metrics 参数所属的Criteria 划分后所得到的Kiviat 图称为Criteria Kiviat 图;按照质量模型将软件所有模块的Criteria 取值分级后,统计各级别模块的比例,用直方图表示,即可得到Criteria 分布图;同样地按照质量模型将软件所有模块的Factors 取值分级后,用饼图表示各级别模块的比例,即可得到Factors 分布图。
(1)Metrics Kiviat 图如图18-4所示是函数EXT_LMP 的Metrics Kiviat 图。
图中的每一根极轴代表一个Metrics 参数,所有参数的归一化最小值和最大值组成两个同心圆,当参数的取值位于这两个同心圆之间时,表示满足质量模型要求,否则该参数不符合模型质量要求。
NBCALLINGCOMF A VGS STMTVGIND_CALLSHIER_CPX LEVELS图18-4 函数EXT_LMP 的Metrics Kiviat 图568软件评测师教程函数EXT_LMP的VOCF、LVAR和STMT参数值超过标准要求。
其中,VOCF值过高,意味着该函数包含太近似的,甚至是重复的语句,这样在维护时,由于许多改动可在每处重复的代码处进行,从而引入错误的风险增大,这样的缺陷,可以通过将原代码重复语句分解为可多处调用的子函数来改进。
LVAR值过高也会对维护带来不利,因为不得不花更多的精力理解这些变量,当对变量理解有误时会带来风险,存在这样的缺陷时,首先要确认局部变量已全部被使用,如果变量数仍过多,应该将函数分解成子函数来处理。
STMT值过高表示函数内可执行语句较多,经验表明,越多的可执行语句数代表着可执行的操作越多,也意味要花更多的精力去理解该函数,因此对一个函数内的可执行语句数应有限制。
这样的缺陷可以采取以下方法解决:将函数分解,提供更好的层次性,提高可维护性。
(2)Criteria Kiviat图如图18-5所示为函数EXT_LMP的Criteria Kiviat图,对于每一个函数均可得到一个Criteria Kiviat图。
图18-5 函数EXT_LMP 的Criteria Kiviat图(3)Criteria 分布图如图18-6 (a)、(b)、(c)、(d)、(e)、(f)、(g)所示是Criteria层7个分类标准:function_ TESTABILITY、function_STABILITY、function_CHANGEABILITY、function_ ANALYZABILITY、relativeCall_ANALYZABILITY、relativeCall_STABILITY和relativeCall_TESTABILITY的各等级模块分布比例图。
第18章 白盒测试569% function_TESTABILITYEXCELLENTGOODFAIRPOOR100(a)% function_STABILITYEXCELLENTGOODFAIRPOOR100(b)% function_CHANGEABILITYEXCELLENTGOODFAIRPOOR10 20 30 40 50 60 70 80 90 100(c)图18-6 Criteria 分布图软件评测师教程 570% function_ANALYZABILITYEXCELLENTGOODFAIRPOOR10 20 30 40 50 60 70 80 90(d)% relativeCall_TESTABILITYEXCELLENTGOODPOOR10 20 30 40 50 60 70 80 90 100(e)% relativeCall_STABILITYEXCELLENTGOODPOOR10 20 30 40 50 60 70 80 90 100(f)图18-6 (续)第18章 白盒测试 571% relativeCall_ANALYZABILITYEXCELLENTGOODPOOR0 10 20 30 40 50 60 7080 90100(g)图18-6 (续)从图18-6可以看出,该软件Criteria 层除relativeCall_Stability 参数外,其他参数属于优良等级的模块均超过了80%,符合要求。
(4)Factors 分布图如图18-7所示为Factors 分布图。
(a )function_MAINTAINABILITY(b )relativeCall_MAINTAINABILITY图18-7 Factors 分布图软件评测师教程572 对于一般的应用软件来说,其Factors 层属于优良等级的模块应超过80%,否则,需要根据度量结果进行修改,以满足该要求。
该应用软件Factors 层function_MAINTAI- NABILITY 和relativeCall_MAINTAINABILITY 参数达到良好以上等级的模块超过80%,满足要求。
18.3 覆盖率测试在覆盖率测试中我们将使用一个计算器的程序示例,该程序用C++语言编写,实现整数与浮点数的四则运算功能,其界面如图18-8所示。
∙ 测试环境。
① 硬件。
普通PC 机;CPU :PIII 600Hz ; 内存:128MB ;硬盘:10GB 。
② 软件。
操作系统:Windows 2000 Professional 中文版;编译系统:Visual Studio 6.0。
∙ 测试工具。
使用Applied Microsystems Corporation 公司的 CodeTest 3.5作为测试工具。
由于篇幅所限,我们将针对其中一个主要的函数“CCacl2Dlg::OnGo()”设计测试用例,该函数响应用户点击按钮“=”的操作,完成计算功能。