软件制造_软件测试_第1页
软件制造_软件测试_第2页
软件制造_软件测试_第3页
软件制造_软件测试_第4页
软件制造_软件测试_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

1、软件制造工程第5章 测试2 5.1 软件测试基础软件测试基础5.2 单元测试单元测试5.3 集成测试集成测试5.4 白盒测试技术白盒测试技术5.5 黑盒测试技术黑盒测试技术5.6 测试用例书测试用例书3 5 . 1 软件测试的基础什么是软件测试?什么是软件测试?是为了发现错误而执行程序的过程。是为了发现错误而执行程序的过程。发现错误是为了更正错误,最终得到一发现错误是为了更正错误,最终得到一个高质量的软件系统。个高质量的软件系统。软件测试的对象软件测试的对象:整个软件定义、开发:整个软件定义、开发周期的产品周期的产品. 软件测试不等于程序测试;它包软件测试不等于程序测试;它包括程序测试和文档测

2、试。括程序测试和文档测试。测试用例测试用例:通常指测试数据和预期的输:通常指测试数据和预期的输出结果出结果测试用例书测试用例书4 5.1.1 软件测试的目标软件测试存在的矛盾软件测试存在的矛盾用户希望通过软件测试暴露软件中隐藏用户希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。的错误和缺陷,以考虑是否可接受该产品。软件开发者希望通过软件测试表明软件软件开发者希望通过软件测试表明软件产品中不存在错误,已正确地实现了用户的产品中不存在错误,已正确地实现了用户的要求。要求。5 G.Myers给出的软件测试目的l测试是为了发现程序中的错误而执行程序的过程测试是为了发现程序中的错误而

3、执行程序的过程l好的测试用例是极可能发现迄今为止尚未发现的好的测试用例是极可能发现迄今为止尚未发现的错误的测试方案;错误的测试方案;l成功的测试是发现了至今未发现的错误的测试成功的测试是发现了至今未发现的错误的测试总之,测试的目的是以最少的时间和人力,系统总之,测试的目的是以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷;测试附带的收地找出软件中潜在的各种错误和缺陷;测试附带的收获是它能证明软件的功能和性能与需求说明相符合。获是它能证明软件的功能和性能与需求说明相符合。注意:测试不能表明软件中不存在错误,它只能注意:测试不能表明软件中不存在错误,它只能说明软件中存在错误。说明软件中存在

4、错误。6 5. 2. 2 软件测试的准则(1)1 )所有测试都能追溯到用户需求)所有测试都能追溯到用户需求 2 )应该远在测试开始之前就制定出测试计划)应该远在测试开始之前就制定出测试计划 3 )应该把)应该把 Pareto原理应用到软件测试中原理应用到软件测试中群集现象:群集现象: 80 的错误可能是由的错误可能是由 20 的模块造成的模块造成的的 4 )从)从“小规模小规模”测试开始,逐步过渡到测试开始,逐步过渡到“大大规模规模”测试测试 5 )穷举测试是不可能的)穷举测试是不可能的测试只能证明程序有错,不能证明程序没有错误测试只能证明程序有错,不能证明程序没有错误 6 )应由独立的第三方

5、从事测试工作)应由独立的第三方从事测试工作7 5.2.3 测试方法软件测试方法一般分为:静态测试和动软件测试方法一般分为:静态测试和动态测试。态测试。静态测试静态测试是指被测程序不在机器上运行,是指被测程序不在机器上运行,采用人工检测和计算机辅助静态分析的手段采用人工检测和计算机辅助静态分析的手段对程序进行检测。对程序进行检测。动态测试动态测试是指通过运行程序发现错误,是指通过运行程序发现错误,又分又分黑盒法黑盒法和和白盒法白盒法两种。两种。8 两种动态测试方法黑盒测试黑盒测试(功能测试功能测试): 把程序看作一个黑盒子;把程序看作一个黑盒子; 完全不考虑程序的内部结构和处理过程;完全不考虑程

6、序的内部结构和处理过程; 是在程序接口进行的测试。是在程序接口进行的测试。白盒测试白盒测试(结构测试结构测试): 把程序看成装在一个透明的盒子里;把程序看成装在一个透明的盒子里; 测试者完全知道程序的结构和处理算法;测试者完全知道程序的结构和处理算法; 按照程序内部的逻辑测试程序,检测程序中的主按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。要执行通路是否都能按预定要求正确工作。黑盒测试不可能实现穷尽测试:黑盒测试不可能实现穷尽测试:假设有程序假设有程序P,输入量为,输入量为A和和B,输出量为,输出量为C。如果计算机的字长为如果计算机的字长为32位,位,A和和B

