实用软件测试技术完整版ppt全套教学教程(最新).ppt
-
资源ID:75663376
资源大小:7.01MB
全文页数:333页
- 资源格式: PPT
下载积分:19金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
实用软件测试技术完整版ppt全套教学教程(最新).ppt
实用软件测试技术第1章 软件测试概述内容简介内容简介 软件测试基础软件测试基础 软件测试发展史和发展前景软件测试发展史和发展前景 软件测试行业标准软件测试行业标准 软件测试人员的基本素质和需具备的思维方式软件测试人员的基本素质和需具备的思维方式本章导读本章导读本章导读什么是软件测试?为什么要做软件测试?本章试图从软件工程和软什么是软件测试?为什么要做软件测试?本章试图从软件工程和软件生命周期的角度去解释软件测试的基本概念,软件测试的目的和意义件生命周期的角度去解释软件测试的基本概念,软件测试的目的和意义以及对于软件开发和质量保证的重要性,为学习和掌握软件测试技术做以及对于软件开发和质量保证的重要性,为学习和掌握软件测试技术做好准备。好准备。1.1软件测试基础1.1软件测试基础软件测试基础 在最早的工业制造和生产中,测试是被定义为在最早的工业制造和生产中,测试是被定义为“检验产品是否满足预检验产品是否满足预定需求定需求”的生产过程,而软件测试是伴随着软件产生而产生的,一为验的生产过程,而软件测试是伴随着软件产生而产生的,一为验证软件的功能,二为发现软件存在的缺陷问题,以尽量减少软件中的错证软件的功能,二为发现软件存在的缺陷问题,以尽量减少软件中的错误和不足。随着软件产业的日益发展和软件工程规范化的要求,测试是误和不足。随着软件产业的日益发展和软件工程规范化的要求,测试是最有效的消除和预防软件缺陷和软件故障的手段。最有效的消除和预防软件缺陷和软件故障的手段。1.1软件测试基础u软件软件u软件工程软件工程u软件生命周期软件生命周期1.1.1软件、软件工程、软件生命周期的基本概念软件、软件工程、软件生命周期的基本概念1.1软件测试基础1.软件软件 软件软件(Software)是一系列按照特定顺序组织的计算机数据和指令的集合。一是一系列按照特定顺序组织的计算机数据和指令的集合。一般分为系统软件、应用软件和介于这两者之间的中间件。般分为系统软件、应用软件和介于这两者之间的中间件。(1)系统软件系统软件 (2)应用软件应用软件 (3)介于两者之间的中间件介于两者之间的中间件 1.1.1软件、软件工程、软件生命周期的基本概念软件、软件工程、软件生命周期的基本概念1.1软件测试基础1.软件软件 软件软件(Software)是一系列按照特定顺序组织的计算机数据和指令的集合。一是一系列按照特定顺序组织的计算机数据和指令的集合。一般分为系统软件、应用软件和介于这两者之间的中间件。般分为系统软件、应用软件和介于这两者之间的中间件。(4)通常情况下,软件应包含如下内容:通常情况下,软件应包含如下内容:可以在计算机上运行的程序集合。可以在计算机上运行的程序集合。程序能够妥善处理信息的数据结构。程序能够妥善处理信息的数据结构。与这些程序相关的文档集合。与这些程序相关的文档集合。1.1.1软件、软件工程、软件生命周期的基本概念软件、软件工程、软件生命周期的基本概念1.1软件测试基础2.软件工程软件工程 从从20世界世界50年代初至今,软件的发展大致经历了四个阶段,软件工程这个概年代初至今,软件的发展大致经历了四个阶段,软件工程这个概念是念是1968年在联邦德国召开北大西洋公约组织的计算机科学家国际会议上讨论年在联邦德国召开北大西洋公约组织的计算机科学家国际会议上讨论“软件危机软件危机”问题时正式被使用的,标志着软件工程的诞生。伴随着软件产业的发问题时正式被使用的,标志着软件工程的诞生。伴随着软件产业的发展以及在学术界的推动下,目前,软件工程已经发展成为一门专业的学科了。展以及在学术界的推动下,目前,软件工程已经发展成为一门专业的学科了。目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,得到软件生命周明正确的管理技术和当前能够得到的最好的技术方法结合起来,得到软件生命周期的六个步骤:制订计划、需求分析、设计、编码、测试和运行维护。期的六个步骤:制订计划、需求分析、设计、编码、测试和运行维护。1.1.1软件、软件工程、软件生命周期的基本概念软件、软件工程、软件生命周期的基本概念1.1软件测试基础3.软件生命周期软件生命周期 软件生命周期软件生命周期(Software Life Cycle,SLC),也叫软件生存期,是软件从孕育、,也叫软件生存期,是软件从孕育、诞生、成长、成熟到衰亡的一个过程,。诞生、成长、成熟到衰亡的一个过程,。软件生命周期的六个步骤:制订计划、需求分析、设计、编码、测试以及运软件生命周期的六个步骤:制订计划、需求分析、设计、编码、测试以及运行维护,这个过程是一个自顶向下逐步细化的过程;其中测试是保证软件质量的行维护,这个过程是一个自顶向下逐步细化的过程;其中测试是保证软件质量的重要手段,测试的过程恰恰是一个相反的过程,是一个自底向上逐步集成的过程,重要手段,测试的过程恰恰是一个相反的过程,是一个自底向上逐步集成的过程,低一级的测试为上一级测试准备条件。低一级的测试为上一级测试准备条件。1.1.1软件、软件工程、软件生命周期的基本概念软件、软件工程、软件生命周期的基本概念1.1软件测试基础3.软件生命周期软件生命周期 软件工程中一般用软件生命周期模型来表示和反映软件生命周期内的各个活软件工程中一般用软件生命周期模型来表示和反映软件生命周期内的各个活动,根据不同的开发模式,模型的表示也不一样,常见的模型有:动,根据不同的开发模式,模型的表示也不一样,常见的模型有:l边做边改模型边做边改模型(BuildandFix Model)l瀑布模型瀑布模型(Waterfall Model)l快速原型模型快速原型模型(Rapid Prototype Model)l增量模型增量模型(Incremental Model)l螺旋模型螺旋模型(Spiral Model)l演化模型演化模型(Evolution Model)l喷泉模型喷泉模型(Fountain Model)l智能模型智能模型(四代技术四代技术(4GL)l混合模型混合模型(Hybrid Model)l快速应用开发模型快速应用开发模型(RAD)1.1.1软件、软件工程、软件生命周期的基本概念软件、软件工程、软件生命周期的基本概念1.1软件测试基础1.软件缺陷软件缺陷 (1)软件缺陷的定义软件缺陷的定义 在软件工程或软件测试中,对于软件存在的问题,都可以称为软件缺陷或软在软件工程或软件测试中,对于软件存在的问题,都可以称为软件缺陷或软件故障。作为一名测试人员,可能发现的缺陷很多情况下都没有上面所举的案例件故障。作为一名测试人员,可能发现的缺陷很多情况下都没有上面所举的案例那么显明,但是其任务就是发现软件中所隐藏的错误,包括常常用到的以下几种那么显明,但是其任务就是发现软件中所隐藏的错误,包括常常用到的以下几种术语:术语:异常异常(Anomaly)、事件、事件(Incident)、偏差、偏差(Variance)、漏洞、漏洞(Bug),主要是指未,主要是指未按预先设计的运行,并不代表软件失败按预先设计的运行,并不代表软件失败;而故障而故障(Fault)、失败、失败(Failure)、缺陷、缺陷(Defect)则代表比较严重的情况,甚至则代表比较严重的情况,甚至危险的情况。危险的情况。1.1.2软件缺陷与软件可靠性软件缺陷与软件可靠性1.1软件测试基础1.软件缺陷软件缺陷 对于软件缺陷的,至少满足下列五种情况之一,才称为发生了一个软件缺陷对于软件缺陷的,至少满足下列五种情况之一,才称为发生了一个软件缺陷(Software Bug):软件未实现产品规格说明书要求的功能。软件未实现产品规格说明书要求的功能。软件出现了产品规格说明书中明确不会出现的错误。软件出现了产品规格说明书中明确不会出现的错误。软件实现了产品规格说明书中没有提到的功能。软件实现了产品规格说明书中没有提到的功能。软件未实现产品规格说明书中虽未明确提及但是应该实现的功能。软件未实现产品规格说明书中虽未明确提及但是应该实现的功能。软件难以理解、不易使用、运行缓慢或者让最终用户认为不好。软件难以理解、不易使用、运行缓慢或者让最终用户认为不好。1.1.2软件缺陷与软件可靠性软件缺陷与软件可靠性1.1软件测试基础1.软件缺陷软件缺陷(2)软件缺陷产生的原因软件缺陷产生的原因 软件自身因素软件自身因素 软件开发团队因素软件开发团队因素 开发技术因素开发技术因素 项目管理因素项目管理因素1.1.2软件缺陷与软件可靠性软件缺陷与软件可靠性1.1软件测试基础1.软件缺陷软件缺陷(3)软件缺陷修复的费用软件缺陷修复的费用 软件缺陷所带来的修复费用是随着软件缺陷所带来的修复费用是随着时间的推移而呈指数级别递增的,如图时间的推移而呈指数级别递增的,如图所示,即:随着时间的推移,修复费用所示,即:随着时间的推移,修复费用呈十倍、百倍、千倍甚至万倍的增长。呈十倍、百倍、千倍甚至万倍的增长。1.1.2软件缺陷与软件可靠性软件缺陷与软件可靠性1.1软件测试基础2.软件可靠性软件可靠性(1)软件可靠性定义软件可靠性定义 软件可靠性软件可靠性(Software Reliability)是软件产品在规定的条件下和规定的时间是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。规定的条件是指直接与软件运行相关的使用该软件的区间完成规定功能的能力。规定的条件是指直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件;规计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件;规定的时间区间是指软件的实际运行时间区间;规定功能是指为提供给定的服务,定的时间区间是指软件的实际运行时间区间;规定功能是指为提供给定的服务,软件产品所必须具备的功能。软件可靠性不但与软件存在的缺陷和差错有关,而软件产品所必须具备的功能。软件可靠性不但与软件存在的缺陷和差错有关,而且与系统输入和系统使用有关。软件可靠性的概率度量称软件可靠度。且与系统输入和系统使用有关。软件可靠性的概率度量称软件可靠度。1.1.2软件缺陷与软件可靠性软件缺陷与软件可靠性1.1软件测试基础2.软件可靠性软件可靠性(2)影响软件可靠性的因素影响软件可靠性的因素 软件可靠性是关于软件能够满足需求功能的性质,软件不能满足需求是因为软件可靠性是关于软件能够满足需求功能的性质,软件不能满足需求是因为软件中的差错引起了软件故障。软件中的差错引起了软件故障。软件差错是软件开发各阶段潜入的人为错误,除了软件可靠性外,影响可靠软件差错是软件开发各阶段潜入的人为错误,除了软件可靠性外,影响可靠性的另一个重要因素是健壮性,对非法输入的容错能力。所以提高可靠性从原理性的另一个重要因素是健壮性,对非法输入的容错能力。所以提高可靠性从原理上看就是要减少错误和提高健壮性。上看就是要减少错误和提高健壮性。1983年,美国年,美国IEEE计算机学会对计算机学会对“软件可靠性软件可靠性”做出了明确的定义,该定义做出了明确的定义,该定义包含两个方面的内容:包含两个方面的内容:在规定的条件下和时间内,软件不引起系统失效的概率。在规定的条件下和时间内,软件不引起系统失效的概率。在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。其中,概率是系统输入和系统使用的函数,也是软件中存在的故障的函数,其中,概率是系统输入和系统使用的函数,也是软件中存在的故障的函数,系统输入将确定是否会遇到已存在的故障系统输入将确定是否会遇到已存在的故障(如果故障存在的话如果故障存在的话)。1.1.2软件缺陷与软件可靠性软件缺陷与软件可靠性1.1软件测试基础 概括地说,软件质量就是概括地说,软件质量就是“软件与明确的和隐含的定义的需求软件与明确的和隐含的定义的需求相一致的程度相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准以及所有专业开发的软件都应具有的和文档中明确描述的开发标准以及所有专业开发的软件都应具有的和隐含特征相一致的程度。隐含特征相一致的程度。1.1.3软件质量与质量保证软件质量与质量保证1.1软件测试基础1.影响软件质量的主要因素影响软件质量的主要因素 通常情况下,影响软件质量的因素是从管理角度对软件质量进行度量。可划通常情况下,影响软件质量的因素是从管理角度对软件质量进行度量。可划分为三组,分别反映用户在使用软件产品时的三种观点。分为三组,分别反映用户在使用软件产品时的三种观点。正确性、健壮性、效率、完整性、可用性、风险正确性、健壮性、效率、完整性、可用性、风险(产品运行产品运行)。可理解性、可维修性、灵活性、可测试性可理解性、可维修性、灵活性、可测试性(产品修改产品修改)。可移植性、可再用性、互运行性可移植性、可再用性、互运行性(产品转移产品转移)。1.1.3软件质量与质量保证软件质量与质量保证1.1软件测试基础2.软件质量标准软件质量标准 软件需求是度量软件质量的基础,与需求不一致就是质量不高。软件需求是度量软件质量的基础,与需求不一致就是质量不高。指定的标准定义了一组指导软件开发的准则,如果没有遵守这些准则,肯定指定的标准定义了一组指导软件开发的准则,如果没有遵守这些准则,肯定会导致质量不高。会导致质量不高。通常,有一组没有显式描述的隐含需求通常,有一组没有显式描述的隐含需求(如期望软件是容易维护的如期望软件是容易维护的)。如果软。如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。疑的。1.1.3软件质量与质量保证软件质量与质量保证1.1软件测试基础3.软件质量保证软件质量保证 软件质量保证软件质量保证(SQA),是软件质量管理这个庞大、复杂系统中的一个分支,与,是软件质量管理这个庞大、复杂系统中的一个分支,与质量计划、质量控制合称为质量管理的过程域。企业必须借助专业、高效的质量质量计划、质量控制合称为质量管理的过程域。企业必须借助专业、高效的质量管理方法和测试工具,从管理和技术两方面双管齐下,才能实现软件质量管理这管理方法和测试工具,从管理和技术两方面双管齐下,才能实现软件质量管理这个目标。质量保证是贯穿整个项目生命周期的有计划、有步骤地对整个项目质量个目标。质量保证是贯穿整个项目生命周期的有计划、有步骤地对整个项目质量计划执行情况进行评估、检查与改进的工作,目的是向管理者、客户提供信任,计划执行情况进行评估、检查与改进的工作,目的是向管理者、客户提供信任,以此确保项目质量与技术一致。以此确保项目质量与技术一致。1.1.3软件质量与质量保证软件质量与质量保证 软件测试是伴随着软件的产生而产生的,软件测试是伴随着软件的产生而产生的,起初软件开发时期起初软件开发时期20世纪世纪50年代后期年代后期20世纪世纪70年代末年代末20世纪世纪90年代年代 而在软件测试工具平台方面,目前商业化的软件测试工具也很多。而在软件测试工具平台方面,目前商业化的软件测试工具也很多。由由此可见,测试在软件开发过程中,已经不再是基于代码而进行的活动,软件此可见,测试在软件开发过程中,已经不再是基于代码而进行的活动,软件测试是一个基于整个软件生命周期的质量控制活动,并始终贯穿于软件开发测试是一个基于整个软件生命周期的质量控制活动,并始终贯穿于软件开发的各个阶段。的各个阶段。1.2软件测试发展史和发展前景软件测试发展史和发展前景 1.3.1软件测试的目的软件测试的目的 软件测试是指使用人工或者自动化工具来运行或测试某个系统的过程,其目的在软件测试是指使用人工或者自动化工具来运行或测试某个系统的过程,其目的在于检验被试系统是否满足产品需求规格说明中所规定的要求或者弄清预期结果与实际于检验被试系统是否满足产品需求规格说明中所规定的要求或者弄清预期结果与实际结果之间的差别,以便及时修正和改进。结果之间的差别,以便及时修正和改进。软件测试是一个系列过程活动,是帮助识别开发完成计算机软件的正确度、完全软件测试是一个系列过程活动,是帮助识别开发完成计算机软件的正确度、完全度和质量的软件过程,是软件质量保证的重要手段。度和质量的软件过程,是软件质量保证的重要手段。1.3软件测试的目的、原则和相关标准软件测试的目的、原则和相关标准 1.3.1软件测试的目的软件测试的目的 软件测试的目的应包含如下内容:软件测试的目的应包含如下内容:测试并不仅仅是找出错误,而是通过分析错误产生的原因和错误发生的趋测试并不仅仅是找出错误,而是通过分析错误产生的原因和错误发生的趋势,从而帮助项目管理者发现软件当前存在的缺陷,以便及时改进。势,从而帮助项目管理者发现软件当前存在的缺陷,以便及时改进。测试分析可以有效帮助测试人员设计有效的针对性测试方法,提高测试的测试分析可以有效帮助测试人员设计有效的针对性测试方法,提高测试的有效性。有效性。没有发现错误的测试也是有价值的测试,完整的测试是评价软件质量的方没有发现错误的测试也是有价值的测试,完整的测试是评价软件质量的方法之一。法之一。1.3软件测试的目的、原则和相关标准软件测试的目的、原则和相关标准 1.3.2软件测试的原则软件测试的原则 软件测试的基本原则有助于测试人员进行高效的测试,尽早尽多地发现软件软件测试的基本原则有助于测试人员进行高效的测试,尽早尽多地发现软件存在的缺陷和错误,通过分析软件存在的问题,从而能够持续改进测试过程,保存在的缺陷和错误,通过分析软件存在的问题,从而能够持续改进测试过程,保证软件质量。证软件质量。(1)测试要尽早介入测试要尽早介入 (2)测试要能显示缺陷的存在测试要能显示缺陷的存在 (3)不存在穷尽测试不存在穷尽测试 (4)测试的群集性测试的群集性1.3软件测试的目的、原则和相关标准软件测试的目的、原则和相关标准 1.3.2软件测试的原则软件测试的原则 软件测试的基本原则有助于测试人员进行高效的测试,尽早尽多地发现软件软件测试的基本原则有助于测试人员进行高效的测试,尽早尽多地发现软件存在的缺陷和错误,通过分析软件存在的问题,从而能够持续改进测试过程,保存在的缺陷和错误,通过分析软件存在的问题,从而能够持续改进测试过程,保证软件质量。证软件质量。(5)测试用例设计避免测试用例设计避免“杀虫剂杀虫剂”效应效应 (6)测试要严格按测试计划执行测试要严格按测试计划执行 (7)测试必须贯穿于软件整个生命周期测试必须贯穿于软件整个生命周期 (8)测试需要独立的测试团队或使用第三方测试测试需要独立的测试团队或使用第三方测试1.3软件测试的目的、原则和相关标准软件测试的目的、原则和相关标准1.3.3软件测试的相关标准软件测试的相关标准1.3软件测试的目的、原则和相关标准软件测试的目的、原则和相关标准编号编号标准代码标准代码标准名称标准名称01GB/T 17544-1998信息技术软件包质量要求和测试02GB/T 16260-2006软件工程产品质量03GB/T 18905-2002软件工程产品评价04GB/T 15532-2008计算机软件测试规范05GB/T 17544-1998信息技术软件包质量要求和测试06GB/T 8567-2006计算机软件文档编制规范07GB/T 9386-2008计算机软件测试文档编制规范08GB/T 25000.1-2010软件工程软件产品质量要求与评价(SQuaRE)SQuaRE指南09CSTCJSBZ02应用软件产品测试规范10CSTCJSBZ03软件产品测试评分标准1.4.1测试人员的基本素质测试人员的基本素质 1.良好的沟通能力良好的沟通能力 2.掌握全面的技术掌握全面的技术 3.要具备充分的自信心、足够的耐心和责任感要具备充分的自信心、足够的耐心和责任感 4.具有怀疑精神具有怀疑精神 5.超强的洞察力和记忆力超强的洞察力和记忆力1.4软件测试人员软件测试人员1.4软件测试人员1.4软件测试人员1.4.2软件测试人员需具备的思维方式软件测试人员需具备的思维方式 1.逆向思维方式逆向思维方式 2.组合思维方式组合思维方式 3.全局思维方式全局思维方式 4.两极思维方式两极思维方式 5.简单思维方式简单思维方式 6.比较思维方式比较思维方式1.4.3软件测试工程师职位简介软件测试工程师职位简介初级测试工程师初级测试工程师测试工程师测试工程师/程序分析师程序分析师高级测试工程师高级测试工程师/程序分析师程序分析师测试组负责人测试组负责人测试测试/编程负责人编程负责人测试测试/质量保证质量保证/开发开发(项目项目)经理经理计划经理计划经理1.4软件测试人员软件测试人员1.4软件测试人员软件测试概述1.简述软件测试的目的。简述软件测试的目的。2.软件缺陷的定义和划分。软件缺陷的定义和划分。3.简述软件测试的原则和意义。简述软件测试的原则和意义。4.简述软件测试工程师应具备的基本素质和思维方式。简述软件测试工程师应具备的基本素质和思维方式。知识总结与课后思考知识总结与课后思考THANKS!本章结束!本章结束!实用软件测试技术第2章 软件测试技术内容简介内容简介软件测试原理及分类软件测试原理及分类白盒测试相关技术白盒测试相关技术黑盒测试相关技术黑盒测试相关技术其他测试技术其他测试技术本章导读本章导读本章导读软件测试涉及技术、管理等多个层面的内容,为了更好地实施软件软件测试涉及技术、管理等多个层面的内容,为了更好地实施软件测试,必须了解测试的基本原理、分类和相关测试技术。本章从技术层测试,必须了解测试的基本原理、分类和相关测试技术。本章从技术层面系统介绍软件测试过程中用到的测试方法和技术。面系统介绍软件测试过程中用到的测试方法和技术。2.1软件测试技术概述 软件测试是指使用人工方式或者自动化工具运行测试被测对象软件测试是指使用人工方式或者自动化工具运行测试被测对象(软件软件系统系统)的过程,目的在于验证被测对象是否满足需求说明书中规定的内容的过程,目的在于验证被测对象是否满足需求说明书中规定的内容和功能,尽早发现软件存在的缺陷。和功能,尽早发现软件存在的缺陷。软件测试是软件质量保证的重要手段,其目标就是以最少的时间和人软件测试是软件质量保证的重要手段,其目标就是以最少的时间和人力尽早找出软件潜在的各种错误和缺陷,证明软件的功能和性能与需求力尽早找出软件潜在的各种错误和缺陷,证明软件的功能和性能与需求说明相符。此外,实施测试收集到的测试结果数据也可为可靠性分析提说明相符。此外,实施测试收集到的测试结果数据也可为可靠性分析提供依据。供依据。2.1软件测试技术概述2.1.1软件测试分类软件测试分类 1.按照软件开发阶段分按照软件开发阶段分 2.按执行状态分按执行状态分 3.按执行主体分按执行主体分 4.按测试技术分按测试技术分 5.按执行是否需要人工干预分按执行是否需要人工干预分 6.其他测试类型其他测试类型2.1软件测试技术概述2.1.1软件测试分类软件测试分类 1.按照软件开发阶段分按照软件开发阶段分 软件测试贯穿于软件开发的整个生命周期,按照软件开发的阶段,软件测试贯穿于软件开发的整个生命周期,按照软件开发的阶段,软件测试分为单元测试、集成测试、确认测试、系统测试、验收测试等。软件测试分为单元测试、集成测试、确认测试、系统测试、验收测试等。(1)单元测试单元测试 (2)集成测试集成测试 (3)确认测试确认测试 (4)系统测试系统测试 (5)验收测试验收测试 2.1软件测试技术概述2.1.1软件测试分类软件测试分类 1.按照软件开发阶段分按照软件开发阶段分 (1)单元测试单元测试 单元测试单元测试(Unit Testing)又称为模块测试又称为模块测试(Module Testing),是软件测试对,是软件测试对象中的最小可测单元,目的是检查每个单元是否正确实现了详细设计文档中定义象中的最小可测单元,目的是检查每个单元是否正确实现了详细设计文档中定义的功能、性能、接口等要求,以便发现各个模块内部可能出现的各种错误和缺陷,的功能、性能、接口等要求,以便发现各个模块内部可能出现的各种错误和缺陷,保证了最小单元的代码准确,会令设计更好,大大减少花在调试上的时间。保证了最小单元的代码准确,会令设计更好,大大减少花在调试上的时间。单元测试通常是在软件开发人员编码后进行的,一般是开发人员互换模块进单元测试通常是在软件开发人员编码后进行的,一般是开发人员互换模块进行交叉测试,但是实际上在不正规的软件开发团队中,单元测试都由开发人员自行交叉测试,但是实际上在不正规的软件开发团队中,单元测试都由开发人员自己来完成。大部分软件测试方法都适用于单元测试。己来完成。大部分软件测试方法都适用于单元测试。2.1软件测试技术概述2.1.1软件测试分类软件测试分类 1.按照软件开发阶段分按照软件开发阶段分 (2)集成测试集成测试 集成测试集成测试(Integration Testing)又称为组装测试。基于单元测试后的单元模又称为组装测试。基于单元测试后的单元模块,依据概要设计文档,对通过单元测试的模块组装为系统或子系统进行测试,块,依据概要设计文档,对通过单元测试的模块组装为系统或子系统进行测试,其目的是检验不同模块单元之间的接口是否符合概要设计的要求,能否正常运行。其目的是检验不同模块单元之间的接口是否符合概要设计的要求,能否正常运行。与单元测试相比,集成测试则关注的是单元模块的外部接口。与单元测试相比,集成测试则关注的是单元模块的外部接口。2.1软件测试技术概述2.1.1软件测试分类软件测试分类 1.按照软件开发阶段分按照软件开发阶段分 (3)确认测试确认测试 确认测试确认测试(Conformation Testing)是通过检验和提供客观证据,证实软件是是通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。确认测试检测以证实软件是否满足软件需求说明书否满足特定预期用途的需求。确认测试检测以证实软件是否满足软件需求说明书中规定的要求。中规定的要求。(4)系统测试系统测试 系统测试系统测试(System Testing)是为了验证和确认系统是否达到了预期的功能和是为了验证和确认系统是否达到了预期的功能和目标,主要由测试工程师进行测试,分为功能测试和性能测试。目标,主要由测试工程师进行测试,分为功能测试和性能测试。2.1软件测试技术概述2.1.1软件测试分类软件测试分类 1.按照软件开发阶段分按照软件开发阶段分 (5)验收测试验收测试 验收测试验收测试(Acceptance Testing)又称为接受测试,是在系统测试后期,以用又称为接受测试,是在系统测试后期,以用户为主,测试人员和质量保证人员共同辅助进行测试,验证测试是软件正式交付户为主,测试人员和质量保证人员共同辅助进行测试,验证测试是软件正式交付上线前的最后一个测试环节。上线前的最后一个测试环节。验收测试依据软件需求规格说明文档和软件验收标准。验收测试又分为验收测试依据软件需求规格说明文档和软件验收标准。验收测试又分为测测试和试和测试。测试。2.1软件测试技术概述2.1.1软件测试分类软件测试分类 1.按照软件开发阶段分按照软件开发阶段分 2.按执行状态分按执行状态分 按照被测软件是否需要执行,可将软件测试分为静态测试和动态测试。按照被测软件是否需要执行,可将软件测试分为静态测试和动态测试。(1)静态测试静态测试 又称为静态分析又称为静态分析(Static Analysis),指不运行被测程序,而是分析和检查程序的形式与,指不运行被测程序,而是分析和检查程序的形式与结构,查找缺陷,进行需求确认。主要包括对源代码、程序界面、各类文档等进行测试,相结构,查找缺陷,进行需求确认。主要包括对源代码、程序界面、各类文档等进行测试,相当于是对被测程序进行特性分析。当于是对被测程序进行特性分析。(2)动态测试动态测试 又称为动态分析又称为动态分析(Dynamic Analysis),是需要实际运行被测软件程序的,通过运行时表现,是需要实际运行被测软件程序的,通过运行时表现出的状态、行为发现程序的错误与缺陷。运行时依据测试用例,对实际测试结果与预期结果出的状态、行为发现程序的错误与缺陷。运行时依据测试用例,对实际测试结果与预期结果进行对比分析,发现程序与客户需求不一致的问题。进行对比分析,发现程序与客户需求不一致的问题。2.1软件测试技术概述2.1.1软件测试分类软件测试分类 1.按照软件开发阶段分按照软件开发阶段分 2.按执行状态按执行状态 动态测试贯穿在测试的各个阶段中,是一种非常有效的测试方法,动态测试贯穿在测试的各个阶段中,是一种非常有效的测试方法,比较比较 内容内容测试测试方法方法是否运是否运行软件行软件是否需要是否需要测试用例测试用例是否可以是否可以直接定位直接定位缺陷缺陷测试实测试实现难易现难易度度精准性精准性独立性独立性静态测试静态测试否否是容易否否动态测试动态测试是是否困难是是表表2-1 2-1 静态测试与动态测试比较静态测试与动态测试比较2.1软件测试技术概述2.1.1软件测试分类软件测试分类 3.按执行主体分按执行主体分 按照测试组织方划分,软件测试分为开发方测试、用户测试和第三方测试。按照测试组织方划分,软件测试分为开发方测试、用户测试和第三方测试。u 开发方测试又称为验收测试或开发方测试又称为验收测试或测试,在软件开发环境下,测试软件是否实现测试,在软件开发环境下,测试软件是否实现了需求规格说明中的功能,是否达到了要求的性能。了需求规格说明中的功能,是否达到了要求的性能。u用户测试又称为用户测试又称为测试,在用户的实际环境下,让用户使用、评价和检查软件,测试,在用户的实际环境下,让用户使用、评价和检查软件,发现软件存在的问题和缺陷,并做出相应的评价。发现软件存在的问题和缺陷,并做出相应的评价。u第三方测试指由第三方测试机构执行测试,也称为独立测试。在测试组织、技第三方测试指由第三方测试机构执行测试,也称为独立测试。在测试组织、技术、管理上与开发方和用户方都是独立的,通常都是在模拟用户实际使用环境下术、管理上与开发方和用户方都是独立的,通常都是在模拟用户实际使用环境下对软件进行确认测试。对软件进行确认测试。2.1软件测试技术概述2.1.1软件测试分类软件测试分类4.按测试技术分按测试技术分 按照对被测对象的了解程度和是否查看代码,测试又分为:按照对被测对象的了解程度和是否查看代码,测试又分为:p黑盒测试黑盒测试p白盒测试白盒测试p灰盒测试灰盒测试2.1软件测试技术概述2.1.1软件测试分类软件测试分类4.按测试技术分按测试技术分 (1)黑盒测试黑盒测试 黑盒测试是将被测对象看作一个黑盒子,不考虑程序内部的结构和逻辑结构,黑盒测试是将被测对象看作一个黑盒子,不考虑程序内部的结构和逻辑结构,提供输入,检查输出,主要检查软件的每个功能是否正常使用,属于功能性测试。提供输入,检查输出,主要检查软件的每个功能是否正常使用,属于功能性测试。p优点:能从产品功能角度进行测试,确保从用户角度出发,测试用例不因程序优点:能从产品功能角度进行测试,确保从用户角度出发,测试用例不因程序内部逻辑变化而变化,测试人员容易上手。内部逻辑变化而变化,测试人员容易上手。p缺点:无法测试程序内部,若规格说明有误,错误无法发现,产品得不到充分缺点:无法测试程序内部,若规格说明有误,错误无法发现,产品得不到充分性测试。性测试。p应用范围:等价类划分法、边界值分析法以及决策表测试。应用范围:等价类划分法、边界值分析法以及决策表测试。2.1软件测试技术概述2.1.1软件测试分类软件测试分类4.按测试技术分按测试技术分 (2)白盒测试白盒测试 与黑盒测试相反,白盒测试则要了解程序内部和逻辑结构,检测内部是否按与黑盒测试相反,白盒测试则要了解程序内部和逻辑结构,检测内部是否按照规格说明书的规定正常进行。基于代码测试的白盒测试,需要了解程序内部的照规格说明书的规定正常进行。基于代码测试的白盒测试,需要了解程序内部的架构、具体需求以及程序的编写技巧,属于验证性结构测试。架构、具体需求以及程序的编写技巧,属于验证性结构测试。p优点:可以针对程序内部进行覆盖测试,程序内部可以得到充分性测试,有很优点:可以针对程序内部进行覆盖测试,程序内部可以得到充分性测试,有很多工具可以支持完成。多工具可以支持完成。p缺点:不易生成测试数据,无法测试程序外部特性,工作量大,一般用于单元缺点:不易生成测试数据,无法测试程序外部特性,工作量大,一般用于单元测试。测试。p应用范围:语句覆盖、条件覆盖、判定覆盖、路径覆盖等。应用范围:语句覆盖、条件覆盖、判定覆盖、路径覆盖等。2.1软件测试技术概述2.1.1软件测试分类软件测试分类4.按测试技术分按测试技术分 (3)灰盒测试灰盒测试 灰盒测试是介于白盒测试和黑盒测试之间的测试,相对于白盒测试,不需要灰盒测试是介于白盒测试和黑盒测试之间的测试,相对于白盒测试,不需要关注详细、完整的内部结构,只需要测试各个组件间的逻辑关系是否正确。灰盒关注详细、完整的内部结构,只需要测试各个组件间的逻辑关系是否正确。灰盒测试的重点在于测试程序的处理能力和健壮性,与白盒测试和黑盒测试相比,投测试的重点在于测试程序的处理能力和健壮性,与白盒测试和黑盒测试相比,投入的时间和维护工作量较小。入的时间和维护工作量较小。2.1软件测试技术概述2.1.1软件测试分类软件测试分类 5.按执行是否需要人工干预分划分按执行是否需要人工干预分划分 按照执行测试时是否需要人工参与,可以将测试分为手工测试和自动化测试。按照执行测试时是否需要人工参与,可以将测试分为手工测试和自动化测试。(1)手工测试手工测试 手工测试是指测试完全由人工完成,包括测试计划制订、测试用例编写、执手工测试是指测试完全由人工完成,包括测试计划制订、测试用例编写、执行、测试结果分析等,传统的测试工作都由人工来完成。行、测试结果分析等,传统的测试工作都由人工来完成。(2)自动化测试自动化测试 与手工测试相比,自动化测试则是指测试所涉及的任何活动都由测试工具完与手工测试相比,自动化测试则是指测试所涉及的任何活动都由测试工具完成,包括测试脚本编写、开发、执行和管理,不需要人工干预,目前主要用于功成,包括测试脚本编写、开发、执行和管理,不需要人工干预,目前主要用于功能测试、性能测试和回归测试活动中。能测试、性能测试和回归测试活动中。2.1软件测试技术概述2.1.1软件测试分类软件测试分类 6.其他测试类型其他测试类型 除上面介绍的测试分类外,还有一些重要的测试,比如冒烟测试、回归测试除上面介绍的测试分类外,还有一些重要的测试,比如冒烟测试、回归测试和随机测试等。和随机测试等。(1)冒烟测试冒烟测试 冒烟测试冒烟测试(Smoking Testing)源自硬件行业,因为当电路板做好以后,加电测源自硬件行业,因为当电路板做好以后,加电测试,如果板子没有冒烟再进行其他测试,否则就必须重新来过。如果类似的冒烟试,如果板子没有冒烟再进行其他测试,否则就必须重新来过。如果类似的冒烟测试没有通过,那么仍旧会返回给开发人员进行修正,测试人员测试的版本必须测试没有通过,那么仍旧会返回给开发人员进行修正,测试人员测试的版本必须首先通过冒烟测试的考验。多用于回归测试中,优点是节省测试时间,防止创建首先通过冒烟测试的考验。多用于回归测试中,优点是节省测试时间,防止创建失败,缺点则是覆盖率偏低。失败,缺点则是覆盖率偏低。2.1软件测试技术概述2.1.1软件测试分类软件测试分类 6.其他测试类型其他测试类型 (1)冒烟测试冒烟测试 (2)回归测试回归测试 回归测试回归测试(Regression Testing)是指对软件的新的版本测试时,重复执行上是指对软件的新的