北大青鸟测试教程第04章.ppt

上传人:小飞机 文档编号:6447575 上传时间:2023-11-01 格式:PPT 页数:70 大小:301.32KB
返回 下载 相关 举报
北大青鸟测试教程第04章.ppt_第1页
第1页 / 共70页
北大青鸟测试教程第04章.ppt_第2页
第2页 / 共70页
北大青鸟测试教程第04章.ppt_第3页
第3页 / 共70页
北大青鸟测试教程第04章.ppt_第4页
第4页 / 共70页
北大青鸟测试教程第04章.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《北大青鸟测试教程第04章.ppt》由会员分享,可在线阅读,更多相关《北大青鸟测试教程第04章.ppt(70页珍藏版)》请在三一办公上搜索。

1、第 4 章 软 件 测 试 过 程,4.1 软件测试过程概述4.2 单 元 测 试4.3 集 成 测 试4.4 系 统 测 试4.5 验 收 测 试4.6 回 归 测 试4.7 系 统 排 错,4.1 软件测试过程概述,软件测试过程与软件工程的开发过程是相对的。第2章图2-1采用V形图表示软件开发与软件测试的对应关系,也可以采用图4-1所示的螺旋形图来表示这种关系。,图4-1 测试过程,单元测试的目的是保证每个模块单独运行正确,多采用白盒技术,检查模块控制结构的某些特殊路径,期望覆盖尽可能多的出错点。经单元测试后的模块,组装为软件包,对软件包进行集成测试,主要测试软件结构问题,因测试建立在模块

2、间的接口上,所以多为黑盒测试,适当辅以白盒测试技术,以便能对主要控制路径进行测试。,系统测试主要是检验软件是否满足功能、行为和性能方面的要求,这一步完全采用黑盒测试技术。验收测试是检验软件产品的最后一道工序,与前面各种测试过程的不同之处主要在于它突出了客户的作用,同时软件开发人员也要参与。,4.2 单 元 测 试,单元测试是对软件设计的最小单元模块进行正确性检验的测试工作,主要测试模块在语法、格式和逻辑上的错误。,单元测试应对模块内所有重要的控制路径进行测试,以便发现模块内部的错误。单元测试是检查软件源程序的第一次机会,通过孤立地测试每个单元,确保每个单元工作正常,这样比单元作为一个更大系统的

3、一个部分更容易发现问题。在单元测试中,每个程序模块可以并行、独立地进行测试工作。,4.2.1 单元测试的主要任务 单元测试是针对每个程序模块进行测试,单元测试的主要任务是解决以下5个方面的测试问题。1模块接口测试 针对模块接口测试应进行的检查,主要涉及以下几方面的内容。,模块接受输入的实际参数个数与模块的形式参数个数是否一致。输入的实际参数与模块的形式参数的类型是否匹配。输入的实际参数与模块的形式参数所使用单位是否一致。,调用其他模块时,所传送的实际参数个数与被调用模块的形式参数的个数是否相同。调用其他模块时,所传送的实际参数与被调用模块的形式参数的类型是否匹配。调用其他模块时,所传送的实际参

4、数与被调用模块的形式参数的单位一致。调用内部函数时,参数的个数、属性和次序是否正确。,在模块有多个入口的情况下,是否有引用与当前入口无关的参数。是否会修改了只读型参数。出现全局变量时,这些变量是否在所有引用它们的模块中都有相同的定义。11.有没有把某些约束当做参数来传送。,2模块局部数据结构测试3模块中所有独立执行路径测试4各种错误处理测试5模块边界条件测试,4.2.2 单元测试的执行过程 一般情况下,在完成了程序编写、复查和语法正确性验证后,就应进行单元测试。测试用例设计应与复审工作相结合,根据设计信息选取数据,将增大发现上述各类错误的可能性。,在进行单元测试时,需设置若干辅助测试模块。辅助

5、模块有两种,一种是驱动模块(Driver),用以模拟被测试模块的上级模块。另一种是被调用模拟子模块(Sub),用以模拟被测模块工作过程中所调用的模块。图4-2显示了一般的单元测试环境。,图4-2 一般单元测试环境,4.2.3 单元测试技术和测试数据用于单元测试的主要技术如下。1静态测试2白盒测试3状态转换测试4功能测试和非功能测试,单元测试中使用的数据,通常不使用真实数据。当被测试单元的功能不涉及操纵或使用大量数据时,测试中可以使用有代表性的一小部分手工制作的测试数据。在创建测试数据时,应确保数据充分地测试单元的边界条件。当被测试单元要操纵大量数据,并且有很多单元都有这种需求时,可以考虑使用真