7、的数据类的数据类型都是整数类型。将型都是整数类型。将A和和B的可能取值进行排的可能取值进行排列组合,输入数据的可能性有:列组合,输入数据的可能性有:232232264种。种。假设这个程序执行一次需要假设这个程序执行一次需要1毫秒,要完成毫秒,要完成所有的测试,计算机需要连续工作所有的测试,计算机需要连续工作5亿年。亿年。白盒测试也不能实现穷尽测白盒测试也不能实现穷尽测试:试:图中所示的一个小程序的控图中所示的一个小程序的控制流程。曲线代表执行次数不制流程。曲线代表执行次数不超过超过20的循环,循环体中共有的循环,循环体中共有5条通路。条通路。可能执行的路径有可能执行的路径有520条,近条,近似

8、为似为1014条可能的路径。条可能的路径。如果完成一个路径的测试需如果完成一个路径的测试需要要1毫秒,那么整个测试过程需毫秒,那么整个测试过程需要要3170年。年。黑盒测试与白盒测试优缺点比较:黑盒测试与白盒测试优缺点比较: 黑盒测试黑盒测试白盒测试白盒测试优优点点适用于各阶段测试适用于各阶段测试从产品功能角度测试从产品功能角度测试容易入手生成测试数据容易入手生成测试数据可构成测试数据使特定程可构成测试数据使特定程 序部分得到测试序部分得到测试有一定的充分性度量手段有一定的充分性度量手段可获较多工具支持可获较多工具支持缺缺点点某些代码得不到测试某些代码得不到测试如果规格说明有误,则无如果规格说

9、明有误,则无法发现法发现不易进行充分性测试不易进行充分性测试通常不易生成测试数据通常不易生成测试数据无法对未实现规格说明的部无法对未实现规格说明的部分进行测试分进行测试工作量大,通常只用于单元工作量大,通常只用于单元测试,有应用局限测试,有应用局限性性质质一种确认技术,回答一种确认技术,回答“我们我们在构造一个正确的系统吗?在构造一个正确的系统吗?”一种验证技术,回答一种验证技术,回答“我们在我们在正确地构造一个系统吗?正确地构造一个系统吗?”12 5.1 .4 测试步骤测试的测试的 4 个步骤:个步骤:l单元(模块)测试单元(模块)测试l集成测试(子系统和系统测试)集成测试(子系统和系统测试

10、)l确认(验收)测试确认(验收)测试l平行运行平行运行13 测试与软件开发各阶段的关系测试与软件开发各阶段的关系软件开发过程是一个自顶向下,逐步细软件开发过程是一个自顶向下,逐步细化的过程化的过程软件测试则是依相反顺序自底向上,逐软件测试则是依相反顺序自底向上,逐步集成的过程。步集成的过程。14 5.2.5 测试阶段的信息流测试过程需要二类输入软件配置:软件需求规格说明、软件软件配置:软件需求规格说明、软件设计规格说明、源代码等;设计规格说明、源代码等;测试配置:测试计划、测试用例、测试配置:测试计划、测试用例、测试程序等;测试程序等;15 5. 3 单元测试( Unit Testing )又

11、称模块测试,需要从程序的内部结构又称模块测试,需要从程序的内部结构出发设计测试用例。出发设计测试用例。测试目的:发现模块内部可能存在的差测试目的:发现模块内部可能存在的差错错测试依据:详细设计说明书和源程序清测试依据:详细设计说明书和源程序清单单测试方法:白盒测试为主,黑盒测试为测试方法:白盒测试为主,黑盒测试为辅,多个模块并行进行。辅,多个模块并行进行。16 5 .3 .1 测试重点17 模块接口测试在单元测试的开始,应对通过被测模块在单元测试的开始,应对通过被测模块的数据流进行测试。的数据流进行测试。测试项目:测试项目:调用本模块的输入参数是否正确;调用本模块的输入参数是否正确;本模块调用

