软件测试相关理论知识

上传人:豆浆 文档编号:48452355 上传时间:2018-07-15 格式:PPT 页数:94 大小:916KB
返回 下载 相关 举报
软件测试相关理论知识_第1页
第1页 / 共94页
软件测试相关理论知识_第2页
第2页 / 共94页
软件测试相关理论知识_第3页
第3页 / 共94页
软件测试相关理论知识_第4页
第4页 / 共94页
软件测试相关理论知识_第5页
第5页 / 共94页
点击查看更多>>
资源描述

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

1、测试技术 - 软件测试策略软件测试策略2概述单元测试集成测试确认测试系统测试验收测试软件测试策略3什么是软件测试策略? 是为软件工程过程定义的一个软件测试的模板,也就是把特定的测试用例 方法放置进去的一系列步骤。软件测试策略包含的特征: (1)测试从模块层开始,然后扩大延伸到整个基于计算机的系统集合中。 (2)不同的测试技术适用于不同的时间点。 (3)测试是由软件的开发人员和(对于大型系统而言)独立的测试组来管 理的。 (4)测试和调试是不同的活动,但是调试必须能够适应任何的测试策略。软件测试充分性准则4对任何软件都存在有限的充分测试集合。如果一个软件系统在一个测试数据集合上的测试是充分的,那

2、么再多测 试一些数据也应该是充分的。这一特性称为单调性。即使对软件所有成分都进行了充分的测试,也并不表明整个软件的测试 已经充分了。这一特性称为非复合性。即使对软件系统整体的测试是充分的,也并不意味软件系统中各个成分 都已经充分地得到了测试。这个特性称为非分解性。软件测试的充分性应该与软件的需求和软件的实现都相关。软件越复杂,需要的测试数据就越多。这一特性称为复杂性。测试得越多,进一步测试所能得到的充分性增长就越少。这一特性称为 回报递减率。单元测试(Unit Testing)5概述单元测试的内容单元测试的步骤单元测试的执行单元测试(Unit Testing)6单元测试: 又称模块测试,是针对

3、软件设计的最小单位程序模块进行 测试工作。其目的在于发现模块内可能存在的各种差错。 检查各个程序模块是否正确地实现了规定的功能。 在单元测试活动中,软件的独立单元将在与程序的其他部分 相隔离的情况下进行测试。 单元测试时,多个模块可平行地独立进行单元测试。单元测试的内容7单元测试依据在单元测试时,测试者需要依据详细设计说明书和源程序清 单,了解该模块的I/O条件和模块的逻辑结构,主要采用白 盒测试的测试用例,辅之以黑盒测试的测试用例,使之对 任何合理的输入和不合理的输入,都能鉴别和响应。单元测试的考虑 8模块接口算法和逻辑局部数据结构边界条件独立的路径错误处理 9单元测试的考虑 单元测试的考虑

4、10单元测试的考虑 - 模块接口测试11在单元测试的开始,应对通过被测模块的数据流进行 测试。只有在数据能正确流入、流出模块的前提下, 其他测试才有意义。测试项目包括: 调用本模块的输入参数是否正确; 本模块调用子模块时输入给子模块的参数是 否正确;是否修改了只读型参数 全局量的定义在各模块中是否一致; 单元测试的考虑 - 模块接口测试12如果模块内包括外部输入输出,还应该考虑下列 因素:文件属性是否正确;OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文书写输入错误,IO错误是否检查并做了处理。单元测试的考虑

5、 - 局部数据结构测试13检查局部数据结构是为了保证临时存储在模块内的数 据在程序执行过程中完整、正确。局部数据结构往往 是错误的根源,应仔细设计测试用例,力求发现下面 几类错误:不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值变量名拼写错或书写错上溢、下溢或地址异常 除了局部数据结构外,如可能,单元测试时还应该查清全局数 据(如FORTRAN的公用区)对模块的影响。14在模块中应对每一条独立执行路径进行测试,单元测 试的最基本要求是满足语句覆盖。设计测试用例是为 了发现因错误计算、不正确的比较和不适当的控制流 造成的错误。此时基本路径测试和循环测试是最常用

