实用软件工程第9章-软件测试课件.ppt

上传人(卖家):三亚风情 文档编号:3193527 上传时间:2022-07-31 格式:PPT 页数:172 大小:820KB
下载 相关 举报
实用软件工程第9章-软件测试课件.ppt_第1页
第1页 / 共172页
实用软件工程第9章-软件测试课件.ppt_第2页
第2页 / 共172页
实用软件工程第9章-软件测试课件.ppt_第3页
第3页 / 共172页
实用软件工程第9章-软件测试课件.ppt_第4页
第4页 / 共172页
实用软件工程第9章-软件测试课件.ppt_第5页
第5页 / 共172页
点击查看更多>>
资源描述

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单元测试单元测试根据设计描述根据设计描述,对重要的控制,对重要的控制路径进行测试,以发现模块内部的错误路径进行测试,以发现模块内部的错误,主要揭露编码阶段产生的错误。,主要揭露编码阶段产生的错误。单元单元测试通常采用白盒测试法,测试通常采用白盒测试法,也可多个模也可多个模块并行进行测试。块并

26、行进行测试。1.1.单元测试的内容单元测试的内容主要对模块的主要对模块的五个基本特性五个基本特性进行评价进行评价模块模块错误处理错误处理模块接口模块接口局部数局部数据结构据结构 重要的重要的执行路径执行路径边界条件边界条件n常见错误类型常见错误类型 接口错误接口错误 I/OI/O错误错误 数据结构错误数据结构错误 算法错误算法错误 比较及控制逻辑错误比较及控制逻辑错误 错误处理错误错误处理错误n模块测试基本原则模块测试基本原则 至少一次测试所有语句至少一次测试所有语句 测试所有可能的执行或逻辑路径的组合测试所有可能的执行或逻辑路径的组合 测试每个模块的所有入口和出口测试每个模块的所有入口和出口

27、2.2.单元测试的环境单元测试的环境 单元测试一般为单元测试一般为编码步骤的附属部编码步骤的附属部分分.模块不是独立的程序模块不是独立的程序,自己不能运自己不能运行行,要靠其它部分来调用和驱动要靠其它部分来调用和驱动,要为要为每个单元测试开发两个软件每个单元测试开发两个软件:(1)(1)驱动模块驱动模块(驱动程序驱动程序):相当于主模块相当于主模块(2)(2)桩模块桩模块(测试存根、测试存根、连接程序连接程序):代替所测模块调用的子模块代替所测模块调用的子模块单元测试的测试环境举例单元测试的测试环境举例:B BA AC CD DE E待测试模块待测试模块单元测试的测试环境举例单元测试的测试环境

28、举例:被测模块被测模块 B B 驱动模块驱动模块(模拟模块模拟模块A A)桩模块桩模块(测试存根测试存根)(模拟模块模拟模块E E)测试用例测试用例测试结果测试结果 许多模块不能用简单的软件进行充分的许多模块不能用简单的软件进行充分的单元测试单元测试,此时此时,完全的测试可放到集成测完全的测试可放到集成测试阶段再进行试阶段再进行.单元测试的测试环境举例单元测试的测试环境举例:实际软件实际软件华氏到慑氏华氏到慑氏转换模块转换模块温度数据温度数据实际配置实际配置测试用例测试用例数据数据结果结果 测试驱动软件测试驱动软件华氏到慑氏华氏到慑氏转换模块转换模块结果结果测试驱动际配置测试驱动际配置单元测试

29、的测试环境举例单元测试的测试环境举例 温度显示模块温度显示模块温度接口温度接口模块模块实际配置实际配置测试驱动际配置测试驱动际配置 温度显示模块温度显示模块程序员编写程序员编写的桩模块的桩模块(测试存根测试存根)温度值的测试文件温度值的测试文件9.2.2 9.2.2 集成测试集成测试(组装测试组装测试)n集成测试又称集成测试又称组装测试或联合测试组装测试或联合测试。经。经单元测试后,每个模块都能独立工作,单元测试后,每个模块都能独立工作,但把它们放在一起往往不能正常工作,但把它们放在一起往往不能正常工作,需要做集成测试。集成测试针对集成的需要做集成测试。集成测试针对集成的软件系统,主要揭露软件