12、子模块时,输入给子模块的参数本模块调用子模块时,输入给子模块的参数是否正确;是否正确;输出给标准函数的参数是否正确;输出给标准函数的参数是否正确;全局量的定义和用法在各摸块中是否一致;全局量的定义和用法在各摸块中是否一致;与外部设备的输入输出是否正确。与外部设备的输入输出是否正确。18 局部数据结构测试测试项目:测试项目:不正确或不一致的数据类型说明不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值错误的初始值或错误的缺省值变量名拼写错或书写错变量名拼写错或书写错不一致的数据类型不一致的数据类型全局数据对模块的影响全局数据对模块的

13、影响19 重要的执行通路测试测试用例要适当测试用例要适当 : 关键关键20 错误处理测试着重测试以下可能发生的错误:着重测试以下可能发生的错误:出错的措述是否难以理解出错的措述是否难以理解出错的描述是否能够对错误定位出错的描述是否能够对错误定位显示的错误与实际的错误是否相符显示的错误与实际的错误是否相符对错误条件的处理正确与否对错误条件的处理正确与否在对错误进行处理之前,错误条件是否已经在对错误进行处理之前,错误条件是否已经引起系统的干预等引起系统的干预等21 边界测试重点检查刚好等于、大于或小于边界值重点检查刚好等于、大于或小于边界值的数据的数据;对运行时间有要求的模块,还要专门进对运行时间

14、有要求的模块,还要专门进行关键路径测试,以确定最坏情况下和平均行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。意义下影响模块运行时间的因素。22 7.3.2 代码审查人工测试源程序。人工测试源程序。参与者参与者:程序的设计者、编写者、测试者:程序的设计者、编写者、测试者没有直接参与系统开发,但有能力的程序员。没有直接参与系统开发,但有能力的程序员。方法:方法:研究设计说明书,一起审查程序代研究设计说明书,一起审查程序代码如何实现设计,从中发现问题。码如何实现设计,从中发现问题。注意:注意:通常代码审查和机器测试结合使用。通常代码审查和机器测试结合使用。23 5. 3.3 计

15、算机测试单元测试通常在编码阶段进行。常用单元测试通常在编码阶段进行。常用机机器测试器测试,即通过运行模块发现问题。,即通过运行模块发现问题。两个重要概念:两个重要概念:驱动程序(驱动程序( driver ) :相当于被测试模块:相当于被测试模块的的“主程序主程序”,接收测试数据,把这些数据,接收测试数据,把这些数据传送给被测试的模块,并且输出相关结果。传送给被测试的模块,并且输出相关结果。存根程序(存根程序(stub):):代替被测试模块代替被测试模块所所调用调用的模块。不需要具有子模块所有功能,的模块。不需要具有子模块所有功能,但不允许什么事情也不做。但不允许什么事情也不做。24 单元测试的

16、测试环境25 正文加工系统功能结构图若要测试若要测试“编辑子系统编辑子系统”,需要上层,需要上层“驱动模块驱动模块”和下层和下层“存根程序存根程序”26 5 . 4 集成测试( Integrated Testing )在单元测试之后,将模块组装成系统,为发现在单元测试之后,将模块组装成系统,为发现并排除模块在连接中可能出现的问题,而进行的测并排除模块在连接中可能出现的问题,而进行的测试。试。需要考虑:需要考虑:模块连接时穿越模块接口的数据是否会模块连接时穿越模块接口的数据是否会 丢失;丢失;一个模块对另一个模块是否会产生不利的影响;一个模块对另一个模块是否会产生不利的影响;各子功能组合起来,能

17、各子功能组合起来,能 否达到预期要求的父功能否达到预期要求的父功能全局数据结构是否有问题;全局数据结构是否有问题;单个模块的误差累积起来,是单个模块的误差累积起来,是 否会放大至不能接受否会放大至不能接受的程度。的程度。27 集成测试的两种方式 非渐增式组装方式非渐增式组装方式对每个模块分别进行单元测试,再把所对每个模块分别进行单元测试,再把所有模块组装成一个完整的系统进行的测试,有模块组装成一个完整的系统进行的测试,从而得到要求的软件系统。从而得到要求的软件系统。 渐增式组装方式渐增式组装方式先对模块进行单元测试,然后将测试后先对模块进行单元测试,然后将测试后的模块逐步组装成较大的系统;在组

18、装的过的模块逐步组装成较大的系统;在组装的过程中边连接边测试,以发现连接过程中产生程中边连接边测试,以发现连接过程中产生的问题;最后组装成为要求的软件系统。的问题;最后组装成为要求的软件系统。28 渐增式组装方式的三种类型自顶向下的渐增方式自顶向下的渐增方式自底向上结合的渐增方式自底向上结合的渐增方式混合渐增测试混合渐增测试29 自顶向下的渐增方式将模块按系统程序结构,沿控制层次自将模块按系统程序结构,沿控制层次自顶向下进行组装。顶向下进行组装。不需要驱动模块不需要驱动模块,需要存根模块需要存根模块l深度优先深度优先l宽度优先宽度优先30 深度优先组装的例子31 组装步骤1 )对主模块进行测试

