软件测试策略

上传人:飞*** 文档编号:57146638 上传时间:2018-10-19 格式:PPT 页数:119 大小:597.50KB
返回 下载 相关 举报
软件测试策略_第1页
第1页 / 共119页
软件测试策略_第2页
第2页 / 共119页
软件测试策略_第3页
第3页 / 共119页
软件测试策略_第4页
第4页 / 共119页
软件测试策略_第5页
第5页 / 共119页
点击查看更多>>
资源描述

《软件测试策略》由会员分享,可在线阅读,更多相关《软件测试策略(119页珍藏版)》请在金锄头文库上搜索。

1、第18章 软件测试策略,软件测试概述软件测试用例设计软件测试策略测试的组织软件调试测试文档,林坤辉,测试流程图,软件测试策略,测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。 开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。,软件测试策略,组装测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。 确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。 系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。,软件测试策略,单元

2、测试 (Unit Testing),单元测试又称模块测试,是针对软件设计的最小单位 程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。 单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。,1. 单元测试的内容,在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。,(1) 模块接口测试,在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:调用本模块的输入参数是否正确;本模块

3、调用子模块时输入给子模块的参数是否正确;全局量的定义在各模块中是否一致;,在做内外存交换时要考虑:文件属性是否正确;OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文书写输入错误,IO错误是否检查并做了处理。,(2) 局部数据结构测试,不正确或不一致的数据类型说明 使用尚未赋值或尚未初始化的变量 错误的初始值或错误的缺省值 变量名拼写错或书写错 不一致的数据类型 全局数据对模块的影响,(3) 路径测试,选择适当的测试用例,对模块中重要的执行路径进行测试。 应当设计测试用例查找由于错误的计算、不正确的比较或不正常

4、的控制流而导致的错误。 对基本执行路径和循环进行测试可以发现大量的路径错误。,(4) 错误处理测试,出错的描述是否难以理解 出错的描述是否能够对错误定位 显示的错误与实际的错误是否相符 对错误条件的处理正确与否 在对错误进行处理之前,错误条件是否已经引起系统的干预等,(5) 边界测试,注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。 如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。,2. 单元测试的步骤,模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联

5、系,用一些辅助模块去模拟与被测模块相联系的其它模块。驱动模块 (driver) 桩模块 (stub) 存根模块,如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。 对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。,主要测试以下五个方面: 1、模块接口: 内部检查:传输参数的数目、属性、单位、次序是否匹配;全程变量的定义是否一致;只做输入的变元有无被修改,等等。 外部检查:打开、结束、关闭文件的操作;文件和属性;IO错误处理;输出拼写,等等。 2、局部数据结构:

6、数据说明(declaration);初始化与缺省值的设置;变量名拼写;数据类型的相容性;上下溢出及地址异常,等等。,3、重要的执行通路:由于穷尽测试不可能,故通常针对最常见的错误设计测试方案。较常见的错误有: 计算次序问题 不同类型混合运算(例:比较类型不同的量) 初值设置错误 精度问题(例:精度不够导致两变量不可能相等,而程序中等待相等条件的出现) 表达式错误 循环终止条件错误(例:次数差1,或陷入死循环),4、出错处理通路:预见出现错误的条件,设置处理。较常见的问题有: 输出的错误信息难以理解,不能确定错误位置 描述的错误与实际错误不符 处理之前系统已经干预 处理不正确,1、代码审查(co

7、de inspection) Walk-through: 例如 Lucent Technologies 的测试策略,是由三人一组(包括 author, reader, 和recorder),逐行检查源代码。 Rehearsal:由人扮演computer,模拟执行情况,优点: 一次审查可发现多个错误,不必改一个测一个。,单元测试的主要手段 :,2、制做测试软件:Stub (存根)和 Driver(驱动)软件的编写,属额外开支。模块高内聚可简化这一过程。,代码审查通常在开发人员之间开展,用眼睛检查代码是否符合编程规范。为什么有了软件测试,还要代码审查? 因为代码审查有一些独到的优点,可以弥补软件测

8、试的不足: (1)软件测试不能发现代码风格不统一的问题,而代码审查则很容易做到; (2)有经验的人可以一目十行地审查代码,很快就能抓住一些Bug(主要是常见的Bug)。 开发小组在执行代码审查之前要制定“代码审查表”,从编程规范中提取最重要的规则。 为了提高代码审查效率,检查者不必给每一个检查项填写结论,凡是正确的就跳过去,仅仅记录缺陷就行了。,组装测试(Integrated Testing),组装测试 (集成测试、联合测试) 通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。如需要考虑以下的问题: 一个模块的功能是否会对另一个模块的功能产生不利的影响 各个子功能组合起来,能否