30、系统,主要揭露设计阶段产生的错设计阶段产生的错误,通常采用黑盒测试技术。误,通常采用黑盒测试技术。n集成测试需考虑的问题集成测试需考虑的问题:F数据穿越接口可能丢失数据穿越接口可能丢失.F一模块可能破坏另一模块功能一模块可能破坏另一模块功能.F子功能组装可能未产生所要求的子功能组装可能未产生所要求的 主功能主功能.F全程数据结构可能出问题全程数据结构可能出问题.F误差累积问题误差累积问题.1.1.集成测试策略集成测试策略通常采用黑盒测试技术通常采用黑盒测试技术实施策略实施策略:F非渐增式测试非渐增式测试F渐增式测试渐增式测试 深度优先深度优先广度优先广度优先自顶向下结合自顶向下结合自底向上结合

31、自底向上结合(1 1)非渐增式集成方式)非渐增式集成方式 一次就把所有通过了单元测试一次就把所有通过了单元测试的模块组合在一起进行全程序的测的模块组合在一起进行全程序的测试试.缺点缺点:发现错误难以诊断定位发现错误难以诊断定位.又称又称“莽撞测试莽撞测试”.(2 2)渐增式集成方式渐增式集成方式 从一个模块开始从一个模块开始,测一次添加测一次添加一个模块,边组装边测试,以发现一个模块,边组装边测试,以发现与接口相联系的问题。与接口相联系的问题。自顶向下结合方式举例自顶向下结合方式举例:ADBE模块测试模块测试结合顺序结合顺序CF深度优先深度优先:A、B、E、C、D、F广度优先广度优先:A、B、

32、C、D、E、F自顶向下结合方式举例自顶向下结合方式举例:(深度优先深度优先)A测试测试 AS2S1S3A加入加入BS2BS3S4A加入加入ES2BS3EA加入加入CCBS3E加入加入DCBDE加入加入FCBDEAAFS5自底向上结合方式举例自底向上结合方式举例:A AC CB BD DF FE EE Ed d1 1C Cd d3 3F Fd d4 4B Bd d2 2E ED Dd d5 5F F自底向上结合方式举例自底向上结合方式举例:McD1MaMbD2D3簇簇1 1簇簇2 2簇簇3 3 自顶向下自顶向下 自底向上自底向上优点优点 可在测试早期可在测试早期 设计测试用例容易设计测试用例容易

33、 实现并验证系实现并验证系 统主要功能统主要功能 不需驱动模块不需驱动模块 不需桩模块不需桩模块 缺点缺点 需桩模块需桩模块 只有到最后程序才只有到最后程序才 能作为一个整体能作为一个整体(3 3)混合集成方式混合集成方式F一般对软件结构的一般对软件结构的上层使用自顶向下上层使用自顶向下结合结合的方法的方法;F对对下层使用自底向上下层使用自底向上结合的方法结合的方法;9.2.3 9.2.3 确认测试(确认测试(Validation Testing)确认测试是根据软件需求规约对集成的软确认测试是根据软件需求规约对集成的软件进行确认。件进行确认。n确认测试标准确认测试标准 确认测试以确认测试以软件

34、需求规约软件需求规约为依据,以发为依据,以发现软件与需求不一致的错误。现软件与需求不一致的错误。主要检查:主要检查:l软件是否实现了规约规定的全部功能要求;软件是否实现了规约规定的全部功能要求;l 文档资料是否完整、正确、合理;文档资料是否完整、正确、合理;l其他的需求,如可移植性、可维护性、兼容其他的需求,如可移植性、可维护性、兼容性、错误恢复能力等是否满足。性、错误恢复能力等是否满足。软件配置评审软件配置评审软件配置评审也称软件审计(软件配置评审也称软件审计(audit),其目),其目的是保证软件配置的的是保证软件配置的所有成分都齐全所有成分都齐全,各方,各方面的面的质量都符合要求质量都符

35、合要求,具有维护阶段必需的,具有维护阶段必需的细节,而且已经编排好分类目录。细节,而且已经编排好分类目录。软件配置主要包括计算机程序(源代码和可软件配置主要包括计算机程序(源代码和可执行程序),针对开发者和用户的各类文档执行程序),针对开发者和用户的各类文档,包含在程序内部或程序外部的数据。,包含在程序内部或程序外部的数据。n测试和测试和测试测试l如果软件是为如果软件是为一个客户开发一个客户开发的,那么,的,那么,最后由客户进行最后由客户进行验收测试验收测试(acceptance test),以使客户确认该),以使客户确认该软件是他所需要的。软件是他所需要的。l如果软件是给如果软件是给许多客户