19、,用存根模块代替)对主模块进行测试,用存根模块代替下层模块;下层模块; 2 )根据选定的结合策略,每次用一个)根据选定的结合策略,每次用一个实际模块代替一个桩模块;实际模块代替一个桩模块; 3 )在结合进一个模块的同时进行测试;)在结合进一个模块的同时进行测试;4 )为保证加入的模块没有引进新的错误,)为保证加入的模块没有引进新的错误,可能需要进行回归测试可能需要进行回归测试32 优点优点:l能在早期验证主要的控制和判断点。能在早期验证主要的控制和判断点。l选用按深度方向组装的方式,可以首先选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。实现和验证一个完整的软件功能。缺点缺点:

20、可能遇到逻辑次序上的问题可能遇到逻辑次序上的问题33 自底向上的增殖方式从程序模块结构最底层的模块开始组装和测试。从程序模块结构最底层的模块开始组装和测试。不再需要存根程序,需要驱动模块。不再需要存根程序,需要驱动模块。组合策略:组合策略:把低层模块组合成实现某个特定的软件子功能把低层模块组合成实现某个特定的软件子功能的族;的族;用驱动程序协调测试数据的输入和输出用驱动程序协调测试数据的输入和输出;对由模块组成的子功能族进行测试对由模块组成的子功能族进行测试;1.去掉驱动程序去掉驱动程序,没软件结构自下向上移动没软件结构自下向上移动,把子把子功能族组合起来形成更大的子功能族。功能族组合起来形成

21、更大的子功能族。34 自底向下组合测试的例子35 回归测试思考:思考:采用采用“渐增式测试渐增式测试”时,测试中时,测试中当新的模块结合进来之后,是否需要对程序当新的模块结合进来之后,是否需要对程序进行再次测试?进行再次测试?定义:定义:指集成测试中,重新执行已经做指集成测试中,重新执行已经做过测试的某个子集,以保证上述这些变化没过测试的某个子集,以保证上述这些变化没有带来非预期的副作用。有带来非预期的副作用。先采取自顶向下的方式测试被修改的模先采取自顶向下的方式测试被修改的模块及其子模块;然后将这一部分视为子系统,块及其子模块;然后将这一部分视为子系统,再自底向上测试。再自底向上测试。36

22、混合策略1)衍变的自顶向下的增殖测试)衍变的自顶向下的增殖测试先对输入输出模块和引入新算法模块先对输入输出模块和引入新算法模块进行测试;进行测试;再自底向上组装成为功能相当完整且相再自底向上组装成为功能相当完整且相对独立的子系统;对独立的子系统;然后由主模块开始自顶向下进行增殖测然后由主模块开始自顶向下进行增殖测试。试。37 2)自底向上一自顶向下的增殖测试先对含读操作的子系统自底向上直至根先对含读操作的子系统自底向上直至根结点模块进行组装和测试;结点模块进行组装和测试;再对含写操作的子系统做自顶向下的组再对含写操作的子系统做自顶向下的组装与测试。装与测试。38 5.5 确认测试又称有效性测试

23、。验证软件的功能、性又称有效性测试。验证软件的功能、性能及其它特性是否与用户的要求一致。能及其它特性是否与用户的要求一致。确认测试的基础确认测试的基础 :软件需求规格说明书:软件需求规格说明书确认测试的主要工作确认测试的主要工作:有效性测试与软:有效性测试与软件配置审查件配置审查主要参与人员主要参与人员:以用户为主:以用户为主39 确认测试的步骤40 5 .5. 1 确认测试范围通常采用黑盒测试,验证被测软件是否满足用通常采用黑盒测试,验证被测软件是否满足用户需求。户需求。测试计划测试计划:包括测试种类及进度安排;:包括测试种类及进度安排;测试步骤测试步骤:描述具体的测试用例:描述具体的测试用

