《软件工程导论》PPT课件-第7章-软件测试_第1页
《软件工程导论》PPT课件-第7章-软件测试_第2页
《软件工程导论》PPT课件-第7章-软件测试_第3页
《软件工程导论》PPT课件-第7章-软件测试_第4页
《软件工程导论》PPT课件-第7章-软件测试_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程导论 本章学习目标: 了解软件测试的目标及准则 识记软件测试方法的分类 掌握软件测试过程 掌握常用的软件测试用例设计方法 了解软件调试的途径第7章 软件测试第7章 软件测试 7.1 软件测试目标 7.2 软件测试准则 7.3 软件测试方法 7.4 软件测试过程 7.5 测试用例的设计 7.6 软件调试1979 Myers Art of Software Testing为了发现错误而执行程序的过程重要观点: 测试是为了证明程序有错,而不是证明程序无错误; 一个好的测试用例在于它能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。7.1 软件测试目标 所有测试都应该能追

2、溯到用户需求; 测试开始之前制定测试计划; Pareto原理可应用于软件测试; 从小规模测试开始,并逐步进行大规模测试; 穷举测试是不可能的; 由独立的第三方从事测试工作。 7.2 软件测试准则(1)测试时是否需要执行被测软件? 静态测试 动态测试(2)测试是否针对内部结构和具体实现算法? 黑盒测试(Black-box testing) 白盒测试( White-box testing ) 灰盒测试(Gray-box testing)7.3 软件测试方法 定义: 对被测程序进行特性分析的方法的总称,这些方法的主要特性是无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量程序静态复

3、杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。7.3.1 静态测试 主要方法: - 个人代码走查 - 小组代码检查 - 代码评审 - 静态结构分析 - 代码质量度量7.3.1 静态测试 定义: 实际运行被测程序,通过输入相应的测试用例,判定执行结果(输入/输出的对应关系)是否符合要求,从而检验程序的正确性、可靠性和有效性。7.3.2 动态测试 主要方法: - 白盒测试 又称结构测试、逻辑驱动测试或基于程序的测试。它依赖于对程序内部细节的严密检验,针对特定条件设计测试用例,对软件的逻辑路径进行测试。因此采用白盒测试技术时,必须有设计规约及程序清单。 - 黑盒测

4、试 又称功能测试、数据驱动测试或基于规格说明的测试。它是一种从用户观点出发的测试。用这种方法进行测试时,把被测程序当作一个黑盒,不考虑程序内部结构和特性,测试者只考虑程序输入输出和程序功能,根据需求规格说明书来设计测试用例,推断测试结果的正确性。 7.3.2 动态测试白盒测试黑盒测试测试规划根据程序的内部结构,如语句的控制结构、模块间控制结构,以及内部数据结构等进行测试根据用户规格说明,以及体现它们的输入与输出之间的对应关系,特别是针对功能进行测试特点优点对程序内部逻辑进行覆盖测试。能站在用户立场,针对软件功能进行测试缺点无法检验程序的外部功能特性无法对程序内部欠缺部分进行测试无法测试程序内部

5、逻辑方法举例语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖基本路径覆盖 等价类划分边界值分析错误推测因果图法白盒测试与黑盒测试两类方法的对比 7.4 软件测试过程- 软件测试过程与开发过程是一个相反的过程。- 开发过程经历需求分析、概要设计、详细设计到编码等一系列逐步细化的过程,那么测试的单元测试、集成测试到系统测试是一个逆向的求证过程。- 测试过程主要是指代码调试之后的动态测试过程,测试的过程一般分为单元测试、集成测试、系统测试,有时还要增加用户的验收测试,在每次测试的过程中可能伴随着回归测试。7.4 软件测试过程软件测试的V模型7.4.1 单元测试- 概念 将每个模块作为一个独立的实体

6、来测试。用详细设计描述作指南,对重要的程序执行通路进行测试,以便发现模块内部的错误。发现编码和详细设计的错误。- 测试重点 模块间的接口 局部数据结构 重要的执行通路(选择、循环等) 出错处理通路 边界条件 不正确或不一致的数据类型说明 使用尚未赋值或尚未初始化的变量 错误的初始值或错误的缺省值 变量名拼写错误或书写错误 不一致的数据类型 调用本模块的输入参数是否正确; 本模块调用子模块时输入给子模块的参数是否正确; 全局/局部变量的定义和用法是否一致; 出错的描述是否难以理解 出错的描述是否能够对错误定位 显示的错误与实际的错误是否相符 对错误条件的处理正确与否 在对错误进行处理之前,错误条

