软件测试策略与过程.ppt_第1页
软件测试策略与过程.ppt_第2页
软件测试策略与过程.ppt_第3页
软件测试策略与过程.ppt_第4页
软件测试策略与过程.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 软件测试方法与过程,第2章 软件测试策略与过程,主要内容,软件测试流程,第2章 软件测试策略与过程,ISO 软 件 质 量 度 量 模 型,2.1 软件测试的复杂性与经济性,软件测试复杂性,对待缺陷的基本原则 缺陷的群集现象 缺陷有免疫力 缺陷关联和依赖 测试结果的处理原则 对缺陷进行复查和确认 测试结果的全面检查 出错统计和分析 妥善保存测试过程文档,软件缺陷构成,2.1 软件测试的复杂性与经济性,测试发现缺陷需要投入(时间和成本),遗留缺陷有风险,2.1 软件测试的复杂性与经济性,软件测试应追溯到用户需求 应尽早和不断地测试 穷尽测试是不可能的 具有良好的测试态度 避免测试自己的程

2、序 增量测试 测试分级 测试有重点 避免测试的随意性,测试原则,2.1 软件测试的复杂性与经济性,2.2 软件测试方法,软件测试技术分类,核心: 在每种测试方法、测试阶段和测试业务中,一般包括 1、功能测试 (黑盒、白盒) 2、性能测试(黑盒、白盒),软件测试业务分类,2.2 软件测试方法,静态测试和动态测试,运行程序,不运行程序,仅通过分析或检查等其他手段达到检测的目的。,通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,2.2 软件测试方法 测试分类,按是否需查看代码分类 黑盒测试 白盒测试,功能测试 数据测试,结构测试 逻辑测试,2.2 软件测试方法 测试分类

3、,黑盒测试和白盒测试,功能测试,结构测试,2.2 软件测试方法 测试分类,人工测试和自动化测试,人工测试是人为测试和手工测试的统称。 人为测试的主要方法有桌前检查 (desk checking) ,代码审查( code review )和走查( walkthrough )。经验表明,使用这种方法能够有效地发现 30% 到 70% 的逻辑设计和编码错误。 手工测试指的是在测试过程中,按测试计划一步一步执行程序,得出测试结果并进行分析的测试行为。 自动化测试指的是利用测试工具来执行测试,并进行测试结果分析的测试行为。,2.2 软件测试方法 测试分类,按测试执行时是否需人工干预分类 手工测试 自动测

4、试,人工测试是人为测试和手工测试的统称。 人为测试的主要方法有桌前检查 (desk checking) ,代码审查( code review )和走查( walkthrough )。经验表明,使用这种方法能够有效地发现 30% 到 70% 的逻辑设计和编码错误。 手工测试指的是在测试过程中,按测试计划一步一步执行程序,得出测试结果并进行分析的测试行为。 自动化测试指的是利用测试工具来执行测试,并进行测试结果分析的测试行为。,2.2 软件测试方法 测试分类,自动测试和手工测试,手工模拟用户操作,2.2 软件测试方法 测试分类,2.3 软件测试的阶段,单元测试,集成测试,系统测试,验收测试,一 单

5、元测试,什么是单元测试 单元测试是对软件基本组成单元进行测试,主要是为了发现单元内部可能存在的各种错误和不足 主要工作分为两个步骤:人工静态检查和动态执行跟踪 一般由开发组在开发组组长监督下进行 什么是单元 一个函数 类或类内成员函数 几个函数的集合,2.3 软件测试的阶段,单元测试误区 1、单元测试是一种浪费时间的工作 2、我是个很棒的程序员, 我是不是可以不进行单元测试? 3、集成测试能捕捉到所有的Bug 4、单元测试的成本效率不高 单元测试环境 1、详细设计说明书 2、源程序清单 3、驱动模块 4、桩模块,一 、单元测试,2.3 软件测试的阶段,单元测试的主要任务 在单元测试时,测试者需