6、 且最有效的测试技术。计算中常见的错误包括:误解或用错了算符优先级;混合类型运算;变量初值错;精度不够;表达式符号错。单元测试的考虑 - 路径测试单元测试的考虑 - 路径测试15比较判断与控制流常常紧密相关,测试用例还应致力于发现 下列错误: 不同数据类型的对象之间进行比较;错误地使用逻辑运算符或优先级;因计算机表示的局限性,期望理论上相等而实际上不相等 的两个量相等;比较运算或变量出错;循环终止条件或不可能出现;迭代发散时不能退出;错误地修改了循环变量。16一个好的设计应能预见各种出错,并预设各种出错处 理,出错处理需认真测试,测试应着重检查下列问题 :出错的描述是否难以理解出错的描述是否能

7、够对错误定位显示的错误与实际的错误是否相符对错误条件的处理正确与否在对错误进行处理之前,错误条件是否已经引起系统的干 预。单元测试的考虑 - 错误处理测试17边界条件测试是单元测试中最后,也是最重要的一项 任务。众所周知,软件经常在边界上失效,采用边界 值分析技术,注意数据流、控制流中刚好等于、大于 或小于确定的比较值时出错的可能性。对这些地方要 仔细地选择测试用例,认真加以测试。如果对模块运行时间有要求的话,还要专门进行关键 路径测试,以确定最坏情况下和平均意义下影响模块 运行时间的因素。单元测试的考虑 - 边界测试单元测试的步骤18一般认为,单元测试应紧接在编码之后,当源程序编制 完并通过

8、复审和编译检查,便可开始单元测试。 驱动模块和桩模块 模块并不是一个独立的程序,在考虑测试模块时,同时要考虑 它和外界的联系,应为测试模块开发一个驱动模块(driver) 和(或)若干个桩模块(stub),下图显示了一般单元测试的 环境。驱动模块:用于模拟被测模块的上级模块。在大多数场合称 为“主程序”,它接收测试数据并将这些数据传递到被测试模块 ,被测试模块被调用后,“主程序”显示类似“进入-退出”消息。桩模块:也称存根程序,用于模拟被测模块的调用模块。19单元测试的步骤单元测试的步骤20单元测试的说明驱动模块和桩模块是测试用的软件,而不是软件产品的组成部分 ,它需要一定的开发费用。若驱动和

9、桩模块比较简单,实际开销 相对低些。遗憾的是,仅用简单的驱动模块和桩模块有时不能完 成某些模块的测试任务,这些模块的单元测试只能采用一些综合 测试方法。提高模块的内聚度可简化单元测试,如果每个模块只完成一个功 能,所需测试用例数目将显著减少,模块中的错误也更易发现。如果一个模块要完成多种功能,可以将这个模块看成由几个小程 序组成。必须对其中的每个小程序先进行单元测试要做的工作, 对关键模块还要做性能测试。对支持某些标准规程的程序,更要着手进行互联测试。有人把这 种情况特别称为模块测试,以区别单元测试。单元测试的执行21检查编码是否遵循软件编程规范和标准自动或手动分析程序设计测试用例并运行错误跟

10、踪分析软件测试策略22概述单元测试集成测试确认测试系统测试验收测试当前位置集成测试23概述集成测试的方式一次性组装方式(big bang) 增殖式组装方式自顶向下结合自底向上结合 混合增殖试测试其他集成测试24也称为组装测试 、联合测试,是将模块按照设计要 求组装起来进行测试,主要目标是发现与接口有关的 问题。通常,在单元测试的基础上,需要将所有模块按照设 计要求组装成为系统。这时需要考虑的问题是: 在把各个模块连接起来的时侯,穿越模块接口的数据是 否会丢失; 一个模块的功能是否会对另一个模块的功能产生不利的 影响;集成测试25为什么进行集成测试?一个模块可能对另一个模块产生不利的影响将子功能

11、合成时不一定产生所期望的主功能独立可接受的误差在组装后可能会超过可接受的误差限度可能会发现单元测试中未发现的接口方面的错误在单元测试中无法发现时序问题(实时系统)在单元测试中无法发现资源竞争问题集成测试的目的26在模块组装后查找模块间接口的错误各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不 能接受的程度。在单元测试的同时可进行组装测试,发现并排除在模 块连接中可能出现的问题,最终构成要求的软件系统 。 27子系统的组装测试特别称为部件测试,它所做的工作 是要找出组装后的子系统与系统需求规格说明之间的 不一致。通常,把模块组装