7、件是否已经引起系统的干预等 7.4.1 单元测试 程序中是否存在死代码; 误解或错误的计算优先级; 精度错误; 表达式符号表示错误; 循环变量的使用错误; 普通合法数据是否正确处理; 普通非法数据是否正确处理; 边界内最接近边界的(合法)数据 是否正确处理; 边界外最接近边界的(非法)数据是否正确处理等。7.4.1 单元测试- 单元测试环境 驱动模块(Drive): 用来模拟被测试模块的上一级模块。驱动模块在单元测试中接收数据,将相关的数据传送给被测试模块,启动被测试模块,并打印相关结果。 桩模块(Stub): 用来模拟被测试模块工作中所有的调用模块,它们一般只进行很少的数据处理,如打印入口和

8、返回,以便于检验被测试模块与其下级模块的接口。 7.4.2 集成测试- 概念 按照概要设计的要求组装独立模块成为子系统或系统,同时经过测试来发现接口错误的一种系统化的技术。单元测试完成后为什么还需要集成测试? 数据穿过接口时可能丢失; 一模块对另一模块由于疏忽而造成的有害影响; 子功能组合起来可能不产生预期的主功能; 个别看来可接受的误差积累到不能接受的程度; 全程数据结构可能有问题等错误。- 集成测试的模式(1)非渐增式测试方法 分模块测试一次性组装所有模块集成测试(2)渐增式测试方法(集成测试中较多使用) 分模块测试逐个模块组装直到集成测试 渐增方式集成策略:自顶向下和自底向上。7.4.2

9、 集成测试(1)自顶向下集成 从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。把模块组装到程序结构中去时,或者使用深度优先的策略,或者使用宽度优先的策略。7.4.2 集成测试自顶向下集成方法示意图宽度优先策略 沿软件结构水平地移动,把处于同一控制层次上的所有模块组装起来。深度优先策略先组装在软件结构的一条主控制通路上的所有模块,然后构造其他控制通路存根程序深度优先:M1-M2-M5-M8-M6-M3-S7-S4宽度优先:M1-M2-M3-S4-M5-M6-S7-M87.4.2 集成测试M1M4M3M2M6M5程序模块示意图S5M1S1S1S1S2S2S2S3S3S3第一步

10、,测试主控模块M1设计桩模块S1、S2、S3,模拟被M1调用的M2、M3、M4。M2M3M4第二步,依次用M2、M3、M4替代桩模块S1、S2、S3,每替代一次进行一次测试。S4S4S4S5S5第三步,对由主控模块M1和模块M2、M3、M4构成的子系统进行测试,设计桩模块S4、S5。M5M6第四步,依次用模块M5和M6替代桩模块S4、S5,并同时进行新的测试。组装测试完毕。自顶向下集成:7.4.2 集成测试(2)自底向上集成 从“原子”模块(即在软件结构最低层的模块)开始组装和测试。(1)把低层模块组合成实现某个特定的软件子功能的族;(2)写一个驱动程序(用于测试的控制程序),协调测试数据的输

11、入和输出;(3)对由模块组成的子功能族进行测试;(4)去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。7.4.2 集成测试自底向上结合驱动程序7.4.2 集成测试24M3M6M5D1D2D3D1D1D2D2D3D3M2M4M1第四步,把已测试的子系统按程序结构连接起来完成程序整体的组装测试。D4D4D4D5D5D5M1M4M3M2M6M5程序模块示意图第一步,对最底层的模块M3、M5、M6进行测试,设计驱动模块D1、D2、D3来模拟调用。第三步,设计驱动模块D4、D5 和D6模拟调用,分别对新子系统进行测试第二步,用实际模块M2、M1和M4替换驱动模块D1、D2、D