24、例测试目的测试目的:确定软件的特性是否与需求相符;:确定软件的特性是否与需求相符; 所有的文档都是正确且便于使用;所有的文档都是正确且便于使用; 其它软件需求。其它软件需求。测试结果测试结果:与预期的结果相符;:与预期的结果相符; 与预期的结果不符:要提交一份问与预期的结果不符:要提交一份问题报告。题报告。41 5.5.2 软件配置复查目的:目的:保证软件配置的所有成分都齐全;保证软件配置的所有成分都齐全; 各方面的质量都符合要求;各方面的质量都符合要求; 具有维护阶段所必需的细节;具有维护阶段所必需的细节; 而且已经编排好分类的目录。而且已经编排好分类的目录。应当严格遵守用户手册和操作手册中

25、规应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完定的使用步骤,以便检查这些文档资料的完整性和正确性。整性和正确性。42 5 . 5. 3 测试和多测试适用:为多个用户开发的软件适用:为多个用户开发的软件 测试测试:由用户在开发环境下进行的测试。:由用户在开发环境下进行的测试。主要评价软件产品的主要评价软件产品的:FLURPS(即功能、即功能、局域化、可使用性、可靠性、性能和支持)局域化、可使用性、可靠性、性能和支持)测试测试:由最终用户在实际使用环境下进:由最终用户在实际使用环境下进行的测试,这些用户定期返回有关错误信息行的测试,这些用户定期返回有关错误信息给开发者。

26、给开发者。注意:注意:只有当只有当测试达到一定的可靠程度测试达到一定的可靠程度时,才开始时,才开始 测试。测试。43 5. 6 自盒测试技术白盒测试执行的要求:白盒测试执行的要求:对程序模块的所有独立的执行路径至少对程序模块的所有独立的执行路径至少测试一次测试一次 对所有的逻辑判定,取对所有的逻辑判定,取“真真”与取与取“假假”的两种情况都至少测试一次;的两种情况都至少测试一次;在循环的边界和运行界限内执行循环体;在循环的边界和运行界限内执行循环体;44 5. 6. 1 逻辑覆盖有选择地执行程序中某些最有代表性的有选择地执行程序中某些最有代表性的通路是对穷尽测试的惟一可行的替代办法。通路是对穷

27、尽测试的惟一可行的替代办法。从覆盖源程序语句的详尽程度分析,大从覆盖源程序语句的详尽程度分析,大致有以下一些不同的覆盖标准:致有以下一些不同的覆盖标准:语句覆盖语句覆盖判定覆盖判定覆盖 条件覆盖条件覆盖 判定判定/条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 1. 语句覆盖语句覆盖含义:选择足够多的含义:选择足够多的测试数据,使被测程序测试数据,使被测程序中每个语句至少执行一中每个语句至少执行一次。次。分析:分析: 执行路径执行路径sacbed测试用例:测试用例:A2,B0,X4 覆盖覆盖sacbed语句覆盖特点:语句覆盖特点:语句覆盖对程序的逻辑覆盖很少。语句覆盖对程序的逻辑覆盖很少。语句覆盖

28、是很弱的逻辑覆盖标准。语句覆盖是很弱的逻辑覆盖标准。 2. 判定覆盖(分支覆盖)判定覆盖(分支覆盖)含义:不仅每个语句必须至少含义:不仅每个语句必须至少执行一次,而且每个判定执行一次,而且每个判定的每种可能的结果都应该的每种可能的结果都应该至少执行一次。至少执行一次。所有判定分支:所有判定分支: (1) a点判定为点判定为T (2) a点判定为点判定为F (3) b点判定为点判定为T (4) b点判定为点判定为F2. 判定覆盖(分支覆盖)判定覆盖(分支覆盖)测试用例:测试用例: . 满足满足(1)(4) A3,B0,X3 覆盖覆盖sacbd . 满足满足(2)(3) A2,B1,X1 覆盖覆盖

29、sabed2. 判定覆盖(分支覆盖)判定覆盖(分支覆盖)或者或者 . 满足满足(1)(3) A2,B0,X3 覆盖覆盖sacbed . 满足满足(2)(4) A3,B1,X1 覆盖覆盖sabd特点:比语句覆盖强,特点:比语句覆盖强,但对程序逻辑的覆盖程度但对程序逻辑的覆盖程度仍不高。仍不高。 3. 条件覆盖条件覆盖含义:不仅每个语句至少含义:不仅每个语句至少执行一次,而且使判定表达执行一次,而且使判定表达式中的每个条件都取到各种式中的每个条件都取到各种可能的结果。可能的结果。所有条件:所有条件: (1)A1 (2)A1 (3)B0 (4)B0 (5)A2 (6)A2 (7)X1 (8)X13.