36、使用许多客户使用的(如市场的(如市场上销售的各种软件),那么让每个客户上销售的各种软件),那么让每个客户做验收测试是不现实的。大多数软件厂做验收测试是不现实的。大多数软件厂商都使用一种称为商都使用一种称为测试测试和和测试测试的过程的过程,来发现那些似乎只有最终用户才能发,来发现那些似乎只有最终用户才能发现的错误。现的错误。l测试测试是由是由一个用户一个用户在在开发者的场所开发者的场所进行的进行的,软件在开发者对用户的,软件在开发者对用户的“指导下指导下”进行测进行测试。经试。经测试后的软件称为测试后的软件称为版软件。版软件。l测试测试是由软件的最终用户在是由软件的最终用户在一个或多个用一个或多

37、个用户场所户场所进行的,与进行的,与测试不同,测试不同,开发者通常开发者通常不在测试现场不在测试现场,因此,因此,测试是软件在一个测试是软件在一个开发者不能控制的环境中的开发者不能控制的环境中的“活的活的”应用,应用,用户记录所有在用户记录所有在测试中遇到的(真正的或测试中遇到的(真正的或想象的)问题,并想象的)问题,并定期把这些问题报告给开定期把这些问题报告给开发者,发者,在接到在接到测试的问题报告后,开发者测试的问题报告后,开发者对软件进行最后的修改,然后着手准备向所对软件进行最后的修改,然后着手准备向所有的用户发布最终的软件产品。有的用户发布最终的软件产品。n 确认测试的结果可确认测试的

38、结果可分为两类分为两类:满足需求规约要求的功能或性能特满足需求规约要求的功能或性能特性,用户可以接受。性,用户可以接受。发现与需求规约有偏差,此时需列发现与需求规约有偏差,此时需列出问题清单。出问题清单。9.2.4 9.2.4 系统测试系统测试(System Testing)n系统测试是对整个系统测试是对整个基于计算机的系统基于计算机的系统进行进行的一系列测试。的一系列测试。n系统测试的种类很多,每种测试都有不同系统测试的种类很多,每种测试都有不同的目的,它们从不同的角度测试计算机系的目的,它们从不同的角度测试计算机系统是否被正常地集成,并完成相应的功能统是否被正常地集成,并完成相应的功能。n