12、3D6自底向上集成:7.4.2 集成测试自顶向下集成测试方法:优点:减少了驱动模块开发的工作量;功能的可行性较早得到验证,而且能较早发现上层模块的接口错误;可以较早验证主要的控制和判断点;如果选用深度方向组装的方式,可以首先实现和验证一个完整的软件功能;支持故障隔离。缺点:桩模块的开发和维护是测试过程中的最大成本;底层组建行为的验证被推迟了;底层组件的增加会使得整个系统变得越来越复杂,导致底层组件的测试不充分,尤其是那些被重用的组件。适用范围:(1)控制结构比较清晰和稳定的产品;(2)高层接口变化较小的产品;(3)底层接口未定义或经常可能被修改的产品;(4)控制组件具有较大技术风险,需要尽早被

13、验证的产品;(5)希望尽早能够看到产品的系统功能行为。7.4.2 集成测试自底向上测试方法:优点:减少了桩模块开发的工作量;测试用例的设计亦相对简单;支持故障隔离;允许对底层组件行为的早期验证,涉及复杂算法和真正输入/输出的模块最先得到集成和测试,进而把最容易出问题的部分得到提前解决;可实施多个模块的并行测试,提高了测试效率。缺点:驱动模块开发的工作量很庞大;对高层的验证被推迟到最后,设计上的错误不能及时发现。适用范围:(1)底层接口比较稳定、变动较少的产品;(2)高层接口变化比较频繁的产品;(3)底层组件较早被完成的产品。7.4.2 集成测试(3)三明治集成 三明治集成也称为混合式集成,该策

14、略在测试过程中将系统分为三层,中间一层为目标层,对目标层的上面采用自顶向下的集成策略,对目标层的下面采用自底向上的集成策略,最后,测试在目标层汇合。 该集成测试策略的缺点在于对中间层的测试不充分,适用于大部分软件开发项目。7.4.2 集成测试7.4.2 集成测试三明治集成测试策略 - 概念 系统测试是指将经过集成测试的软件作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等元素结合在一起,对计算机系统进行一系列的组装测试和确认测试。系统测试的依据是软件需求规格说明书,测试的内容主要包括功能测试和性能测试两方面。7.4.3 系统测试 功能测试 图形界面测试、功能测试 性能

15、测试 配置测试、时间性能测试、压力测试、容量测试、 安全性测试、恢复测试、兼容性测试、备份测试、 可用性测试 7.4.3 系统测试 - 概念 确认测试又称“验收测试”、“有效性测试”,其任务是验证软件的功能和性能及其它特性是否与用户的要求一致。 需求分析阶段产生的软件需求规格说明书,是软件有效性的标准,是进行确认测试的基础。7.4.4 确认测试 - 分类Alpha测试(开发者+用户) 由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录发现的错误和使用中遇到的问题。Alpha测试是在受控的环境中进行的。Beta测试(用户+开发者) 由软件的最终用户们在一个或多个客户

16、场所进行。开发者通常不在Beta测试的现场。Beta测试是软件在开发者不能控制的环境中的“真实”应用。用户记录在Beta测试过程中遇到的一切问题,并把这些问题报告给开发者。7.4.4 确认测试 概念: 重新执行已经做过的测试的某个子集,以保证上述这些变化没有带来非预期的副作用。实施条件: 当新模块结合进来,程序发生如下变化:建立新的数据流路径;出现新的I/O操作;激活新的控制逻辑。作用: 保证由于调试或其他原因引起的变化,不会导致非预期的副作用。7.4.5 回归测试 回归测试集(已执行过的测试用例的子集)包括的测试用例: (1)检测软件全部功能的代表性测试用例; (2)针对可能受修改影响的软件

17、功能的附加测试; (3)针对被修改过的软件成分的测试。7.4.5 回归测试 测试用例设计的基本目的是确定一组最有可能发现某个错误或某类错误的测试数据,好的测试用例可以在测试过程中重复使用,但不可能测试程序的每一条路径,也不可能把所有的输入数据都试一遍。 测试用例的设计人员必须努力以最少量的测试用例来发现最大量的可能错误。7.5 测试用例的设计(1)测试用例由输入数据和预期的输出数据两个部分组成。这样便于对照检查,做到有的放矢。(2)测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。这样能更多地发现错误,提高程序的可靠性。(3)长期保留测试用例。测试用例必须作为文档保存,因为修改后的程序