30、 条件覆盖条件覆盖测试用例:测试用例: . 满足满足(1)(3)(5)(7) A2,B0,X4 覆盖覆盖sacbed . 满足满足(2)(4)(6)(8) A1,B1,X1 覆盖覆盖sabd 3. 条件覆盖条件覆盖或者或者 . 满足满足(1)(3)(5)(8) A2,B0,X1 覆盖覆盖sacbed . 满足满足(2)(4)(6)(7) A1,B1,X2 覆盖覆盖sabed或者或者条件覆盖特点:条件覆盖特点:条件覆盖通常比判定覆盖强,因为它使条件覆盖通常比判定覆盖强,因为它使每个条件都取到了两个不同的结果,判定每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。但也覆盖却只关心

31、整个判定表达式的值。但也有反例,如第二组测试用例。有反例,如第二组测试用例。判定覆盖不一定包含条件覆盖,条件覆判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。盖也不一定包含判定覆盖。4. 判定判定/条件覆盖条件覆盖含义:使得判定表达式中的每个条件都取到各种可能的含义:使得判定表达式中的每个条件都取到各种可能的值,每个判定表达式也都取到各种可能的结果。值,每个判定表达式也都取到各种可能的结果。测试用例:测试用例: . 满足条件满足条件(1)(3)(5)(7) 和判定和判定(1)(3) A2,B0,X4 覆盖覆盖sacbed . 满足条件满足条件(2)(4)(6)(8) 和判定和判定(2

32、)(4) A1,B1,X1 覆盖覆盖sabd 特点:有时判定特点:有时判定/条件覆盖也并不比条件覆盖更强。条件覆盖也并不比条件覆盖更强。 5. 条件组合覆盖条件组合覆盖含义:要求选取足够多的测试数据,使得每个判定表达含义:要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。式中条件的各种可能组合都至少出现一次。条件组合:条件组合: (1)A1,B0 (2)A1,B0 (3)A1,B0 (4)A1,B0 (5)A2,X1 (6)A2,X1 (7)A2,X1 (8)A2,X1 5. 条件组合覆盖条件组合覆盖测试用例:测试用例: .满足满足(1)(5) A2,B0,X4

33、覆盖覆盖sacbed .满足满足(2)(6) A2,B1,X1 覆盖覆盖sabed .满足满足(3)(7) A1,B0,X2 覆盖覆盖sabed . 满足满足(4)(8) A1,B1,X1 覆盖覆盖sabd条件组合覆盖特点:条件组合覆盖特点:条件组合覆盖是前述几种覆盖标准中最条件组合覆盖是前述几种覆盖标准中最强的。满足条件组合覆盖标准的测试数据,强的。满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定也一定满足判定覆盖、条件覆盖和判定/条条件覆盖标准。件覆盖标准。但是,条件组合覆盖标准的测试数据并但是,条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。不一定能使程

34、序中的每条路径都执行到。(4组数据都没有测试到组数据都没有测试到sacbd) 从对程序路径的覆盖程度分析的逻辑覆盖标准:从对程序路径的覆盖程度分析的逻辑覆盖标准:6. 点覆盖点覆盖含义:选取足够多的测试数据,使得程序执行路径至含义:选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次。少经过流图的每个结点一次。特点:由于流图的每个结点与一条或多条语句相对应,特点:由于流图的每个结点与一条或多条语句相对应,因此点覆盖标准和语句覆盖标准是相同的。因此点覆盖标准和语句覆盖标准是相同的。7. 边覆盖边覆盖含义:选取足够多测试数据,使得程序执行路径至少含义:选取足够多测试数据,使得程序执行路

35、径至少经过流图中每条边一次。经过流图中每条边一次。特点:通常边覆盖和判定覆盖是一致的。特点:通常边覆盖和判定覆盖是一致的。8. 路径覆盖路径覆盖含义:选取足够多测试数据,使程序的每条可能路径含义:选取足够多测试数据,使程序的每条可能路径都至少执行一次都至少执行一次(如果程序图中有环,则要求每个环至如果程序图中有环,则要求每个环至少经过一次少经过一次)。 语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖点覆盖边覆盖60 总结: 6 种覆盖标准的对比61 5. 6. 2 控制结构测试1 、基本路径测试、基本路径测试以环形复杂度为基础,导出基本可执行以环形复杂度为基础,导出基本可执行路径集