6、要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。,一、单元测试,2.3 软件测试的阶段,单元测试用例设计思路 为系统运行设计测试用例 证明单元至少在某种正常情况下能够运行了。 为正向测试设计用例 验证设计说明书所对应的功能或性能指标是否实现。 为逆向测试设计用例 验证被测软件单元有没有做它不应该做的事情。 为满足特殊需求设计测试用例 验证系统性能、安全性、保密性等。 为代码覆盖设计用例 满足特定覆盖标准,一、单元测试,2.3 软件测试的阶段,二、集成测试,什么是集

7、成测试 集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统所进行的测试 集成测试关注的重点 模块接口的数据交换 各子功能组合起来能否达到预期要求的父功能 模块间是否有不利影响 全局数据结构 单个模块的误差是否会累积放大,2.3 软件测试的阶段,单元测试与集成测试区别 测试对象:单元测试对象是实现具体功能的单元,一般对应详细设计中所描述的设计单元。集成测试是针对概要设计所包含的模块以及模块组合进行的测试。 测试方法:单元测试所使用的主要测试方法是基于代码的白盒测试。而集成测试所使用的主要测试方法是基于功能的黑盒测试。 测试时间:集成测试要晚于单元测试,所以单元测试的好坏

8、直接影响着集成测试。 测试内容:单元测试主要包括模块内程序的逻辑等方面,集成测试主要是验证各个接口、接口之间的数据传递关系、模块组合后能否达到预期效果。,二、 集成测试,2.3 软件测试的阶段,集成方法 大爆炸集成Big bang integration (all module together) 自顶向下集成Top down integration (from higher levels no test drivers are needed) 自底向上集成Bottom up integration (from lower levels No test stubs necessary) 三明治

9、集成Sandwich testing (combination of bottom-up and top-down),2.3 软件测试的阶段,二、 集成测试,大爆炸集成 1. 目的 尽可能缩短测试时间,使用最少的测试用例验证系统。 2. 定义 大爆炸集成也称为一次性组装或整体拼装,这种集成测试策略的做法就是把所有通过单元测试的模块一次性集成到一起进行测试,不考虑组件之间的互相依赖性及可能存在的风险。,2.3 软件测试的阶段,二、 集成测试,3. 具体方法 举例来说,假设要对某个系统的部分功能(包括4个模块)进行测试,其功能分解如图:,2.3 软件测试的阶段,二、 集成测试,测试过程,2.3 软

10、件测试的阶段,二、 集成测试,4. 优点 (1)可以并行测试所有模块。 (2)需要的测试用例数目少。 (3)测试方法简单、易行。 5. 缺点 (1)由于不可避免存在模块间接口、全局数据结构等方面的问题,所以一次运行成功的可能性不大。 (2)如果一次集成的模块数量多,集成测试后可能会出现大量的错误。另外,修改了一处错误之后,很可能新增更多的新错误,新旧错误混杂,给程序的错误定位与修改带来很大的麻烦。 (3)即使集成测试通过,也会遗漏很多错误。,2.3 软件测试的阶段,二、 集成测试,6. 适用范围 (1)只需要修改或增加少数几个模块的前期产品稳定的项目; (2)功能少,模块数量不多,程序逻辑简单

11、,并且每个组件都已经过充分单元测试的小型项目; (3)基于严格的净室软件工程(由IBM公司开创的开发接近零缺陷的软件的成功做法)开发的产品,并且在每个开发阶段,产品质量和单元测试质量都相当高的产品。,2.3 软件测试的阶段,二、 集成测试,自顶向下集成 自顶向下的集成测试就是按照系统层次结构图,以主程序模块为中心,从顶层控制(主控模块)开始,自上而下按照深度优先或者广度优先策略,对各个模块一边组装一边进行测试。 采用同设计顺序一样的思路对被测系统进行测试,来验证系统的稳定性。,2.3 软件测试的阶段,二、 集成测试,Top-down Integration Testing,2.3 软件测试的阶