6、实数据的一个较小的有代表性的样本。测试时还要考虑往样本数据中引入一些手工制作的数据,以便测试单元的某个具体特性,例如对错误条件的响应等。,当测试一个单元要从远程数据源接收数据时(例如,从一个客户端/服务器系统中接收数据),有必要在单元测试中使用测试辅助程序,来模拟对这些数据的访问。但在考虑这种选择时,必须首先对开发的测试辅助程序进行测试,以保证模拟的真实性。,4.2.4 单元测试人员 单元测试一般由开发设计人员本身完成,一般由开发组在组长的监督下进行,由编写该单元的开发设计者设计所需的测试用例和测试数据,来测试该单元并修改缺陷。开发组组长负责保证使用合适的测试技术,在合理的质量控制和监督下执行

7、充分的测试。,4.3 集 成 测 试,将经过单元测试的模块按设计要求连接起来,组成所规定的软件系统的过程称为“集成”。,4.3.1 集成测试的主要任务集成测试是组装软件的系统测试技术之一,按设计要求把通过单元测试的各个模块组装在一起之后,进行集成测试的主要任务是要求软件系统符合实际软件结构,发现与接口有关的各种错误。单元测试的主要任务是解决以下5个方面的测试问题。,将各模块连接起来,检查模块相互调用时,数据经过接口是否丢失。将各个子功能组合起来,检查能否达到预期要求的各项功能。一个模块的功能是否会对另一个模块的功能产生不利的影响。全局数据结构是否有问题,会不会被异常修改。单个模块的误差积累起来

8、,是否被放大,从而达到不可接受的程度。,4.3.2 集成测试方法 集成测试包括两种不同方法:非增量式集成和增量式集成。,1非增量式测试方法 概括来说,非增量式测试方法是采用一步到位的方法来进行测试,即对所有模块进行个别的单元测试后,按程序结构图将各模块连接起来,把连接后的程序当做一个整体进行测试。图4-3给出的是采用这种非增量式的集成测试方法的一个经典例子。,2增量式测试方法(1)自顶向下增量式测试 自顶向下增量式测试表示逐步集成和逐步测试是按结构图自上而下进行的。即模块集成的顺序是首先集成主控模块(主程序),然后按照软件控制层次结构向下进行集成。,图4-4 自顶向下集成,集成测试的整个过程由

9、下列3个步骤完成。主控模块作为测试驱动器,把对主控模块进行单元测试时引入的被调用模拟子模块用实际模块替代。依照所选用的模块集成策略(深度优先和广度优先),下层的被调用模拟子模块一次一个地被替换为真正的模块。在每个模块被集成时,都必须立即进行测试一遍。,回到第2步重复进行,直到整个系统结构被集成完成。图4-5给出了一个按广度优先策略进行集成测试的典型例子。,图4-5 自顶向下增量式测试(广度优先策略),(2)自底向上增量式测试 自底向上增量式测试是从最底层的模块开始,按结构图自下而上逐步进行集成和测试。图4-6表示了采用自底向上增量式测试实现同一实例的过程。,图4-6 自底向上增量式测试,4.3

10、.3 集成测试技术和测试数据 集成测试主要测试软件的结构问题,因为测试建立在模块的接口上,所以多为黑盒测试,适当辅以白盒测试。,执行集成测试应遵循下面的方法。确认组成一个完整系统的模块之间的关系。评审模块之间的交互和通信需求,确认出模块间的接口。使用上述信息产生一套测试用例。采用增量式测试,依次将模块加入到(扩充)系统,并测试新合并后的系统,这个过程以一个逻辑/功能顺序重复进行,直至所有模块被功能集成进来形成完整的系统为止。,此外,在测试过程中尤其要注意关键模块,所谓关键模块一般都具有下述一个或多个特征。对应几条需求。具有高层控制功能。复杂,易出错。有特殊的性能要求。,因为集成测试的主要目的是

11、验证组成软件系统的各模块的接口和交互作用,因此集成测试对数据的要求无论从难度和内容来说一般不是很高。集成测试一般也不使用真实数据,测试人员可以使用手工制作一部分代表性的测试数据。在创建测试数据时,应保证数据充分测试软件系统的边界条件。在单元测试时,根据需要生成了一些测试数据,在集成测试时可适当地重用这些数据,这样可节省时间和人力。,4.3.4 集成测试遵循的原则 集成测试很不好把握,应针对总体设计尽早开始筹划。为了做好集成测试,需要遵循以下原则。所有公共接口都要被测试到。关键模块必须进行充分的测试。集成测试应当按一定的层次进行。,集成测试的策略选择应当综合考虑质量、成本和进度之间的关系。集成测