39、常用的系统测试包括:常用的系统测试包括:恢复测试恢复测试(recovery testing)安全测试安全测试(security testing)压力测试压力测试(stress testing)性能测试性能测试(performance testing)1.恢复测试(恢复测试(recovery testing)n恢复测试是通过各种手段,恢复测试是通过各种手段,强制软件发生强制软件发生故障,故障,然后来验证系统能否在指定的时间然后来验证系统能否在指定的时间间隔内恢复正常,包括修正错误并重新启间隔内恢复正常,包括修正错误并重新启动系统。动系统。n如果恢复是由系统自身来完成的,那么,如果恢复是由系统自身

40、来完成的,那么,需验证重新初始化、检查点机制、数据恢需验证重新初始化、检查点机制、数据恢复和重启动等的正确性。复和重启动等的正确性。n如果恢复需要人工干预,那么要如果恢复需要人工干预,那么要估算平均估算平均修复时间修复时间MTTR(mean time to repair)是否在用户可以接受的范围内。是否在用户可以接受的范围内。2.安全测试安全测试(security testing)n安全测试用来验证集成在系统中的安全测试用来验证集成在系统中的保护机制保护机制能否能否实际保护系统不受非法侵入。实际保护系统不受非法侵入。n在安全测试过程中,在安全测试过程中,测试者扮演一个试图攻击系测试者扮演一个试

41、图攻击系统的角色统的角色,采用各种方式攻击系统。例如,截取,采用各种方式攻击系统。例如,截取或码译密码;借助特殊软件攻击系统;或码译密码;借助特殊软件攻击系统;“制服制服”系统,使他人无法访问;故意导致系统失效,企系统,使他人无法访问;故意导致系统失效,企图在系统恢复之机侵入系统;通过浏览非保密数图在系统恢复之机侵入系统;通过浏览非保密数据,从中找出进入系统的钥匙等等。据,从中找出进入系统的钥匙等等。n一般来说,只要有足够的时间和资源,好的完全一般来说,只要有足够的时间和资源,好的完全测试一定能最终侵入系统。系统设计者的任务是测试一定能最终侵入系统。系统设计者的任务是把系统设计成:攻破系统所付

42、出的代价大于攻破把系统设计成:攻破系统所付出的代价大于攻破系统后得到信息的价值。系统后得到信息的价值。3.压力测试(压力测试(stress testing)n压力测试也称强度测试,它是在一种压力测试也称强度测试,它是在一种需要需要非正常数量、频率或容量的方式下非正常数量、频率或容量的方式下执行系执行系统,其目的是检查系统对非正常情况的承统,其目的是检查系统对非正常情况的承受程度。例如:受程度。例如:当系统的中断频率是每秒当系统的中断频率是每秒1或或2个时,执行每秒个时,执行每秒10个中断的测试用例个中断的测试用例将输入数据的数量提高一个数量级来测试输入将输入数据的数量提高一个数量级来测试输入功

43、能如何响应功能如何响应执行需要最大内存或其它资源的测试用例执行需要最大内存或其它资源的测试用例执行可能导致大量磁盘驻留数据的测试用例执行可能导致大量磁盘驻留数据的测试用例4.性能测试(性能测试(performance testing)n性能测试用来测试软件在集成的系统中的性能测试用来测试软件在集成的系统中的运行性运行性能。能。它对实时系统和嵌入式系统尤为重要。它对实时系统和嵌入式系统尤为重要。n性能测试可以发生在测试过程的所有步骤中性能测试可以发生在测试过程的所有步骤中单元测试时,主要测试一个独立模块的性能,单元测试时,主要测试一个独立模块的性能,如算法的执行速度。如算法的执行速度。软件集成后

44、,进行软件整体的性能测试。软件集成后,进行软件整体的性能测试。计算机系统集成后,进行整个计算机系统的性计算机系统集成后,进行整个计算机系统的性能测试。能测试。n性能测试常常需要性能测试常常需要与压力测试结合与压力测试结合起来进行,而起来进行,而且常常需要一些硬件和软件测试设备,以监测系且常常需要一些硬件和软件测试设备,以监测系统的运行情况。统的运行情况。有的比较重要的系统还需要平行运行。有的比较重要的系统还需要平行运行。平行运行是指投入运行后,与平行运行是指投入运行后,与旧系统同时使用的一种测试。旧系统同时使用的一种测试。是系统测试的一种。一般持续是系统测试的一种。一般持续几个月到一年。几个月

45、到一年。9.3 9.3 测试用例设计测试用例设计9.3.1 9.3.1 黑盒法黑盒法 黑盒测试是依据软件的需求规约,检黑盒测试是依据软件的需求规约,检查程序的功能查程序的功能是否符合需求规约的要是否符合需求规约的要求。求。主要的黑盒测试方法有主要的黑盒测试方法有等价类划分、等价类划分、边界值分析、错误猜测、比较测试和边界值分析、错误猜测、比较测试和因果图因果图等方法。等方法。1.1.等价划分法等价划分法 把所有可能的输入数据把所有可能的输入数据(有效的有效的和无效的和无效的)划分成若干个划分成若干个等价等价的子集的子集(称为等价类称为等价类),使得使得每个子集中每个子集中的的一个典型值一个典型

46、值在测试中的在测试中的作用作用与这一与这一子集中子集中所有其它值所有其它值的作用的作用相同相同.可从每个子集中选取一组数可从每个子集中选取一组数据来测试程序据来测试程序(1 1)等价类)等价类 等价类等价类是指输入或输出域的某个子集,该子集是指输入或输出域的某个子集,该子集中的每个输入或输出数据中的每个输入或输出数据对揭露软件中的错误对揭露软件中的错误都是等效的,测试等价类的某个代表值就等价都是等效的,测试等价类的某个代表值就等价于测试这一类其他值于测试这一类其他值。也就是说,如果该子集。也就是说,如果该子集中的某个输入或输出数据能检测出某个错误,中的某个输入或输出数据能检测出某个错误,那么该

47、子集中的其他输入或输出数据也能检测那么该子集中的其他输入或输出数据也能检测出同样的错误,反之,如果该子集中的某个输出同样的错误,反之,如果该子集中的某个输入或输出数据不能检测出错误,那么该子集中入或输出数据不能检测出错误,那么该子集中的其他输入或输出数据也不能检测出错误。的其他输入或输出数据也不能检测出错误。有效等价类有效等价类(合理等价类合理等价类)有效输入或输出数据即符合规格说明要求的有效输入或输出数据即符合规格说明要求的合理的输入或输出数据的等价类,主要用来合理的输入或输出数据的等价类,主要用来检验程序检验程序是否实现了规格说明中的功能是否实现了规格说明中的功能。无效等价类无效等价类(不

48、合理等价类不合理等价类)无效输入或输出数据即不符合规格说明要求无效输入或输出数据即不符合规格说明要求的不合理或非法的输入或输出数据的等价类的不合理或非法的输入或输出数据的等价类,主要用来检验程序,主要用来检验程序是否做了规格说明以外是否做了规格说明以外的事。的事。(2)划分等价类的规则)划分等价类的规则 划分等价类的原则:划分等价类的原则:覆盖覆盖 不相交不相交 代表性代表性具体规则具体规则 1)1)如果如果输入输入条件规定了条件规定了取值取值范围范围,可定义可定义一个有效一个有效等价类和等价类和两个无两个无 效效等价类。等价类。例例 :输入输入值是学生成绩,范围是值是学生成绩,范围是0 01