12、成为系统的方式有两种 一次性组装方式(big bang) 增殖式组装方式集成测试的方式28它是一种非增殖式组装方式。也叫做整体拼装。非增式测试方法采用一步到位的方法来构造测试:对 所有模块进行个别的单元测试后,按程序结构图将各 模块联接起来,把联接后的程序当作一个整体进行测 试集成测试 - 一次性组装方式29集成测试 - 一次性组装方式集成测试 - 一次性组装方式30一次性组装方式的做法是先分散测试,再集中起来 一次完成集成测试。因此其特点是:可以并行调试所有模块,因此充分利用人力,加快工 作进度。如果在模块的接口处存在差错,只会在最后的集成测 试时一下子暴露出来。 错误定位困难集成测试 -

13、增殖式组装方式31这种组装方式又称渐增式组装首先对一个个模块进行模块测试,然后将这些模块逐 步组装成较大的系统在组装的过程中边连接边测试,以发现连接过程中产 生的问题通过增殖逐步组装成为要求的软件系统。集成测试 - 增殖式组装方式32增式测试把单元测试与集成测试结合起来进行,将模块逐步集成起 来,逐步完成集成测试。优点:把可能出现的差错分散暴露出来,便于找出问题和修改 ;一 些模块在逐步集成的测试中,得到了较为频繁的考验,因而可能取 得较好的测试效果 实施方法:自顶向下结合自底向上结合 自顶向下增式测试 33集成步骤:主控模块作为测试驱动,所有与主控模块直接相连的模块作 为桩模块;根据集成的方

14、式(深度或广度),每次用一个替换从属的桩 模块;在每个模块被集成时,都必须已经进行了单元测试;进行回归测试以确定集成新模块后没有引入错误 上述过程从第2步重复进行,直到整个系统结构被集成完成。 自顶向下增式测试 34特点:这种组装方式将模块按系统程序结构,沿控制层次自顶向下 进行组装。自顶向下的增殖方式在测试过程中较早地验证了主要的控制 和判断点。选用按深度方向组装的方式,可以首先实现和验证一个完整 的软件功能。35自顶向下增式测试 自底向上增式测试36工作程序:组装从最底层的模块开始,组合成一个构件,用以完成指 定的软件子功能编制驱动程序,协调测试用例的输入与输出;测试集成后的构件按程序结构

15、向上组装测试后的构件,同时除掉驱动程序自底向上增式测试37这种组装的方式是从程序模块结构的最底层的模块开 始组装和测试。因为模块是自底向上进行组装,对于一个给定层次的 模块,它的子模块(包括子模块的所有下属模块)已 经组装并测试完成,所以不再需要桩模块。在模块的 测试过程中需要从子模块得到的信息可以直接运行子 模块得到。自底向上增式测试38两种实施方法的比较 优点缺点自顶向 下测试 可以自然地做到逐步求精,一 开始便能让测试者看到系统的 框架 o需要提供桩模块 o在输入/输出模块接入系统以前,在桩模块中表示测 试数据有一定困难 o由于桩模块不能模拟数据,如果模块间的数据流不 能构成有向的非环状

16、图,一些模块的测试数据难于 生成;o观察和解释测试输出往往也是困难的 自底向 上测试 o由于驱动模块模拟了所有调 用参数,即使数据流并未构 成有向的非环状图,生成测 试数据也没有困难 o特别适合于关键模块在结构 图的底部的情况 o直到最后一个模块被加进去之后才能看到整个程序 (系统)的框架 o只有到测试过程的后期才能发现时序问题和资源竞 争问题39混合增殖式测试40自顶向下增殖的方式和自底向上增殖的方式各有优缺 点。一般来讲,一种方式的优点是另一种方式的缺点 。因此,通常是把以上两种方式结合起来进行组装和 测试。下面简单介绍三种常见的综合的增殖方式。混合增殖式测试41衍变的自顶向下的增殖测试 它的基本思想是强化对输入/输出模块的和引入新算法模块的 测试,并自底向上组装成为功能相当完整且相对独立

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

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

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