18、可能有新的错误,需要进行多次反复测试,同时为以后的维护提供依据。7.5.1 测试用例的设计原则7.5.2 白盒测试方法用例的设计逻辑覆盖 语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖 循环覆盖 单循环嵌套循环基本路径测试 使用基本路径测试技术设计测试用例的步骤 :根据详细设计结果或源程序画出相应的程序图(也称为流图) ;计算程序图G的环形复杂度V(G) ;确定线性独立路径的基本集合;导出测试用例 ;准备测试用例,确保基本路径集中的每一条路径的执行 7.5.2 白盒测试方法用例的设计1.逻辑覆盖 逻辑覆盖法是一组方法的总称,这组方法强调程序内部逻辑结构的覆盖程度,测试过程是

19、逐渐进行越来越完整的通路测试。 白盒测试中的逻辑覆盖方法有以下6种: - 语句覆盖 - 判定覆盖 - 条件覆盖 - 判定条件覆盖 - 条件组合覆盖 - 路径覆盖(1) 语句覆盖 基本思想是:设计若干测试用例,运行被测程序,使程序中每个可执行语句至少执行一次。被测试模块的流程图 为了使每个语句都执行一次,程序的执行路径应该是sacbed,为此只需要输入下面的测试数据:A=2,B=0,X=47.5.2 白盒测试方法用例的设计语句覆盖的优缺点:【优点】:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。【缺点】:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。

20、如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。7.5.2 白盒测试方法用例的设计(2) 判定覆盖 基本思想是:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。被测试模块的流程图(1)覆盖sacbd路径:A=3,B=0,X=3(2)覆盖sabed路径:A=2,B=1,X=17.5.2 白盒测试方法用例的设计判定覆盖的优缺点:【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。【缺点】:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个

21、最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。7.5.2 白盒测试方法用例的设计(3) 条件覆盖 基本思想是:设计若干测试用例,执行被测程序以后要使每个判断中每个条件的可能取值至少满足一次。被测试模块的流程图(1)覆盖sacbed路径:A=2,B=0,X=4(2)覆盖sabd路径:A=1,B=1,X=17.5.2 白盒测试方法用例的设计条件覆盖的优缺点:【优点】:增加了对条件判定情况的测试,增加了测试路径。【缺点】:条件覆盖不一定包含判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。7.5.2 白盒测试方法用例的设计(4) 判定-

22、条件覆盖 基本思想是:设计足够的测试用例,使得判断条件中的所有条件可能至少执行一次取值,同时所有判断的可能结果至少执行一次。被测试模块的流程图(1)覆盖sacbed路径:A=2,B=0,X=4(2)覆盖sabd路径:A=1,B=1,X=17.5.2 白盒测试方法用例的设计判定-条件覆盖的优缺点:【优点】:能同时满足判定、条件两种覆盖标准。【缺点】:判定/条件覆盖准则的缺点是未考虑条件的组合情况。7.5.2 白盒测试方法用例的设计(5) 条件组合覆盖 基本思想是:设计足够的测试用例,使得每个判定表达式中条件的各种可能组合都至少执行一次。被测试模块的流程图(1)A1, B=0(2)A1, B0(3

23、)A1, B=0 (4)A1, B0(5)A=2, X1(6)A=2, X1(7)A2, X1(8)A2, X17.5.2 白盒测试方法用例的设计 对于上图的例子来说,共有以下八种可能的条件组合:(1) A1,B=0 属第一个判断的取真分支;(2) A1,B0 属第一个判断的取假分支;(3) A1,B=0 属第一个判断的取假分支;(4) A1,B0 属第一个判断的取假分支;(5) A2,X1 属第二个判断的取真分支;(6) A2,X1 属第二个判断的取真分支;(7) A2,X1 属第二个判断的取真分支;(8) A2,X1 属第二个判断的取假分支。7.5.2 白盒测试方法用例的设计49下面的四组

24、测试数据可以使上面列出的八种组合每种至少出现一次:(1) A=2,B=0,X=4 (针对1,5两种组合,执行路径sacbed);A=2,B=1,X=1 (针对2,6两种组合,执行路径sabed); A=1,B=0,X=2 (针对3,7两种组合,执行路径sabed); (4) A=1,B=1,X=1 (针对4,8两种组合,执行路径sabd)。7.5.2 白盒测试方法用例的设计 在此例中条件组合覆盖并未要求第一个判定的四个组合与第二个判定的四个组合再进行组合,要那样的话,就需42=16个测试用例了。显然,满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。因此,条件组