12、试应当尽早开始,并以总体设计为基础。在模块与接口的划分上,测试人员应当和开发人员进行充分的沟通。当接口发生修改时,涉及的相关接口必须进行再测试。测试执行结果应当如实记录。,4.3.5 集成测试人员 由于集成测试不是在真实环境下进行,而是在开发环境,或是一个独立的测试环境下进行的,所以集成测试所需人员一般从开发组中选出,在开发组长的监督下进行,开发组长负责保证在合理的质量控制和监督下使用合适的测试技术执行充分的集成测试。,在集成测试过程中,测试过程由一个独立测试观察员来监控测试工作。集成测试过程中应考虑邀请一个用户代表非正式地观看集成测试。,4.4 系 统 测 试,集成测试通过以后,软件已经组装

13、成一个完整的软件包,这时就要进行系统测试。,4.4.1 系统测试的任务系统测试一般要完成以下几种测试。1功能测试2性能测试3恢复测试4安全测试5强度测试6其他限制条件的测试,4.4.2 系统测试技术和测试数据 系统测试完全采用黑盒测试技术,因为这时已不需要考虑组件模块的实现细节,而主要是根据需求分析时确定的标准检验软件是否满足功能、行为、性能和系统协调性等方面的要求。系统测试所用的数据必须尽可能地像真实数据一样精确和有代表性,也必须和真实数据的大小和复杂性相当。满足上述测试数据需求的一个方法是使用真实数据。,在不使用真实数据的情况下应该考虑使用真实数据的一个拷贝。拷贝数据的质量、精度和数据量必

14、须尽可能地代表真实的数据。当使用真实数据或使用真实数据的拷贝时,仍然有必要引入一些手工数据。在创建手工数据时,测试人员必须采用正规的设计技术,使得提供的数据真正有代表性,确保软件系统能充分地测试。,4.4.3 系统测试人员 系统测试由独立的测试小组在测试组长的监督下进行,测试组长负责保证在合理的质量控制和监督下使用合适的测试技术执行充分的系统测试。在系统测试过程中,测试过程由一个独立测试观察员来监控测试工作。系统测试过程也应考虑邀请一个用户代表非正式地观看测试,同时得到用户反馈意见并在正式验收测试之前尽量满足用户的要求。,4.5 验 收 测 试,系统测试完成后,并使系统试运行了预定的时间,应进

15、行验收测试。4.5.1 验收测试的主要任务 软件验收测试应完成的主要测试工作包括以下几方面。,1文档资料的审查验收2功能测试3性能测试4强化测试5性能降级执行方式测试6检查系统的余量要求7安装测试8用户操作测试,4.5.2 验收测试技术和测试数据 验收测试完全采用黑盒测试技术,主要是用户代表通过执行其在平常使用系统时的典型任务来测试软件系统,根据业务需求分析,检验软件是否满足功能、行为、性能和系统协调性等方面的要求。,只要有可能,在验收测试中就应该使用真实数据。当真实数据中包含机密性或安全性信息,并且这些数据在局部或整个验收测试中可见时,就必须采取以下措施来保证。用户代表被允许使用这些数据,或

16、者合理地组织测试使测试组长不必看到这些数据也可进行测试。测试观察员被允许使用这些数据,或者能够在看不到这些数据的情况下确认并记录测试用例的成功或失败。,在不使用真实数据的情况下,应该考虑使用真实数据的一个拷贝。拷贝数据的质量、精度和数据量必须尽可能地代表真实的数据。当使用真实数据或使用真实数据的拷贝时,仍然有必要引入一些手工数据,例如,测试边界条件或错误条件时,可创建一些手工数据。在创建手工数据时,测试人员必须采用正规的设计技术,使得提供的数据真正有代表性,确保软件系统能充分地测试。,4.5.3 验收测试人员 验收测试一般在测试组的协助下,由用户代表执行。测试组长负责保证在合理的质量控制和监督

17、下使用合适的测试技术执行充分测试。测试人员在验收测试工作中将协助用户代表执行测试,并和测试观察员一起向用户解释测试用例的结果。,4.5.4、测试 软件开发设计人员在软件开发设计时,不可能完全预见用户实际使用软件系统的情况。另外,一个软件产品可能拥有众多用户,不可能由每个用户验收,此时多采用称为、测试的过程,以发现那些似乎只有最终用户才能发现的问题。,测试是在软件开发公司内模拟软件系统的运行环境下的一种验收测试,即软件开发公司组织内部人员,模拟各类用户行为对即将面市的软件产品(称为版本)进行测试,试图发现并修改错误。,经过测试调整的软件产品称为版本。紧随其后的测试是指软件开发公司组织各方面的典型