9、达到预期要求的父功能,通常,把模块组装成为系统的方式有两种一次性组装方式(big bang)增殖式组装方式,组装测试(Integrated Testing),增殖式组装方式,这种组装方式又称渐增式组装 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统 在组装的过程中边连接边测试,以发现连接过程中产生的问题 通过增殖逐步组装成为要求的软件系统。,组装测试(Integrated Testing),(1) 自顶向下的增殖方式,(2) 自底向上的增殖方式,(3) 混合增殖式测试,组装测试(Integrated Testing),增殖式组装方式的种类,1. 一次性组装方式 (big ba

10、ng),它是一种非增殖式组装方式。也叫做整体拼装。 使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。,2. 增殖式组装方式,这种组装方式又称渐增式组装 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统 在组装的过程中边连接边测试,以发现连接过程中产生的问题 通过增殖逐步组装成为要求的软件系统。,(1) 自顶向下的增殖方式,这种组装方式将模块按系统程序结构,沿控制层次自顶向下进行组装。 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。 选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。,(2)

11、自底向上的增殖方式,这种组装的方式是从程序模块结构的最底层的模块开始组装和测试。 因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。,自顶向下增殖的方式和自底向上增殖的方式各有优缺点。 一般来讲,一种方式的优点是另一种方式的缺点。,(3) 混合增殖式测试,衍变的自顶向下的增殖测试首先对输入输出模块和引入新算法模块进行测试;再自底向上组装成为功能相当完整且相对独立的子系统;然后由主模块开始自顶向下进行增殖测试。,自底向上自顶向下的增殖测试首先对含读操作的

12、子系统自底向上直至根结点模块进行组装和测试;然后对含写操作的子系统做自顶向下的组装与测试。 回归测试这种方式采取自顶向下的方式测试被修改的模块及其子模块;然后将这一部分视为子系统,再自底向上测试。,关键模块问题,在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。 关键模块的特征: 满足某些软件需求; 在程序的模块结构中位于较高的层次(高层控制模块); 较复杂、较易发生错误; 有明确定义的性能要求。,1、非渐增式测试 (Big-bang testing),两种方式的比较: Incremental testing 可以较早发现模块间的接口错误;Big-bang testing 最后才组装

13、,因此错误发现得晚。 Big-bang testing 中发现错误后难以诊断定位; Incremental testing 中,出现的错误往往跟最新加入的模块有关。 Incremental testing 在不断集成的过程中使模块不断在新的条件下受到新的检测,测试更彻底。 Incremental testing 较 Big-bang testing 费时。 Big-bang testing 可以同时并行测试所有模块,能充分利用人力。,2、渐增式测试 (Incremental testing), Top-down testing 第1步:测试顶端模块,用存根程序(stub)代替直接附属的下层模块

14、Stub: to simulate the activity of the component which is not yet tested.,3、Incremental testing 的几种策略,第2步:根据深度优先或宽度优先的策略,每次用一个实际模块代换一个stub。,第3步:在结合进一个模块的同时进行测试。,M,第4步:回归测试(regression testing)全部或部分地重复以前做过的测试。, Bottom - up testing 第1步:把低层模块组合成族,每族实现一个子功能。 第2步:用驱动程序(Driver)协调测试数据的IO,测试子功能族。,优点:在早期即对主要控制

15、及关键的抉择进行检验。 问题:Stub只是对低层模块的模拟,测试时没有重要的数据自下往上流,许多重要的测试须推迟进行,而且在早期不能充分展开人力。,Driver: to call a particular component and passes a test case to it.,第3步:去掉Driver,自下而上把子功能族合成更大的子功能族。,M,M,M,注意:两种策略的优、缺点刚好互补,但单用其中任一种都不实际,通常根据软件的特点将二者混用。,确认测试(Validation Testing),确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。 对软件的功

16、能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。 确认测试应交付的文档有:确认测试分析报告最终的用户手册和操作手册项目开发总结报告。,任务:验收软件的有效性(功能和性能达标)。 手段:黑盒测试;用户参与;主要用实际数据进行测试。 内容:按合同规定审查软件配置; 设计测试计划,使通过测试保证软件能满足所有功能、性能要求; 文档与程序一致,具有维护阶段所必须的细节; 严格按用户手册操作,以检查手册的完整性和正确性。,1. 进行有效性测试(黑盒测试),有效性测试是在模拟的环境 (可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。 首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号