36、合,设计测试用例的方法。路径集合,设计测试用例的方法。测试用例要保证程序的测试用例要保证程序的每个可执行语句每个可执行语句至少执行一次至少执行一次。62 步骤:1:由程序流程图导出程序控制流图,并计算由程序流程图导出程序控制流图,并计算其环路复杂度其环路复杂度2:确定程序的独立路径确定程序的独立路径什么是独立路径?什么是独立路径?流图中,一条独立路径是至少包含一条在其它流图中,一条独立路径是至少包含一条在其它独立路径中从未有过的边的路径。独立路径中从未有过的边的路径。独立路径条数独立路径条数是确保程序中,每个可执行语句是确保程序中,每个可执行语句至少能被执行一次所必需的测试用例数目的上界。至少

37、能被执行一次所必需的测试用例数目的上界。独立路径条数程序环路复杂性独立路径条数程序环路复杂性 V ( G )63 步骤1.根据程序逻辑画出流程图 void Func(int nPosX, int nPosY) while (nPosX 0) int nSum = nPosX + nPosY;if (nSum 1) nPosX-; nPosY-;else if (nSum -1) nPosX -= 2; else nPosX -= 4; / end of while 1 2 3 6 7 8 4 5 11 9 10 模模块块流流程程图图 64 步骤2:将流程图转换为流图 2,3 6 7 8 9 1

38、0 4,5 11 程程序序流流图图 1 2 3 6 7 8 4 5 11 9 10 模模块块流流程程图图 65 步骤3:确定基本路径的集合基本路径基本路径流图流图Cyclomatic复杂复杂度正好是基本路径度正好是基本路径的数目的数目V(G) = E N + 2 V(G) = 11 - 9 + 2 = 4 V(G) =P+1E、N、P分别为流图分别为流图的边数、节点数和的边数、节点数和谓词节点数。谓词节点数。 2,3 6 7 8 9 10 4,5 11 程程序序流流图图 66 步骤4:确定测试路径的集合例:独立路径例:独立路径图中一组独立的路径是:图中一组独立的路径是:L1 : 1 , 11

39、L2: 1 , 2 , 3 , 4 , 5 , 10 , 1 , 11 L3: 1 , 2 , 3 , 6 , 8 , 9 , 10 , 1 , 11 L4: 1 , 2 , 3 , 6 , 7 , 9 , 10 , 1 , 11 路径路径 L1 , L2 , L3 , L4 组组成了控制流图的一个基本路径成了控制流图的一个基本路径集。集。67 步骤 5 :由基本路径集,导出测试用例基本路径集不是唯一的,对于给定的程基本路径集不是唯一的,对于给定的程序图,可以得到不同的基本路径集。序图,可以得到不同的基本路径集。导出测试用例,确保基本路径集中的每导出测试用例,确保基本路径集中的每一条路径的执行

40、。一条路径的执行。68 针对测试路径设计测试用例1-11nPosX 取取-1, nPosY取任取任意值意值1 - 2, 3 - 4, 5 - 10 - 1 - 11nPosX 取取1, nPosY取取11- 2, 3 - 6 - 7 - 9 - 10 - 1 11nPosX 取取1, nPosY取取-11- 2, 3 - 6 - 8 - 9 - 10 - 1 - 11 nPosX 取取1, nPosY取取-3 2,3 6 7 8 9 10 4,5 11 程程序序流流图图 69 5.7 黑盒测试技术黑盒测试主要是为了发现以下错误:黑盒测试主要是为了发现以下错误:l是否有不正确或遗漏了的功能?是否