12、段,二、 集成测试,自底向上集成 1. 定义 自底向上集成是从系统层次结构图的最底层模块开始按照层次结构图,逐层向上进行组装和集成测试的方式。 2.方法 .从最底层的模块开始组装; .编制驱动程序,协调测试用例的输入与输出; .测试集成后的构件; .使用实际模块代替驱动程序,按程序结构向上组装测试后的构件; .重复上面的第二步,直到系统的最顶层模块被加入到系统中为止。,2.3 软件测试的阶段,二、 集成测试,Bottom-up Integration,2.3 软件测试的阶段,二、 集成测试,三明治集成(混合集成) 1.目的 综合利用自顶向下和自底向上两种集成测试策略的优点 2.定义 三明治集成

13、是一种混合增殖式测试策略,综合了自顶向下和自底向上两种集成方法,把系统划分成三层,中间一层为目标层,目标层上采用自顶向下集成,目标层下采用自底向上集成。,2.3 软件测试的阶段,二、 集成测试,Sandwich Testing Strategy,2.3 软件测试的阶段,二、 集成测试,三、 系统测试,什么是系统测试 系统测试是将集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据等其它系统元素结合在一起,在实际运行(使用)环境下所进行的一系列测试活动。 系统测试的目的 通过与系统的需求定义比较,检查软件是否存在与系统定义不符合或与之矛盾的地方,以验证软件系统的

14、功能和性能等满足其规约所指定的要求。,2.3 软件测试的阶段,系统测试方法 强度测试 性能测试 恢复测试 安全测试 可靠性测试 安装测试 容量测试 文档测试,2.3 软件测试的阶段,压力测试? 测试系统的性能和负载能力指标,三、 系统测试,强度测试(压力测试) 强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。例如: 把输入数据速率提高一个数量级,确定输入功能将如何响应。 设计需要占用最大存储量或其它资源的测试用例进行测试。,2.3 软件测试的阶段,三、 系统测试,性能测试 性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系

15、统。 性能测试常常需要与强度测试结合起来进行,并常常要求同时进行硬件和软件检测。 通常,对软件性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区,例如缓冲区,工作区的大小等、处理精度,等等。,2.3 软件测试的阶段,三、 系统测试,恢复测试 恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。 错误探测功能系统能否发现硬件失效与故障; 能否切换或启动备用的硬件; 在故障发生时能否保护正在运行的作业和系统状态; 在系统恢复后能否从最后记录下来的无错误状态开始继续执行作业,等等。,2.3 软件测试的阶段,三、 系统测试,安全性

16、测试 安全性测试是要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞,以检查系统对非法侵入的防范能力。 测试人员扮演非法入侵者。 系统安全设计的准则是:使非法侵入的代价超过被保护信息的价值。,2.3 软件测试的阶段,三、 系统测试,可靠性测试 是为了检验系统的可靠性是否达到预期目标而进行的测试。 平均失效间隔时间 MTBF (Mean Time Between Failures) 是否超过规定时限? 因故障而停机的时间 MTTR (Mean Time To Repairs) 在一年中应不超过多少时间。,2.3 软件测试的阶段,三、 系统测试,安装测试 安装测试的目的不是找软件

17、错误,而是找安装错误。 在安装软件系统时,会有多种选择。 要分配和装入文件与程序库 布置适用的硬件配置 进行程序的联结。 安装测试就是要找出在这些安装过程中出现的错误,验证成功安装系统的能力。,2.3 软件测试的阶段,三、 系统测试,容量测试 容量测试是根据预先分析出的某项指标极限值,测试系统在其极限值状态下是否能保持正常运行。例如, 对于编译程序,让它处理特别长的源程序; 对于操作系统,让它的作业队列“满员”; 对于信息检索系统,让它使用频率达到最大。 在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。 完成标准可定义为:所计划的测试已全部执行,而且达到或超出指定的系统限制没有出