25、合覆盖是前述几种覆盖标准中最强的。但是,满足条件覆盖标准的测试数据并不一定能使程序中的每条路径都执行到,如上述四组测试数据都没有测试到路径sacbd。7.5.2 白盒测试方法用例的设计条件组合覆盖的优缺点:【优点】:条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。【缺点】:线性地增加了测试用例的数量。7.5.2 白盒测试方法用例的设计(6) 路径覆盖 基本思想是:设计所有的测试用例,来覆盖程序中的所有可能的执行路径 。 【优点】:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。 【缺点】:需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆

26、盖。7.5.2 白盒测试方法用例的设计 某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。测试对象是按以上要求计算顾客收费模块。要求:(1)计算顾客收费模块流程图。 (2)按照路径覆盖法设计测试用例。 7.5.2 白盒测试方法用例的设计(1)计算顾客收费模块流程图。(2) 按照路径覆盖法设计测试用例如下: 测试用例:是会员,累计消费900元 预期结果:覆盖路径

27、126 测试用例2:是会员,累计消费2000元 预期结果:覆盖路径127 测试用例3:不是会员,累计消费80元 预期结果:覆盖路径134 测试用例4:不是会员,累计消费300元 预期结果:覆盖路径1357.5.2 白盒测试方法用例的设计7.5.2 白盒测试方法用例的设计逻辑覆盖 语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖 循环覆盖 单循环嵌套循环基本路径测试 使用基本路径测试技术设计测试用例的步骤 :根据详细设计结果或源程序画出相应的程序图(也称为流图) ;计算程序图G的环形复杂度V(G) ;确定线性独立路径的基本集合;导出测试用例 ;准备测试用例,确保基本路径集中的每

28、一条路径的执行 循环的类别:简单循环嵌套循环串接循环无结构循环2. 循环覆盖7.5.2 白盒测试方法用例的设计简单循环的测试案例选取策略:设:n为允许通过循环的最大次数,应使用如下测试集来测试简单循环,1)跳过整个循环2)只有一次通过循环3)两次通过循环4)m次通过循环 (mn-1)5)使循环次数是n-1,n和n+1各通过一次循环简单循环7.5.2 白盒测试方法用例的设计嵌套循环的测试案例选取策略:如果采用简单测试的方法,将会使测试案例成几何级增长。所以采用:1)从内层循环开始,将其它循环值设置为最小;2)对内层使用简单循环测试方法,并为范围外的值添加适当的测试;3)由内向外构造下一个循环测试

29、,对已经测过的内层循环设为典型值;4)继续以上测试方式,直至全部嵌套循环结束。嵌套循环7.5.2 白盒测试方法用例的设计串接循环的测试案例选取策略:1)如果串接循环彼此独立,采用简单循环测试策略2)如果多个循环的循环计数是串接方式的,采用嵌套循环的测试策略无结构循环:应该重新设计循环结构,使之成为其它循环方式7.5.2 白盒测试方法用例的设计串接循环7.5.2 白盒测试方法用例的设计逻辑覆盖 语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖 循环覆盖 单循环嵌套循环基本路径测试 使用基本路径测试技术设计测试用例的步骤 :根据详细设计结果或源程序画出相应的程序图(也称为流图)

30、;计算程序图G的环形复杂度V(G) ;确定线性独立路径的基本集合;导出测试用例 ;准备测试用例,确保基本路径集中的每一条路径的执行 i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 23456187910111213以处理代码为基础,画流图处理部分白盒路径测试技术:基本路径测试确定流图的环复杂度average 流图23

31、456187910111213V(G)= 6个区域V(G)=17边-13个节点 + 2 = 6V(G)=5个判定节点 + 1 = 6白盒路径测试技术确定线性独立路径的一个基本集average 流图23456187910111213路径1:1-2-10-11-13路径2:1-2-10-12-13路径3:1-2-3-10-11-13路径4:1-2-3-4-5-8-9-2.路径5:1-2-3-4-5-6-8-9-2.路径6:1-2-3-4-5-6-7-8-9-2.根据环复杂度计算,6条路径足够覆盖所有的测试路径。选取独立路径6条:白盒路径测试技术64准备测试案例,强制执行基本集中的每条路径准备路径1

32、:1-2-10-11-13 测试案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 注意:满足(2)直接到(10)的条件是:valuei=-999 或者 total.input =100 但是,如果一次都没有执行 DO WHILE 则不会执行 (11),因为 total.valid = 0 ,所以路径1无法独立测