41、有不正确或遗漏了的功能?l能否正确地接受输入?能否正确的输出结果?能否正确地接受输入?能否正确的输出结果?l是否有数据结构错误或外部数据库访问错误?是否有数据结构错误或外部数据库访问错误?l性能上是否能够满足要求?性能上是否能够满足要求?l是否有初始化或终止性错误?是否有初始化或终止性错误?几种黑盒测试技术:几种黑盒测试技术:等价类划分、边界值分析、错误推测法、因果等价类划分、边界值分析、错误推测法、因果图图70 5 .7 . 1 等价划分基本思想:基本思想:把所有可能的输入数据(包括有效或无把所有可能的输入数据(包括有效或无效的),划分成若干数据类(等价类),然效的),划分成若干数据类(等价

42、类),然后从每个数据类中选取少数有代表性的数据后从每个数据类中选取少数有代表性的数据做为测试用例。做为测试用例。这种方法完全不考虑程序的内部结构,这种方法完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。只依据程序的规格说明来设计测试用例。71 设计测试用例的步骤步骤步骤 1 :划分等价类:划分等价类(列出等价类表)列出等价类表)等价类是指输入数据的子集合。在该子等价类是指输入数据的子集合。在该子集合中,各输入数据对于发现程序中的错误集合中,各输入数据对于发现程序中的错误都是等效的。都是等效的。根据程序功能说明,确定有效和无效的根据程序功能说明,确定有效和无效的等价类等价类步骤步骤

43、2:根据等价类设计测试用例:根据等价类设计测试用例包括有效等价类和无效等价类的设计。包括有效等价类和无效等价类的设计。72 步骤 1 :划分等价类等价类分为:等价类分为:l有效等价类:有效等价类:是指对于程序的规格说明是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的来说,是合理的,有意义的输入数据构成的集合。集合。l无效等价类:无效等价类:是指对于程序的规格说明是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成来说,是不合理的,无意义的输入数据构成的集合。的集合。在设计测试用例时,要同时考虑有效等在设计测试用例时,要同时考虑有效等价类和无效等价类的设计!价类和无效等价类的

44、设计! !73 等价类划分原则(1)原则原则1 :若规定了取值范围,或输入值的:若规定了取值范围,或输入值的个数,则可以确立一个有效等价类和两个无个数,则可以确立一个有效等价类和两个无效等价类。效等价类。例:程序对输人条件的要求是:例:程序对输人条件的要求是:.输入数是从输入数是从 1 1 到到 999 .999 .则则 有效等价类是有效等价类是“ “ 1 =1 =输入数输入数=999 ;=999 ; 两个无效等价类是两个无效等价类是“输入数输入数1 1或或“输入数输入数 999 999 在数轴上表示成:在数轴上表示成:74 等价类划分原则( 2)原则原则2:如果规定了输入数据的一组值,而且:

45、如果规定了输入数据的一组值,而且程序要对每种输入数据分别处理,则可为每种输入程序要对每种输入数据分别处理,则可为每种输入值确立一个有效等价类,此外针对这组值确立一个值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。无效等价类,它是所有不允许的输入值的集合。例:教师上岗方案中规定对教授、副教授、讲例:教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以师和助教分别计算分数,做相应的处理。因此可以确定确定 4 4 个有效等价类为教授、副教授、讲师和助教,个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人

46、员一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。的输入值的集合。75 等价类划分原则( 3)原则原则 3 :若规定了输入值的集合,或者:若规定了输入值的集合,或者是规定了是规定了“必须如何必须如何”的条件,则可确立一的条件,则可确立一个有效等价类和一个无效等价类。个有效等价类和一个无效等价类。例:例: Pascal Pascal 语言对变量标识符规定必须语言对变量标识符规定必须“以以字母打头字母打头”,则所有以字母打头的构成有效等价类,则所有以字母打头的构成有效等价类,而不以字母打头的归于无效等价类。而不以字母打头的归于无效等价类。76 等价类划分原则( 4)原则原则4 :如果规

47、定输入数据为整型,则可:如果规定输入数据为整型,则可划分出正整、零和负整数三个有效类,其他划分出正整、零和负整数三个有效类,其他数据为无效类数据为无效类原则原则5:如果程序处理对象是表格,则应:如果程序处理对象是表格,则应使用空表、含一项和多项的表。使用空表、含一项和多项的表。原则原则6:如果确知,已划分的等价类中各:如果确知,已划分的等价类中各元素在程序中的处理方式不同,则应将此等元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。价类进一步划分成更小的等价类。77 步骤2:确立测试用例在确立了等价类之后,建立等价类表,在确立了等价类之后,建立等价类表,列出所有划分出的等价类。列出所有划分出的等价类。78 测试用例的选择原则原则原则1: 为每一个等价类规定一个唯一编为每一个等价类规定一个唯一编号;号;原则原则2:设计一个新的测试用例,使其尽可设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被

温馨提示

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

评论

0/150

提交评论