18、用户在日常工作中实际使用版本,并要求用户报告异常情况,提出批评意见。然后软件开发公司再对版本进行改错和完善。所以,一些软件开发公司把测试看成是对一个早期的、不稳定的软件版本所进行的验收测试,而把测试看成是对一个晚期的、更加稳定的软件版本所进行的验收测试。,4.6 回 归 测 试,回归测试是指软件系统被修改或扩充(如系统功能增强或升级)后重新进行的测试,是为了保证对软件所做的修改没有引入新的错误而重复进行的测试。每当软件增加了新的功能,或者软件中的缺陷被修正,这些变更都有可能影响软件原有的功能和结构。,为了防止软件的变更产生无法预料的副作用,不仅要对内容进行测试,还要重复进行过去已经进行过的测试

19、,以证明修改没有引起未曾预料的后果,或证明修改后的软件仍能满足具体的需求。,在理想的测试环境中,程序每改变一次,测试人员都重新执行回归测试,一方面来验证新增加或修改功能的正确性,另一方面测试人员还要从以前的测试中选取大量的测试以确定是否在实现新功能的过程中引入了缺陷。,图4-7说明了回归测试和V模型之间的关系。,图4-7 回归测试和V模型,回归测试特别适用于较高阶段的测试过程,回归测试一般多在系统测试和验收测试环境下进行,以确保整个软件系统新的构造或新的版本仍然运行正确,或者确保软件系统的现有业务功能完好无损。,4.6.1 回归测试技术和测试数据 回归测试一般采用黑盒测试技术来测试软件的高级需

20、求,而无须考虑软件的实现细节,也可能采用一些非功能测试来检查系统的增强或扩展是否影响了系统的性能特性,以及与其他系统间的互操作性和兼容性问题。,错误猜测在回归测试中是很重要的。错误看起来像是通过直觉发现软件中的错误或缺陷,实际上错误猜测主要来自于经验,测试者是使用了一系列技术来确定测试所要达到的范围和程度,这些技术主要有:有关软件设计方法和实现技术;有关前期测试阶段结果的知识;测试类似或相关系统的经验,了解在以前的这些系统中曾在哪些地方出现缺陷;,典型的产生错误的知识,如被零除错误;通用的测试经验规则。设计和引入回归测试数据的重要原则是,应保证数据中可能影响测试的因素与未经修改扩充的原软件上进

21、行测试时的哪些因素尽可能一致,否则要想确定观测到的测试结果是由于数据变化还是很困难的。,4.6.2 回归测试的范围 在回归测试范围的选择上,一个最简单的方法是每次回归执行所有在前期测试阶段建立的测试,来确认问题修改的正确性,以及没有造成对其他功能的不利影响。,常用的用例选择方法可以分为以下3种。(1)局限在修改范围内的测试(2)在受影响功能范围内回归(3)根据一定的覆盖率指标选择回归测试,4.6.3 回归测试人员 由于回归测试一般与系统测试和验收测试相关,所以要由测试组长负责,确保选择使用合适的技术和在合理的质量控制中执行充分的回归测试。测试人员在回归测试工作中将设计并实现测试新的扩展或增强部

22、分所需的新测试用例,并使用正规的设计技术创建或修改已有的测试数据。,在回归测试过程中,测试过程由一个测试观察员来监控测试工作。在回归测试完成时测试组组长负责整理并归档大量的回归测试结果,包括测试结果记录、回归测试日志和简短的回归测试总结报告。,4.7 系 统 排 错,系统测试的目的是为了发现尽可能多的错误,系统排错的任务就是根据测试时所发现的错误,找出原因和具体的位置,并进行改正。排错工作主要由程序开发人员进行,也就是说,谁开发的程序由谁来排错。,1排错过程2排错方法,下面简要介绍常用的3种排错方法。原始类排错方法是最常用也是最低效的方法,只有在万般无奈的情况下才使用它,主要思想是“通过计算机找错”。回溯法能成功地用于程序的排错。,归纳和演绎法采用“分治”的概念,首先基于错误出现有关的所有数据,假想一个错误原因,用这些数据证明或反驳它;或者一次列出所有可能的原因,通过测试一一排除。只要某次测试结果说明某种假设已呈现倪端,则立即精化数据,进一步进行深入的测试。,前面多次提到,修改一处老问题可能引入几处新问题,有时程序越改越乱,但若能做到每次纠错前都细心注意以下3个问题,情况将大为改观。导致这个错误的原因在程序其他部分还可能存在吗?本次修改可能对程序中相关的逻辑和数据造成什么影响?引起什么问题?上次遇到的类似问题是如何排除的?,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号