33、试,需要结合其它路径的测试来完成路径1测试案例:valuek=有效输入valuei=-999 (其中ki)预期结果:基于k的正确平均值和总和白盒路径测试技术准备路径2:1-2-10-12-13 测试案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路径2测试案例:valuei=-999预期结果:平均值=-999

34、准备测试案例,强制执行基本集中的每条路径白盒路径测试技术准备路径3:1-2-3-10-11-13 测试案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路径3测试案例:前100个数值应该有效预期结果:正确的100个数的平均值和总和测试多于100个值的情况准备测试案例,强制执行基本集中的每条路径白盒路径测试技术6

35、7准备路径4:1-2-3-4-5-8-9-2. 测试案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路径4测试案例:valuek=有效输入 (其中k100)valuei 最小值 (其中ik)预期结果:基于k-1的正确平均值和总数准备测试案例,强制执行基本集中的每条路径白盒路径测试技术准备路径5:1-2-3-4

36、-5-6-8-9-2. 测试案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路径5测试案例:valuek=有效输入 (其中k 最大值 (其中ik)预期结果:基于k-1的正确平均值和总数准备测试案例,强制执行基本集中的每条路径白盒路径测试技术准备路径6:1-2-3-4-5-6-7-8-9-2.测试案例: i =

37、 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路径6测试案例:valuek=有效输入 (其中k100)预期结果:基于k的正确平均值和总数准备测试案例,强制执行基本集中的每条路径白盒路径测试技术 功能测试黑盒测试概念示意图7.5.3 黑盒测试方法用例的设计 常用测试种类: 等价分类法 边界值分析 错误猜测法 因果图法7.5

38、.3 黑盒测试方法用例的设计(1)等价划分(经典的黑盒测试方法)定义: 等价分类,就是把输入数据的可能值划分为若干等价类(输入域的子集合,各个输入数据对于揭露程序中的错误都是等价的)。在每一个等价类中取一个数据作为测试的输入条件,这样就可以少量的代表性测试数据,来取得较好的测试结果。7.5.3 黑盒测试方法用例的设计 是指对于程序的规格说明来说,是合理的 有意义的输入数据构成的集合。利用它可以检 验程序是否实现预先规定的功能和性能。 有效等价类 是指对于程序的规格说明来说,是不合理 的,是无意义的输入数据构成的集合。程序员 主要利用这一类测试用例来检查程序中功能和 性能的实现是否不符合规格说明

39、要求。 无效等价类 7.5.3 黑盒测试方法用例的设计 1、如果输入条件规定了取值范围,或者是值 的个数,则可以确立一个有效等价类和两个无效 等价类。确定等价类的原则:例如: 序号值可以从 1到999 一个有效等价类: 1 序号值 999 两个无效等价类: 序号值 999 7.5.3 黑盒测试方法用例的设计 2、如果输入条件规定了输入值的集合,或 者是规定了“必须如何”的条件,这时 可确立一 个有效等价类和一个无效等价类。例如:在 C 语言中对变量标识符规定为 “以字母打头的 串”。 所有以字母打头的构成为有效等价 类; 而不在此集合内(不以字母打头)归于无效等 价类。7.5.3 黑盒测试方法

40、用例的设计 3、如果规定了输入数据是一组值, 而且程 序要对每个输入值分别进行处理。这时可为每一 个输入值确立一个有效等价类此外再针对这组确 立一个无效等价类,它应是所有不允许输入值的 集合。例如:在教师分房方案中规定对教授、副教授、讲师 和助教分别计算分数,做相应的处理。因此可 以确定4个有效等价类为教授、 副教授、讲师 和助教,以及 1个无效等价类它应是所有不符 合以上身份的人员的输入值的集合。7.5.3 黑盒测试方法用例的设计 4、如果规定了输入数据必须遵守的规 则,则可以确定一个有效等价类(符合规则) ,和若干个无效等价类(从不同角度违反则)。 例如:在C 语言中规定了“一个语句必须以

41、分号; 作为结束”,这时,可以确定一个有效等价 类,以 “;”结束,而若干个无效等价类应 以“:,、” 等。7.5.3 黑盒测试方法用例的设计 5、如果输入条件是一个布尔量,则可以确 定一个有效等价类和一个无效等价类。7.5.3 黑盒测试方法用例的设计 6、如果确知,已划分的等价类中各元素 在程序中的处理方式不同, 则应将此等价类 进一步划分成更小的等价类。7.5.3 黑盒测试方法用例的设计 根据等价类来设计测试用例,其过程如下: (1) 为每个等价类规定一个惟一的编号。 (2) 设计一个新的测试用例,使其尽可能多地覆盖未被覆盖的有效等价类,此项工作重复进行,直到所有的有效等价类都被覆盖为止。

42、 (3) 设计一个新的测试用例,使其覆盖一个(而且仅仅一个)尚未被覆盖的无效等价类,此项工作重复进行,直到所有的无效等价类都被覆盖为止。7.5.3 黑盒测试方法用例的设计黑盒等价划分测试技术举例: 某一报表处理系统,要求用户输入处理报表的日期。 假设日期限制在1990年1月至1999年12月,即系统只能对该段时期内的报表进行处理。如果用户输入的日期不在此范围内,则显示输入错误信息。该系统规定日期由年、月的6位数字字符组成,前4位代表年,后2位代表月。请用等价类划分法设计测试用例,来测试程序的“日期检查功能”。 黑盒等价划分测试技术 划分等价类并编号: 划分成 3 个有效等价类,7 个无效等价类

43、,如表所示。 为合理等价类设计测试用例,对于表中编号为1,5, 8 对应的3个合理等价类, 用一个测试用例覆盖。 输入条件有效等价类无效等价类出生年月的类型及长度 6位数字 有非数字字符 少于6位数字字符 多于6位数字字符出生年月数值199001199912间 小于199001 大于199912月份0112间 等于00 大于12 为每一个不合理等价类至少设计一个测试用例: 测试数据 期望结果 覆盖范围测试用例1 99MAY 输入无效 2测试用例2 19995 输入无效 3测试用例3 1999005 输入无效 4测试用例4 198912 输入无效 6测试用例5 200001 输入无效 7测试用例

44、6 199900 输入无效 9测试用例7 199913 输入无效 10黑盒等价划分测试技术经验:边界值最容易出错!测试数据: 边界值 边界值的相邻值注:通常设计测试方案时联合使用等价划分和边界值分析两种技术。(2)边界值分析7.5.3 黑盒测试方法用例的设计边界值分析举例: 程序功能说明书指出,某程序的输入条件为:每个学生可以选修1至3门课程,试用黑盒法设计测试用例。【要求】(1)按等价类划分法设计测试用例(要求列出设计过程)(2)按边界值分析法设计测试用例。7.5.3 黑盒测试方法用例的设计(1)按等价类划分法设计测试用例合理等价类(择一): 选修1-3门 不合理等价类: 没选课 选3门以上

45、 等价类划分法设计测试用例:测试数据:选修1 预期结果:有效输入选修0 预期结果:无效输入选修=4 预期结果:无效输入7.5.3 黑盒测试方法用例的设计(2)按边界值分析法设计测试用例。测试数据:选修=0 预期结果:无效输入测试数据:选修=1 预期结果:有效输入测试数据:选修=3 预期结果:有效输入测试数据:选修=4 预期结果:无效输入 7.5.3 黑盒测试方法用例的设计直觉+经验 基本思路:列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据他们选择测试方案。7.5.3 黑盒测试方法用例的设计(3)错误推测总结: 首选“边界值分析法”必要时“等价划分法”错误推测作为补充逻辑覆盖对照检查

46、7.5.3 黑盒测试方法用例的设计 定义: 利用图解法分析输入的各种组合情况从而来设计测试用例。 设计测试用例步骤: 找出SRS中的原因和结果,并分别加以标识; 分析语义,找出原因-结果、原因-原因之间关 系,画出因果图,并标明约束和限制条件; 将因果图转换为判定表; 依据判定表每列,设计测试用例。7.5.3 黑盒测试方法用例的设计(4)因果图法 图中,Ci,Ei 取值为0或1,0表示条件不成立或某状态不出现,1表示条件成立或某状态出现。4种符号分别表示规格说明中4种因果关系 :7.5.3 黑盒测试方法用例的设计输入输出条件之间的约束关系表示为 : E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1 I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0O约束(唯一);a和b必须有一个,且仅有1个为1R约束(要求):a是1时,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论