18、现任何软件故障。,2.3 软件测试的阶段,三、 系统测试,文档测试 检查用户文档的清晰性和精确性。,2.3 软件测试的阶段,三、 系统测试,四、验收测试,验收测试是以用户为主的测试,软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果。一般使用生产中的实际数据进行测试。在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。 测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为版本)进行测试,试图发现错误并修正。 测试是指软件开发公司组织各方面的典型用户在日常工作

19、中实际使用版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对版本进行改错和完善。,2.3 软件测试的阶段,2.4 其它测试类型,回归测试 在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来问题。每当软件发生变化时,就必须进行回归测试,重新测试原有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。 回归测试需要反复进行 常利用自动测试工具来实现重复的和一致的回归测试 面向对象的软件测试 面向对象的单元测试 :类测试 面向对象的集成测试 :类簇测试 面向对象的系统测试,2.5 面对对象软件测试,1. 面向对象软件的单元测试 最小的可测试单

20、位是封装的类或对象,而不再是个体的模块。 面向对象的单元测试通常也称为类测试。 主要考察封装在一个类中的方法和类的状态行为。,输入数据 输出结果 传统单元测试模型 输入数据 输出结果 初始状态 结束状态 类测试模型,2.5 面对对象软件测试,2. 面向对象软件的集成测试 面向对象的集成测试即类簇测试。 类簇是指一组相互有影响,联系比较紧密的类。它是一个相对独立的实体,在整体上是可执行和可测试的,并且实现了一个内聚的责任集合,但不提供被测试程序的全部功能,相当于一个子系统。 类簇测试主要根据系统中相关类的层次关系,检查类之间的相互作用的正确性, 即检查各相关类之间消息连接的合法性、子类的继承性与

21、父类的一致性、动态绑定执行的正确性、类簇协同完成系统功能的正确性等等。,2.5 面对对象软件测试,2. 面向对象软件的集成测试 (1)基于类间协作关系的横向测试。由系统的一个输入事件作为激励,对其触发的一组类进行测试,执行相应的操作/消息处理路径,最后终止于某一输出事件。应用回归测试对已测试过的类集再重新执行一次,以保证加入新类时不会产生意外的结果。 (2)基于类间继承关系的纵向测试。首先通过测试不使用或很少使用其他类服务的类,即独立类(是系统中已经测试正确的某类)来开始构造系统。在独立类测试完成后,下一层继承独立类的类(称为依赖类)被测试,这个依赖类层次的测试序列一直循环执行到构造完整个系统

22、。,2.5 面对对象软件测试,3. 面向对象软件的系统测试 系统测试是对所有程序和外部成员构成的整个系统进行整体测试,检验软件和其他系统成员配合工作是否正确,另外,还包括了确认测试内容,以验证软件系统的正确性和性能指标等是否满足需求规格说明书所制定的要求。 它一般不考虑内部结构和中间结果,因此与传统的系统测试差别不大,可沿用传统的系统测试方法。,2.6 软件测试的过程模型,V模型 V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。,W模型 W模型由两个V字型模型组成

23、,分别代表测试与开发过程。 W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。,2.6 软件测试的过程模型,H模型 H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。 H模型揭示了软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。,2.6 软件测试的过程模型,X模型 X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最综合成为可执行的程序。,2.6 软件测试的过程模型,测试成熟度模型 第1级:测试和调试没有区别,除了支持调试外,测试没有其他目的; 第2级:测试的目的是为了表明软件能够工作; 第3级:测试的目的是为了表明软件不能正常工作; 第4级:测试的目的不是要证明什么,而是为了把软件不能正常工作的预知风险降低到能够接受的程度; 第5级:测试不是行为,而是一种自觉的约束,不用将太多的测试投入到产生低风险的软

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论