第9章 软件测试过程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件质量保证与测试1第9章软件测试过程2内容提要9.1计算机软件的可靠性要素9.1.1软件可靠性工程9.1.2注意的要素9.2软件测试的目的和原则9.2.1软件测试的目的9.2.2软件测试的原则9.3软件测试过程9.3.1软件测试过程概述9.3.2单元测试9.3.3集成测试9.3.4系统测试9.3.5验收测试9.3.6回归测试3内容提要9.4软件测试与软件开发的关系9.4.1软件测试贯穿于整个软件开发生命周期9.4.2生命周期测试与V模型9.5软件测试的过去、现在和未来9.6我国软件测试产业的现状9.7测试工具选择9.7.1白盒测试工具9.7.2黑盒测试工具9.7.3测试设计和开发工具9.7.4测试执行和评估工具9.7.5测试管理工具9.7.6功能和成本9.8小结49.1计算机软件的可靠性要素9.1.1软件可靠性工程软件可靠性(SoftwareReliability)是软件质量中的一个重要因素,同时,它还是软件系统固有特性之一,它表明了一个软件系统按照用户的要求和设计的目标,执行其功能的正确程度。软件可靠性与软件缺陷有关,也与系统输入和系统使用有关。理论上说,可靠的软件系统应该是正确、完整、一致和健壮的。但是实际上任何软件都不可能达到百分之百的正确,而且也无法精确度量。一般情况下,只能通过对软件系统进行测试来度量其可靠性。软件可靠性有很多不同描述的定义,目前被广泛接受的定义是:“软件可靠性是软件系统在规定的时间内及规定的环境条件下,软件不引起系统失效的概率。”该概率是系统功能及软件中存在的差错的函数。软件可靠性是软件的客观属性,它只有在软件运行时才表现出来。因此,一般来说,软件失效就意味着在软件运行时不能够完成需求中所规定的预期任务。59.1.2注意的要素规定的时间规定的环境条件不引起系统失效研究软件可靠性的目的软件的可靠性与正确性的区别69.2软件测试的目的和原则软件测试就是在软件投入运行前,对软件的需求分析、设计、实现编码进行最终审查。表面上看,软件工程的其他阶段都是建设性的,而软件测试是摧毁性的。但是,软件测试的最终目的是建立一个高可靠性的软件系统的一部分。正如本章开篇所说,它的定义为:软件测试就是为了发现缺陷而运行程序的过程。79.2.1软件测试的目的著名软件工程专家G.J.Myers将软件测试的目的归纳:测试是程序的执行过程,目的在于发现错误;一个好的测试用例在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。89.2.2软件测试的原则在整个开发过程中要尽早地和不断地进行软件测试。在开始测试时,不应默认程序中不存在错误。设计测试用例时,要给出测试的预期结果。测试工作应避免由系统开发人员或开发机构本身来承担。对合理的和不合理的输入数据都要进行测试。重点测试错误群集的程序区段。除检查程序功能是否完备外,还要检查程序功能是否有多余。用穷举测试是不可能的。长期完整保留所有的测试用例和测试文件,直至该软件产品被废弃为止。99.3软件测试过程9.3.1软件测试过程概述由于软件错误的复杂性,在软件工程范围内要综合应用测试技术,根据定义域中的取值,通过执行和观察,将预期的行为和实际的行为做比较,以确认测试的结果,因此软件测试是一个综合测试的过程。软件测试时需要以下三类信息:软件配置:指需求说明书、设计说明书和源程序等。测试配置:指测试方案、测试用例和测试驱动程序等。测试工具:指计算机辅助测试的有关工具。10软件测试过程交付模块单元测试单元测试单元测试集成测试集成测试系统测试验收测试模块模块回归测试贯穿整个测试过程119.3.2单元测试定义测试内容接口测试局部数据结构测试重要执行路径测试错误处理测试边界条件测试测试方法驱动模块桩模块测试技术静态测试白盒测试状态转换测试功能测试和非功能测试测试人员(模拟E)(模拟D)(模拟M)MBACDE驱动模块B测试用例测试结果桩模块1桩模块2(a)软件结构(b)模块B的测试环境129.3.3集成测试定义测试内容测试方法非增量式集成测试方法增量式集成测试方法自顶向下增量式集成测试自底向上增量式集成测试测试技术测试人员13两种测试方法的比较测试方法优点缺点自顶向下1.如果程序错误趋向于发生在程序的顶端时,有利于查出错误。2.可以较早出现程序的轮廓。3.加进输人/输出模块后,较方便描述测试用例。1.桩模块较难设计。2.模块介入使结果较难观察。自底向上1.如果程序错误趋向于发生在程序的底端时,有利于查出错误。2.容易产生测试条件和观察测试结果。3.容易编写驱动模块。1.在加入最后一个模块之前,程序不能作为一个整体存在。2.必须给出驱动程序。149.3.4系统测试定义测试内容功能测试性能测试强度测试可靠性测试恢复测试安装测试安全性测试配置测试可用性测试兼容性测试网站测试测试技术测试人员159.3.5验收测试定义测试内容测试技术α测试β测试测试人员169.3.6回归测试定义测试策略测试用例库的维护回归测试包的选择测试过程测试技术测试人员179.4软件测试与软件开发的关系9.4.1软件测试贯穿于整个软件开发生命周期上世纪70年代中期以来,逐渐形成了软件开发声明周期的概念。这对于软件产品的质量保证以及组织好软件开发工具有着重要的意义。首先,由于能够把整个开发工作明确地划分为若干个开发步骤,就能把复杂的问题按阶段分别加以解决。使得对于问题的认识与分析、解决的方案与采用的方法以及如何具体实现在各个阶段都有着明确的目标。其次,把软件开发划分成阶段,就对中间产品提供了检验的依据。各阶段完成的软件文档成为检验软件质量的主要对象。很显然,表现在程序中的错误,并不一定是编码引起的,很可能是详细设计、概要设计阶段,甚至是需求分析阶段的问题引起的。因此,针对源程序测试时,所发现的问题的根源可能在开发时期的各个阶段。解决错误、纠正错误也必须追溯到前期的工作。正是如此,测试工作应该着眼于整个软件开发生命周期,特别是着眼于编码以前各开发阶段的工作来保证软件的质量。也就是说,测试应该从软件开发生命周期的第一个阶段开始,并贯穿于整个软件开发生命周期。189.4.2生命周期测试与V模型需求分析设计编码测试安装维护开发阶段验证活动需求分析确定测试步骤确定需求是否恰当生成功能测试用例确定设计是否符合需求设计确定设计信息是否足够准备结构和功能的测试用例确定设计的一致性编码为单元测试产生结构和功能测试的测试用例进行足够的单元测试测试看重在功能上测试应用系统安装把测试过的系统投入生产维护修改缺陷并重新测试19V模型回归测试需求规格说明设计实现验收测试系统测试集成测试单元测试209.5软件测试的过去、现在和未来软件测试是伴随着软件的产生而产生的。早期的软件开发过程中,那时软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。直到1957年,软件测试才开始与调试区别开来,作为一种发现软件缺陷的活动。由于一直存在着“为了让我们看到产品在工作,就得将测试工作往后推一点”的思想,潜意识里对测试的目的就理解为“使自己确信产品能工作”。测试活动始终后于开发的活动,测试通常被作为软件生命周期中最后一项活动而进行。当时也缺乏有效的测试方法,主要依靠“错误推测(ErrorGuessing)”来寻找软件中的缺陷。因此,大量软件交付后,仍存在很多问题,软件产品的质量无法保证。219.6我国软件测试产业的现状软件测试重要性和规范性不断提高从手工向自动化测试方式的转变测试人员需求逐步增大,素质不断提高测试服务体系初步形成229.7测试工具选择测试自动化和测试工具不仅可以提高测试任务执行的效率,还有助于:对新版本进行回归测试。执行更多更频繁的测试。执行一些手工测试困难或不可能做的测试。更好地利用资源。测试具有一致性和可重复性。测试的复用性。增加软件信任度。可以更快地将软件推向市场。239.7.1白盒测试工具静态测试工具动态测试工具249.7.2黑盒测试工具功能测试工具性能测试工具259.7.3测试设计和开发工具测试设计和开发需要的工具类型有:测试数据生成器。基于需求的测试设计工具。测试数据生成工具非常有用,测试数据生成工具可以为被测程序自动生成测试数据,减轻人们在生成大量测试数据时所付出的劳动,同时还可避免测试人员对一部分测试数据的偏见。常用的测试数据生成工具有:Bender&Associates公司提供的功能测试数据生成工具SoftTest,Parasoft公司提供的C/C++单元测试工具ParasoftC++test等。基于需求的测试设计工具至今还没有获得广泛的实际应用。Aonix公司提供了一种基于需求和设计的测试数据生成工具Validator/Req、StP/SE和StP/UML。269.7.4测试执行和评估工具测试执行和评估是执行测试用例并对测试结果进行评估的过程,包括选择用于执行的测试用例、设置测试环境、运行所选择的测试、记录测试执行过程、分析潜在的软件故障并测量测试工作的有效性。评估类工具对执行测试用例和评估测试结果这一过程起辅助作用。测试执行和评估类工具有:捕获/回放覆盖分析存储器测试279.7.5测试管理工具测试管理工具是指帮助完成制定测试计划,跟踪测试运行结果等的工具。一个小型软件项目可能有数千个测试用例要执行,使用捕获/回放工具可以建立测试并使其自动执行,但仍需要测试管理工具对成千上万个杂乱无章的测试用例进行管理。测试管理工具用于对测试进行管理。一般而言,测试管理工具对测试计划、测试用例、测试实施进行管理,还包括缺陷跟踪管理工具等。测试管理工具的代表有Rational公司的TestManager,Compureware公司的TrackRecord等。289.7.6功能和成本功能报表功能。测试工具生成的结果最终由人来进行解释,查看最终报告的人不一定对测试熟悉,因此,测试工具能否生成结果报表,以什么形式提供报表是需要考虑的因素之一。测试工具的集成能力。测试工具的引入是一个伴随测试过程改进而进行的长期过程,因此,测试工具的集成能力也是必须考虑的因素,这里的集成包括两方面的含义:测试工具能否和开发工具进行良好的集成。测试工具能否和其他测试工具进行良好的集成。和操作系统及开发工具的兼容性。测试工具是否可以跨平台,是否适用于公司目前使用的开发工具,这些问题也是选择一个测试工具时应该考虑的问题。成本工具怎样介入并支持测试过程。知道怎样计划并设计测试。299.8小结随着人们对软件质量的重视程度越来越高,软件测试在软件开发中的地位越来越重要。软件测试是目前用来检验软件能否完成预期的功能的惟一有效的方法,其总目标是充分利用有限的人力和物力资源,高效率、高质量地进行测试。

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功