49、001000 1000 100 有效有效等价类等价类11成绩成绩100100无效等价类无效等价类 成绩成绩100100 无效等价类无效等价类 成绩成绩00具体规则:具体规则:2)2)如果如果输入输入条件代表条件代表集合集合的某的某 个元素个元素,则可,则可定义定义一个有效一个有效 等价类和等价类和一个无效一个无效等价类。等价类。例例:规定输入的考试成绩为优、良、中、规定输入的考试成绩为优、良、中、及格、不及格,则可确定一个有效等价类及格、不及格,则可确定一个有效等价类优、良、中、及格、不及格和一个无效等优、良、中、及格、不及格和一个无效等价类(所有不是这价类(所有不是这5 5个成绩之一的)。个

50、成绩之一的)。划分等价类的规则:划分等价类的规则:3)3)如规定了输入数据的如规定了输入数据的一组值一组值,且,且 程序对不同输入值做程序对不同输入值做不同处理不同处理,则则每个每个允许的允许的输入值是一个有输入值是一个有 效等价类效等价类,并有,并有一个无效一个无效等价类等价类 (所有不允许的输入值的集合所有不允许的输入值的集合)。例:例:输入条件说明学历可为输入条件说明学历可为:专科、本科、专科、本科、硕士、博士硕士、博士四种之一,则分别取这四四种之一,则分别取这四 种这四个值作为种这四个值作为四个有效等价类四个有效等价类,另,另 外把四种学历之外的任何学历作为无外把四种学历之外的任何学历

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(实用软件工程第9章-软件测试课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|