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