实用软件工程第9章-软件测试课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《实用软件工程第9章-软件测试课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实用 软件工程 软件 测试 课件
- 资源描述:
-
1、二、软件测试背景二、软件测试背景软件是人编的软件是人编的所以不完美所以不完美实例实例:1994-1995,1994-1995,迪斯尼的狮子王系统不支持问题迪斯尼的狮子王系统不支持问题IntelIntel的的pentiumpentium处理器处理器19941994年浮点除法缺陷年浮点除法缺陷200200年年8 8月月2828日,日,1.13MHZ1.13MHZ处理器一个可能导致运行程序处理器一个可能导致运行程序被挂起的执行指令问题被挂起的执行指令问题19991999年年1212月月3 3日日,美国航天局火星极地登陆飞船失美国航天局火星极地登陆飞船失踪踪19911991年爱国者导弹防御系统系统时钟
2、错误积累造年爱国者导弹防御系统系统时钟错误积累造成跟踪系统失去精确度成跟踪系统失去精确度千年虫千年虫,世界各地解决世界各地解决20002000年错误超过数亿美元年错误超过数亿美元 软件产品软件产品最大的成本最大的成本是检测软是检测软 件错误、修正软件错误的成本。件错误、修正软件错误的成本。在整个软件开发中,测试工作在整个软件开发中,测试工作量量 一般占一般占30%30%40%40%,甚至,甚至50%50%。在在人命关天的软件人命关天的软件(如飞机控制、核如飞机控制、核反应堆等)测试所花费的时间往往反应堆等)测试所花费的时间往往是其它软件工程活动时间之和的三是其它软件工程活动时间之和的三到五倍到
3、五倍软件测试的认识的发展软件测试的认识的发展人们对软件测试认识的五个阶段:人们对软件测试认识的五个阶段:阶段阶段1 1 测试测试=调试调试阶段阶段2 2 测试是证明软件正确测试是证明软件正确阶段阶段3 3 测试是发现软件中错误测试是发现软件中错误阶段阶段4 4 测试是减小软件不工作的风测试是减小软件不工作的风险险 (是度量软件质量要素的(是度量软件质量要素的过程)过程)阶段阶段5 5 测试是可产生低风险的软件的测试是可产生低风险的软件的 一种认识上的训练一种认识上的训练n软件测试是为了软件测试是为了发现错误而执发现错误而执行程序行程序的活动过程的活动过程。n软件开发过程必须伴有质量保软件开发过
4、程必须伴有质量保证活动。证活动。n软件测试是软件测试是软件质量保证软件质量保证的关的关键元素,代表了规约、设计和键元素,代表了规约、设计和编码的编码的最终检查最终检查。9.1.1 测试目标测试目标(1)(1)完全预防错误完全预防错误几乎不可实现几乎不可实现(2)(2)尽可能多地发现错误尽可能多地发现错误 9.1 软件测试目标软件测试目标和方法和方法测试的目的与地位测试的目的与地位 G.J.MyersG.J.Myers在在 中认为中认为:1 1.测试是为了测试是为了寻找寻找错误而错误而运行运行程序的过程程序的过程。2 2.一个好的一个好的测试测试用例是指很可能找到用例是指很可能找到迄今为迄今为止
5、尚未发现止尚未发现的错误的测试。的错误的测试。3.3.一个成功的测试一个成功的测试是是揭示了揭示了迄今为止尚未发迄今为止尚未发现的错误现的错误的测试。的测试。E.W.DijkstraE.W.Dijkstra 指出指出:“程序测试能程序测试能证明错误的存在证明错误的存在,但不能证明错误不存在但不能证明错误不存在.”.”测试的目的是发现程序中测试的目的是发现程序中的错误的错误,是为了是为了证明程序有错证明程序有错,而不是证明程序无错而不是证明程序无错.把证明程序无错当作测试目的不仅把证明程序无错当作测试目的不仅是不正确的是不正确的,完全做不到的,而且对做完全做不到的,而且对做好测试没有任何益处,甚
6、至是好测试没有任何益处,甚至是十分有害十分有害的的.软件测试要设法使软件发生故障软件测试要设法使软件发生故障,暴露软件错误。暴露软件错误。测试的测试的“成功成功”与与“失败失败”能够发现错误的测试是成功的能够发现错误的测试是成功的测试,否则是失败的测试测试,否则是失败的测试。9.1.2 9.1.2 测试方法测试方法软件测试的软件测试的策略和方法策略和方法静态测静态测试方法试方法动态测动态测试方法试方法人工测试方法人工测试方法计算机辅助静计算机辅助静态分析方法态分析方法白盒测试方法白盒测试方法黑盒测试方法黑盒测试方法静态静态和动态和动态测试测试汽车的检查过程汽车的检查过程:看车漆看车漆打开前盖检
7、查打开前盖检查发动汽车发动汽车听听发动机声音听听发动机声音上路行使上路行使静态测试静态测试动态动态测试测试有时候在测试时使用静态测试方有时候在测试时使用静态测试方法更为有效。法更为有效。n静态测试方法有计算机辅助静态分析和人工测静态测试方法有计算机辅助静态分析和人工测试等方法,试等方法,n其中,对源程序进行态分析的方法有生成各类其中,对源程序进行态分析的方法有生成各类引用表、静态错误分析、类型和单位分析、引引用表、静态错误分析、类型和单位分析、引用分析、表达式分析和接口分析等;用分析、表达式分析和接口分析等;n人工测试的方法有桌前检查、代码会审和走查人工测试的方法有桌前检查、代码会审和走查等,
8、检查变量、标号的交叉引用,检查子程序等,检查变量、标号的交叉引用,检查子程序、宏、函数、常量、标准和风格等,可以由编、宏、函数、常量、标准和风格等,可以由编写者自己非正式检查(称为写者自己非正式检查(称为桌前检查桌前检查),也可),也可以由小组正式审查(称为以由小组正式审查(称为代码会审代码会审)或非正式)或非正式检查(称为检查(称为走查走查),这里不做更详细介绍;),这里不做更详细介绍;动态测试方法有动态测试方法有白盒测试和黑盒白盒测试和黑盒测试测试等方法。其基本步骤为:等方法。其基本步骤为:(1)(1)选取定义域有效值选取定义域有效值,或定义域或定义域 外无效值外无效值.(2)(2)对已选
9、取值决定对已选取值决定预期的结果预期的结果(3)(3)用选取值执行程序用选取值执行程序(4)(4)执行结果执行结果 与与(2)(2)结果相比结果相比,不吻和程序有错不吻和程序有错.n针对专门环境和应用的测试针对专门环境和应用的测试(1)GUI1)GUI测试测试常见常见GUIGUI测试指南:测试指南:对于窗口对于窗口对于菜单和鼠标操作对于菜单和鼠标操作对于数据项对于数据项(2)C/S2)C/S体系结构的测试体系结构的测试 整体整体C/SC/S测试策略测试策略(三个不同层次三个不同层次)客户端应以客户端应以“分离的分离的”模式被测试模式被测试 (不考虑服务器和底层网络的运行不考虑服务器和底层网络的
10、运行)客户端软件和关联的服务器端应用被一客户端软件和关联的服务器端应用被一起测试起测试(网络运行不被明显考虑网络运行不被明显考虑)完整的完整的C/SC/S体系结构体系结构(包括网络运行和性包括网络运行和性能能)被测试被测试 C/SC/S常用测试方法常用测试方法客户端应用功能测试客户端应用功能测试服务器测试服务器测试(协调和数据管理功能(协调和数据管理功能、性能)、性能)数据库测试数据库测试事务测试事务测试网络通信测试网络通信测试(3)3)实时系统测试实时系统测试可采用以下四步策略:可采用以下四步策略:(1)(1)任务测试任务测试(2)(2)行为测试行为测试(3)(3)任务间测试任务间测试(4)
11、(4)系统测试系统测试1)1)任务测试任务测试 (task testing)对每一个任务进行单独测试对每一个任务进行单独测试(白盒、黑盒测试白盒、黑盒测试),发现,发现逻辑和功逻辑和功能上错误能上错误,不能发现定时上和行为,不能发现定时上和行为上错误上错误 。2)2)行为测试行为测试(behavioral testing)用用CASECASE工具创建应用系统模型,工具创建应用系统模型,模拟实时系统行为。模拟实时系统行为。按类测试各种事件按类测试各种事件(如中断、控制如中断、控制信号、数据信号、数据)。测试过的事件以随机次序、随机频测试过的事件以随机次序、随机频率送给系统率送给系统,检查软件检查
12、软件行为方面的错误行为方面的错误.3)3)任务间测试任务间测试(intertask testing)检查检查与时间有关错误与时间有关错误。如用不同数据速率、处理负载如用不同数据速率、处理负载 测试相互通信的异步任务。测试相互通信的异步任务。通过消息队列或数据存储测试通过消息队列或数据存储测试 任务间的通信来找出数据存储区错任务间的通信来找出数据存储区错 误的范围。误的范围。4)4)系统测试系统测试 (system testing)软件、硬件组装后,找出软件、硬件组装后,找出软、软、硬件接口错误硬件接口错误。n黑盒法测试黑盒法测试 又称又称:功能测试功能测试 数据驱动测试数据驱动测试 基于规格说
13、明书的测试基于规格说明书的测试动态黑盒测试 闭着眼睛测试软件闭着眼睛测试软件软件输入输入 不深入代码细节的测试方法称为动态黑盒测试。不深入代码细节的测试方法称为动态黑盒测试。软件测试员充当客户来使用它。软件测试员充当客户来使用它。输出输出n白盒法测试白盒法测试 又称又称:开盒测试开盒测试 结构测试结构测试 玻璃盒测试玻璃盒测试 基于覆盖的测试基于覆盖的测试.根据被测程序的逻辑结构设根据被测程序的逻辑结构设计测试用例计测试用例;力求提高测试覆盖率力求提高测试覆盖率;动态白盒测试 带上带上X X光眼镜测试软件光眼镜测试软件?3581322.293419985680302829734315250*(
14、1+0.015)*(1+0.015)360-1)/0.015250*(1+0.015)*(1+0.015)360-1)/0.015 假如知道一个盒子包含一台计算机假如知道一个盒子包含一台计算机,而另一个而另一个盒子是人用纸笔计算盒子是人用纸笔计算,就会选择不同的测试用例就会选择不同的测试用例了解软件的运作方式会影响测试手段了解软件的运作方式会影响测试手段n黑盒测试与白盒测试比较黑盒测试与白盒测试比较 黑盒测试黑盒测试是从用户观点,按是从用户观点,按规格说明书要求的输入数据与输规格说明书要求的输入数据与输出数据的对应关系设计测试用例出数据的对应关系设计测试用例,是根据程序是根据程序外部特征外部特
15、征进行测试。进行测试。白盒测试白盒测试是根据程序是根据程序内部逻内部逻辑结构辑结构进行测试。进行测试。黑盒测试与白盒测试优缺点比较 黑盒测试黑盒测试 白盒测试白盒测试 优优点点缺缺点点性性质质适用于各阶段测试适用于各阶段测试从产品功能角度测试从产品功能角度测试容易入手生成测试数容易入手生成测试数 据据可构成测试数据使特定程可构成测试数据使特定程 序部分得到测试序部分得到测试有一定的充分性度量手段有一定的充分性度量手段可或较多工具支持可或较多工具支持某些代码得不到测试某些代码得不到测试如果规格说明有误,如果规格说明有误,则无法发现则无法发现不易进行充分性测试不易进行充分性测试不易生成测试数据不易
16、生成测试数据(通常通常)无法对未实现规格说明的无法对未实现规格说明的 部分进行测试部分进行测试工作量大,通常只用于单工作量大,通常只用于单 元测试,有应用局限元测试,有应用局限是一种是一种确认确认技术,回答技术,回答“我们在构造一个正确我们在构造一个正确 的系统吗?的系统吗?”是一种是一种验证验证技术,回答技术,回答“我们在正确我们在正确 地构造一个系地构造一个系 统吗统吗?”不论黑盒还是白盒测试都不论黑盒还是白盒测试都不能不能进行穷尽测试进行穷尽测试,所以软件测试不可所以软件测试不可能发现程序中存在的所有错误能发现程序中存在的所有错误,因因此需精心设计测试方案此需精心设计测试方案,力争尽可力
17、争尽可能少的次数能少的次数,测出尽可能多的错误测出尽可能多的错误.程序测试举例程序测试举例例:程序例:程序 TriangleTriangle,输入三个整输入三个整 数,表示一个三角形的三个边数,表示一个三角形的三个边 长,该程序产生一个结果,指长,该程序产生一个结果,指 出该三角形是等边三角形、等出该三角形是等边三角形、等 腰三角形还是不等边三角形。腰三角形还是不等边三角形。判断三角型的测试用例设计判断三角型的测试用例设计:输入数据输入数据 预期结果预期结果(1)6;6;6 (1)6;6;6 等边等边(2)8;8;4 (2)8;8;4 等腰等腰(3)4;5;6 (3)4;5;6 一般一般 还应
18、输入还应输入非法数据非法数据:0;7;90;7;9 -7;3;5 -7;3;5 a;2;7 a;2;7 等等9.1.3 9.1.3 测试原则测试原则(1)(1)所有的测试都应所有的测试都应追溯到用户需求追溯到用户需求 最严重的错误最严重的错误(从用户角度从用户角度)是那是那些导致软件些导致软件无法满足需求无法满足需求的错误。的错误。程序中的问题根源程序中的问题根源可能在开发可能在开发 前期的各阶段解决、纠正错误也必须前期的各阶段解决、纠正错误也必须追溯到前期工作追溯到前期工作。(2)(2)概要设计时应完成测试计划概要设计时应完成测试计划,详细的测试用例定义可在设计详细的测试用例定义可在设计 模
19、型确定后开始,所有测试可模型确定后开始,所有测试可 在任何代码被产生之前进行计在任何代码被产生之前进行计 划和设计。划和设计。软件测试不等于程序测试软件测试不等于程序测试 软件测试应贯穿于软件定义与软件测试应贯穿于软件定义与开发的整个期间;开发的整个期间;据美国一家公司统计,查出的软据美国一家公司统计,查出的软件错误中,属于件错误中,属于需求分析和软件设计需求分析和软件设计的错误的错误约占约占 64%64%,属于程序编写的错,属于程序编写的错误仅占误仅占 36%36%。程序编写的许多错误是。程序编写的许多错误是“先天的先天的”。(3)pareto3)pareto原则原则:测试发现的错误中:测试
20、发现的错误中80%80%很可能起源于很可能起源于20%20%的模块中。应孤立这的模块中。应孤立这些疑点模块重点测试。些疑点模块重点测试。(4)(4)穷举测试穷举测试是不可能的。是不可能的。(5)(5)应由独立的应由独立的第三方第三方来构造测试。来构造测试。(开发和测试队伍分别建立开发和测试队伍分别建立)(6)(6)测试用例测试用例应由输入数据和预期的输应由输入数据和预期的输 出结果两部分组成出结果两部分组成.(7)(7)兼顾兼顾合理的合理的输入和不合理的输入数据输入和不合理的输入数据(8)(8)程序修改后要程序修改后要回归测试回归测试(9)(9)应应长期保留长期保留测试用例,直至系统废弃。测试
21、用例,直至系统废弃。软件测试是有风险的行为软件测试是有风险的行为数数量量遗漏软件遗漏软件缺陷数目缺陷数目测试费用测试费用测试中测试中测试后测试后软件测试工作量测试工作量每一个软件项目都有一个最优的测量量每一个软件项目都有一个最优的测量量最优测量量最优测量量“好好”测试的特征测试的特征:发现错误的可能性高发现错误的可能性高不冗余不冗余在目的相似的测试中,应使用在目的相似的测试中,应使用最可能找到错误的测试最可能找到错误的测试每一个测试应独立执行每一个测试应独立执行所以,软件测试应该是所以,软件测试应该是有计划有计划的活动,的活动,软件测试输入、输出和中间信息流软件测试输入、输出和中间信息流软件软
22、件配置配置测试测试测试测试配置配置测试测试工具工具结果结果分析分析排错排错可靠性可靠性 分析分析测试测试结果结果错误错误预期预期结果结果出错率出错率 改正改正的软件的软件预测预测的可的可靠性靠性需求规格说明书需求规格说明书软件设计说明书软件设计说明书 被测源程序被测源程序 测试计划测试计划 测试用例测试用例(测试数据测试数据)测试驱动程序测试驱动程序其中,测试工具包括静态分析工具、动态测试工其中,测试工具包括静态分析工具、动态测试工具、测试数据自动生成工具和集成化测试环境等具、测试数据自动生成工具和集成化测试环境等,9.2 9.2 测试步骤测试步骤n单元测试单元测试:检验每个模块能否单独工作检
23、验每个模块能否单独工作.集成测试集成测试:检验概要设计中模块接口设检验概要设计中模块接口设 计问题计问题(可分可分子系统和系统)子系统和系统)确认测试确认测试:以需求规格说明书为检验尺以需求规格说明书为检验尺 度(可分度(可分内部确认和验收内部确认和验收)系统测试系统测试:综合检验综合检验软件与整个计算机软件与整个计算机 系统系统.广义的广义的测试可视为分析、设计、编码三测试可视为分析、设计、编码三个阶段的最终复审个阶段的最终复审,以保证软件质量以保证软件质量.测测试试与与开开发发前前期期工工作作的的关关系系决定软件与系统的配合关系决定软件与系统的配合关系需求分析需求分析概要设计概要设计详细设
24、计详细设计 编编 码码单元测试单元测试集成测试集成测试确认测试确认测试系统测试系统测试设设计计信信息息软软件件需需求求其其它它系系统统元元素素软件测试的过程软件测试的过程被测被测模块模块单元单元测试测试设计设计信息信息集成集成测试测试被测被测模块模块单元单元测试测试被测被测模块模块单元单元测试测试测试过测试过的模块的模块确认确认测试测试平行平行运行运行软件软件需求需求其它系其它系统元素统元素装配好装配好的软件的软件 确认确认的软件的软件可运可运行的行的软件软件软件测试策略软件测试策略单元测试单元测试U UC CD DR RS SI IV VSTST集成测试集成测试确认测试确认测试平行运行平行运
25、行系统工程系统工程软件需求分析软件需求分析软件设计软件设计代码编写代码编写9.2.19.2.1 单元(模块)测试单元(模块)测试n单元测试着重对软件设计的单元测试着重对软件设计的最小单元最小单元(软件构件或模块)进行验证。这里将构软件构件或模块)进行验证。这里将构件或模块统一称为件或模块统一称为模块模块。n单元测试单元测试根据设计描述根据设计描述,对重要的控制,对重要的控制路径进行测试,以发现模块内部的错误路径进行测试,以发现模块内部的错误,主要揭露编码阶段产生的错误。,主要揭露编码阶段产生的错误。单元单元测试通常采用白盒测试法,测试通常采用白盒测试法,也可多个模也可多个模块并行进行测试。块并
展开阅读全文