软件工程第8章软件测试.ppt
《软件工程第8章软件测试.ppt》由会员分享,可在线阅读,更多相关《软件工程第8章软件测试.ppt(159页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章第八章第八章8 8软件测试本章内容8.1 软件测试背景8.2 软件测试的基本概念8.3 测试用例的设计8.4 软件测试过程8.1 软件测试背景 8.1.1 软件缺陷与故障软件缺陷与故障案例案例 软件缺陷的定义软件缺陷的定义软件缺陷的特征软件缺陷的特征8.1.2 软件缺陷产生的原因软件缺陷产生的原因8.1.1 软件缺陷与故障1、软件缺陷和软件故障案例、软件缺陷和软件故障案例案例案例1 美国迪斯尼公司的狮子王游戏软件美国迪斯尼公司的狮子王游戏软件bug 兼容性问题兼容性问题案例案例2 美国航天局火星登陆事故美国航天局火星登陆事故 系统测试系统测试 衔接问题衔接问题 案例案例3 跨世纪跨
2、世纪“千年虫千年虫”问题问题 案例案例4 爱国者导弹防御系统炸死自家人爱国者导弹防御系统炸死自家人 系统时钟误差积累系统时钟误差积累 案例案例5 英特尔奔腾浮点除法英特尔奔腾浮点除法上述所有实例中的软件问题在软件工程或软件测试中都被称为上述所有实例中的软件问题在软件工程或软件测试中都被称为软件软件缺陷或软件故障缺陷或软件故障。软件缺陷与故障(续)(续)2、软件缺陷的定义、软件缺陷的定义(1)软件未达到产品说明书中已经标明的功能;)软件未达到产品说明书中已经标明的功能;(2)软件出现了产品说明书中指明不会出现的错误;)软件出现了产品说明书中指明不会出现的错误;(3)软件未达到产品说明书中虽未指出
3、但应当达到的目标;软件未达到产品说明书中虽未指出但应当达到的目标;(4)软件功能超出了产品说明书中指明的范围;软件功能超出了产品说明书中指明的范围;(5)软件测试人员认为软件难以理解、不易使用,或者最终软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。用户认为该软件使用效果不良。软件缺陷与故障(续)(续)3、软件缺陷的特征、软件缺陷的特征“看不到看不到”软件的特殊性决定了缺陷不易看到软件的特殊性决定了缺陷不易看到“看到但是抓不到看到但是抓不到”发现发现了缺陷,但不易找到了缺陷,但不易找到问题发问题发生的原因生的原因所在所在8.1.2 软件缺陷产生的原因 软件缺陷的主要
4、类型软件缺陷的主要类型/现象:现象:p 功能、特性没有实现或部分实现功能、特性没有实现或部分实现p 设计不合理,存在缺陷设计不合理,存在缺陷p 实际结果和预期结果不一致实际结果和预期结果不一致p 运行出错,包括运行中断、系统崩溃、界面混乱运行出错,包括运行中断、系统崩溃、界面混乱p 数据结果不正确、精度不够数据结果不正确、精度不够p 用户不能接受的其他问题,如存取时间过长、界用户不能接受的其他问题,如存取时间过长、界面不美观面不美观 常见导致错误的根源缺乏有效的沟通,或者没有进行沟通;软件复杂度不断变更的需求时间的压力缺乏文档的代码软件开发工具其他其他10%软件产品说明软件产品说明书(需求)书
5、(需求)56%编写代码编写代码7%设设 计计27%图图8-1 8-1 软件缺陷产生的原因分布软件缺陷产生的原因分布软件缺陷产生的原因有很多,但最主要的原因要归咎于产品描述软件缺陷产生的原因有很多,但最主要的原因要归咎于产品描述8.2 软件测试基础概念8.2.1 软件测试的定义8.2.2 软件测试的基本概念8.2.3 软件测试方法与策略8.2.1 8.2.1 软件测试定义软件测试定义 软软件件测测试试是是一一个个贯贯彻彻于于软软件件开开发发过过程程始始终终的的过过程程,是是为为了了发发现现错错误误而而执执行行程程序序的的过过程程,是是根根据据软软件件开开发发各各阶阶段段的的规规格格说说明明和和程
6、程序序的的内内部部结结构构结结构构而而精精心心设计一批测试用例。设计一批测试用例。什么是软件测试什么是软件测试l使用人工或者自动手段来运行使用人工或者自动手段来运行或测定某个或测定某个系统系统的过程的过程l目的在于检验它是否满足规定的需求、弄目的在于检验它是否满足规定的需求、弄清预期结果与实际结果之间清预期结果与实际结果之间的差别的差别l可简述为:按照特定规程,发现软件错误可简述为:按照特定规程,发现软件错误的过程的过程软件测试定义(续)软件测试定义(续)1.软件测试的目的l软件测试的目标是以最少的时间和人力,系统的找出软件测试的目标是以最少的时间和人力,系统的找出软件中潜在的各种错误和缺陷软
7、件中潜在的各种错误和缺陷l测试测试是为了是为了发现程序中发现程序中的错误而执行程序的错误而执行程序的过程的过程l好的好的测试方案(测试用例)在于测试方案(测试用例)在于尽可能发现迄今为止尽可能发现迄今为止尚未发现尚未发现的错误的错误l成功的测试是发现了至今为止尚未发现的错误的测试成功的测试是发现了至今为止尚未发现的错误的测试8.2.2 8.2.2 8.2.2 8.2.2 软件测试基本概念软件测试基本概念软件测试基本概念软件测试基本概念软件测试目的(续)l测试并不仅仅是为了找出错误测试并不仅仅是为了找出错误.通过分析错误产生通过分析错误产生的原因和错误的发生趋势的原因和错误的发生趋势,可以帮助项
8、目管理者发可以帮助项目管理者发现当前软件开发过程中的缺陷现当前软件开发过程中的缺陷,以便以便及时改进;及时改进;l这种分析也能帮助测试人员设计出有针对性的测试这种分析也能帮助测试人员设计出有针对性的测试方法方法,改善测试的效率和改善测试的效率和有效性;有效性;l没有发现错误的测试也是有价值的没有发现错误的测试也是有价值的,完整的测试是完整的测试是评定软件质量的一评定软件质量的一种方法种方法软件测试员的目标发现软件缺陷2.软件测试的目标最终目的是确保软件的功能符合用户的需求,把尽可能多的问题在发布或交付前发现并改正:-确保软件完成了它所承诺或公布的功能(缺少规范的书面文档?)-确保软件满足性能的
9、要求(界面、操作、性能)-确保软件是健壮的和适应用户环境的(哪怕不健壮,也要给出解决方案)2.软件测试的目标为软件的质量评估提供依据(项目验收)为软件质量改进和管理提供帮助(经验教训等知识转移)软件测试的生命周期需求规格说明设计缺陷分类缺陷解决缺陷隔离测试编码错误错误错误错误修复事故缺陷缺陷缺陷3.软件测试的特性l软件测试与分析、设计、编码等工作相比,具有若干软件测试与分析、设计、编码等工作相比,具有若干特殊的性质:特殊的性质:挑剔性挑剔性。测试是一种。测试是一种“挑剔性挑剔性”行为,以证明程序有错行为,以证明程序有错的目的去进行测试,才能把程序中潜在的错误找出来。的目的去进行测试,才能把程序
10、中潜在的错误找出来。复杂性复杂性。设计测试用例是一项需要细致和高度技巧的工。设计测试用例是一项需要细致和高度技巧的工作。作。不彻底性不彻底性。测试只能证明软件中存在错误,不能证明软。测试只能证明软件中存在错误,不能证明软件中不存在错误所谓彻底测试,也就是穷举测试,显然件中不存在错误所谓彻底测试,也就是穷举测试,显然在实际测试中无法实现或行不通。在实际测试中无法实现或行不通。经济性经济性。降低测试成本,应遵守的经济性原则:一,根。降低测试成本,应遵守的经济性原则:一,根据程序的重要性和一旦发生故障将造成的损失来确定他据程序的重要性和一旦发生故障将造成的损失来确定他的可靠性等级,不要随意提高等级使
11、测试成本增加;二,的可靠性等级,不要随意提高等级使测试成本增加;二,要认真研究测试策略,以便使用尽可能少的测试用例来要认真研究测试策略,以便使用尽可能少的测试用例来发现尽可能多的程序错误。发现尽可能多的程序错误。l 为保证测试质量,软件测试必须完成规定的文档。按照软件工程的要求,测试文档应包括测试计划和测试报告两方面内容。l 测试计划的主体是“测试内容说明”。它包括测试项目名称,各项测试的目的、步骤和进度,以及测试用例的设计等。l 测试报告的主体是“测试结果”,它包括测试项目名称,实测结果与期望结果的比较,发现的问题,以及测试达到的效果。4.软件测试的文档测试用例测试用例=测试数据测试数据+期
12、望结果期望结果测试结果测试结果=测试数据测试数据+期望结果期望结果+实际结果实际结果软件测试国家标准lGB/T 9386-1988 计算机软件测试文件编制规范lGB/T 15532-1995 计算机软件单元测试规范lGB/T 17544-1998 信息技术 软件包 质量要求和测试lGB/T 16260.1-2003 软件工程 产品质量第1部份,质量模型lGB/T 16260.2-200X软件工程 产品质量第2部份,外部度量lGB/T 16260.3-200X软件工程 产品质量第3部份,内部度量lGB/T 16260.4-200X软件工程 产品质量第4部份,使用质量度量lGB/T 18905.1
13、-2002软件工程 产品质量第1部份,概述lGB/T 18905.2-2002软件工程 产品质量第2部份,策划和管理lGB/T 18905.3-2002软件工程 产品质量第3部份,开发者用的过程lGB/T 18905.4-2002软件工程 产品质量第4部份,需方用的过程lGB/T 18905.5-2002软件工程 产品质量第5部份,评价者用的过程lGB/T 18905.6-2002软件工程 产品质量第6部份,评价模块文档编写 国标来自的国际标l GB/T 16260.1-6 取自ISO/IEC 9126-1:2001 ISO/IEC 9126-2:2003 ISO/IEC 9126-3:200
14、3 ISO/IEC TR 9126-4:2004l GB/T 18905.1-6 取自ISO/IEC 14598-1:1999 ISO/IEC 14598-2:2000 ISO/IEC 14598-3:2000 ISO/IEC 14598-4:1999 ISO/IEC 14598-5:1998 ISO/IEC 14598-6:2001l GB/T 17544-1998 取自ISO/IEC 12119:19945.软件测试的原则Good-enough:一种权衡投入/产出比的原则:选择测试保证测试的覆盖程度,但穷举测试是不可能的:有限测试所有的测试都应追溯到用户需求越早测试越好,测试过程与开发过程
15、应是相结合的测试的规模由小而大,从单元测试到系统测试为了尽可能地发现错误,应该由独立的第三方来测试不能为了便于测试擅自修改程序既应该测试软件该做什么也应该测试软件不该做什么传统的瀑布模型中软件测试学仅处于运行维护阶段之前项目规划阶段:负责从单元测试到系统测试的整个测 试阶段的监控。需求分析阶段:确定测试需求分析、系统测试计划的 制定、评审后成为管理项目。详细设计和概要设计阶段:确保集成测试计划和单元 测试计划完成。编码阶段:由开发人员进行自己负责部分的测试代码。在项目较大时,由专人进行编码阶段的测 试任务。测试阶段:依据测试代码进行测试,并提交相应的测 试状态报告和测试结束报告。6、测试在开发
16、各阶段的作用、测试在开发各阶段的作用图8-2 完整的开发流程项目规划项目规划项目需求分析项目需求分析项目概要分析项目概要分析项目详细分析项目详细分析代码编写代码编写测试代码编写测试代码编写测试需求分析测试需求分析系统测试计划系统测试计划集成测试计划集成测试计划单元测试计划单元测试计划产品发布产品发布系统测试系统测试集成测试集成测试单元测试单元测试7 7、完整的软件开发流程、完整的软件开发流程8.8.软件测试和缺陷修复的代价软件测试和缺陷修复的代价软件在从需求、设计、编码、测试一直到交付用户公开使用后的过程中,都有可能产生和发现缺陷。随着整个开发过程的时间推移,更正缺陷或修复问题的费用呈几何级数
17、增长。图8-3 软件缺陷在不同阶段发现时修复的费用示意图0 02020404060608080100100编制说明书编制说明书设计阶段设计阶段编写代码编写代码测试测试发布发布软件测试是有风险的行为 如果决定如果决定不去测试不去测试所有的情所有的情况,那就况,那就是选择了是选择了风险风险 。软件缺陷的寄生虫性找到的软件缺陷越多,就说明软件缺陷越多找到的软件缺陷越多,就说明软件缺陷越多原因:程序员的疲倦程序员往往犯同样的错误某些软件的缺陷其实是大灾难的征兆软件测试的杀虫剂现象软件测试越多,其免疫力越强的现象软件测试越多,其免疫力越强的现象克服方法:不断编写不同的新的测试程序对程序的不同部分进行测试
18、软件测试的不修复原则并非所有并非所有软件软件缺陷都能修复缺陷都能修复不需要修复软件缺陷的原因:没有足够的时间不算真正的软件缺陷修复的风险太大不值得修复Pareto原则 Pareto原则暗原则暗示着测试发现示着测试发现的错误中的的错误中的80%很可能起很可能起源于程序模块源于程序模块中的中的20%。软件测试中的误区调试和测试是一样的;测试组应当为保证质量负责;把测试作为新员工的一个过渡工作;关注测试的执行而忽略测试的设计;测试自动化是万能的;测试是枯燥乏味,缺乏创造力的工作。8.2.3 软件测试方法与策略软件测试策略软件测试方法测试关键词静态测试与动态测试白盒测试与黑盒测试软件测试模型软件测试策
19、略什么是软件测试策略?是为软件工程过程定义的一个软件测试的模板,也就是把特定的测试用例方法放置进去的一系列步骤。软件测试策略包含的特征:(1)测试从模块层开始,然后扩大延伸到整个基于计算机的系统集合中。(2)不同的测试技术适用于不同的时间点。(3)测试是由软件的开发人员和(对于大型系统而言)独立的测试组来管理的。(4)测试和调试是不同的活动,但是调试必须能够适应任何的测试策略。软件测试策略l测试信息流l分析设计阶段l需求说明书评测l概要设计说明书评测l详细设计说明书评测l软件编码规范评测l开发阶段l单元测试l集成测试l确认测试l系统测试l验收测试l软件验证和确认过程软件测试关键词l单元测试l集
20、成测试l系统测试l确认测试l验收测试l白盒测试l黑盒测试l灰盒测试单元测试l单元测试又称模块测试l是针对软件设计的最小单元程序模块进行正确性检验的测试工作l其目的在于检查每个程序单元能否实 现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的错误集成测试l集成测试,也叫组装测试或联合测试l在单元测试的基础上,将所有模块按照设计要求)如根据结构图组装成为子系统或系统,进行集成测试l集成测试是检验程序单元和部件的接口关系l实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现系统测
21、试l 系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方l 系统测试的任务是近可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统做得怎样?确认测试l确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样 l确认测试又称有效性测试。有效性测试是在模拟的环境
22、下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。任务是验证软件的功能和性能及其他特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定,它包含的信息就是软件确认测试的基础验收测试l 系统开发生命周期方法论的一个阶段,这时相关的用户和或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试l 这是管理性和防御性控制的测试过程白盒测试l白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检
23、验程序中的每条通路是否都能按预定要求正确工作l是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致黑盒测试l黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。l在测试地,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。l黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试灰
24、盒测试l 灰盒测试,确实是介于白盒测试与黑盒测试之间的测试l 灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法软件测试技术的发展趋势:软件测试技术的发展趋势:(1)软件验证技术(2)静态测试分析技术(3)测试数据的选择主要对测试用例进行选择 通常从下面几个方面评价测试用例的质量:检测软件缺陷的有效性、测试用例的可重用性、测试用例的经济性、测试用例的可维护性(4)集成化
25、测试研究如何实现软件测试的自动化过程以及相关的一系列内容。软件测试方法的分类按照软件测试用例的设计方法而论,软件测试可分为白盒测试法和黑盒测试法;按照软件测试是否执行程序而论,软件测试又可以分为静态测试和动态测试;按照软件设计方法是否采用面向对象设计技术而论,软件测试又可以分为传统测试方法和面向对象测试方法;按照网络环境下C/S应用结构的特定环境而论,软件测试又有其相应的方法。这些都是软件测试具体的测试方法。静态测试与动态测试1、静态测试静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估。静态测试包括代码检查 、静态结构分析 、代码质量度量 等。它可以由人工进行,也可以借助软件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 软件 测试
限制150内