面向对象软件测试_第1页
面向对象软件测试_第2页
面向对象软件测试_第3页
面向对象软件测试_第4页
面向对象软件测试_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、第14讲 面向对象软件测试1结构化测试自底向上的测试策略,从“小型测试”开始,逐步走向“大型测试”从单元测试开始,然后逐步进入集成测试,最后是有效性和系统测试在传统应用中,单元测试集中在最小的可编译程序单位子程序(如,模块、子例程、进程)一旦这些单元均被独立测试后,它被集成在程序结构中这时要进行一系列的回归测试以发现由于模块的接口所带来的错误和新单元加入所导致的副作用系统被作为一个整体测试以保证发现在需求中的错误2面向对象软件特点面向对象程序结构不再是传统的功能模块结构作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能面向对象软件抛弃了传统的开发模式,对每个

2、开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果传统的测试模型对面向对象软件已经不再适用3面向对象测试模型面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(OOA),面向对象设计(OOD),和面向对象编程(OOP)三个阶段针对这种开发模型,结合传统的测试步骤的划分,把面向对象的软件测试分为:面向对象分析的测试面向对象设计的测试面向对象编程的测试面向对象单元测试面向对象集成测试面向对象系统测试面向对象的回归测试4面向对象分析的测试 面向对象分析(OOA):E-R图和语义网络模型信息造型中的概念,与面向对象程序设计语言中的重要概念结合在一起而

3、形成的分析方法最后通常是得到问题空间的图表的形式描述5面向对象分析的测试(续)OOA直接映射问题空间,全面的将问题空间中实现功能的现实抽象化将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和操作表示实例的特性和行为对一个系统而言,与传统分析方法产生的结果相反,行为是相对稳定的,结构是相对不稳定的,这更充分反映了现实的特性OOA的结果是为后面阶段类的选定和实现,类层次结构的组织和实现提供平台。因此,对OOA的测试,应从以下方面考虑:对认定的对象的测试对认定的结构的测试对认定的主题的测试对定义的属性和实例关联的测试对定义的服务和消息关联的测试6面向对象设计的测试

4、面向对象设计(OOD)采用造型的观点,以OOA为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象OOD是OOA的进一步细化和更高层的抽象OOD确定类和类结构不仅是满足当前需求分析的要求,更重要的是通过重新组合或加以适当的补充,能方便实现功能的重用和扩增,以不断适应用户的要求对OOD的测试,应从如下三方面考虑:对认定的类的测试对构造的类层次结构的测试对类库的支持的测试7面向对象编程的测试 典型的面向对象程序具有继承、封装和多态的新特性,这使得传统的测试策略必须有所改变封装是对数据的隐藏,外界只能通过被提供的操作来访问或修改数据,这样降低了数据被任意修改和读写的可能性,降

5、低了传统程序中对数据非法操作的测试继承是面向对象程序的重要特点,继承使得代码的重用率提高,同时也使错误传播的概率提高多态使得面向对象程序对外呈现出强大的处理能力,但同时却使得程序内同一函数的行为复杂化,测试时必须考虑不同类型具体执行的代码和产生的行为8面向对象编程的测试(续)面向对象程序是把功能的实现分布在类中能正确实现功能的类,通过消息传递来协同实现设计要求的功能因此,在面向对象编程(OOP)阶段,忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格,主要体现为以下两个方面数据成员是否满足数据封装的要求类是否实现了要求的功能9面向对象的单元测试类测试传统的单元测试的对

6、象是软件设计的最小单位模块单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误单元测试多采用白盒测试技术,系统内多个模块可并行地进行测试当考虑面向对象软件时,单元的概念发生了变化封装驱动了类和对象的定义,这意味着每个类和类的实例(对象)包装了属性(数据)和操纵这些数据的操作,而不是个体的模块最小的可测试单位是封装的类或对象,类包含一组不同的操作,并且某特殊操作可能作为一组不同类的一部分存在一个对象有它自己的状态和依赖于状态的行为, 对象操作既与对象的状态有关, 但也可能改变对象的状态。 单元测试的意义发生了较大变化,我们不再孤立地测试单个操作,而

7、是将操作作为类的一部分10面向对象的单元测试类测试(续)类的测试按顺序分为三个部分: 基于服务的测试: 测试类中的每一个方法; 基于状态的测试: 考察类的实例在其生命周期各个状态下的情况;基于响应状态的测试: 从类和对象的责任出发,以外界向对象发送特定的消息序列的方法来测试对象的各个响应状态 11面向对象的集成测试传统的集成测试,有两种方式通过集成完成的功能模块进行测自顶向下集成:自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起自底向上集成:自底向上测试是从“原子”模块(即软件结构最低层的模块)开始组装测

8、试12面向对象的集成测试(续)因为面向对象软件没有层次的控制结构,传统的自顶向下和自底向上集成策略就没有意义此外,一次集成一个操作到类中(传统的增量集成方法)经常是不可能的,这是由于“构成类的成分的直接和间接的交互”对OO软件的集成测试有两种不同策略基于线程的测试,集成对回应系统的一个输入或事件所需的一组类,每个线程被集成并分别测试,应用回归测试以保证没有产生副作用基于使用的测试,通过测试那些几乎不使用服务器类的类(称为独立类)而开始构造系统,在独立类测试完成后,下一层的使用独立类的类,称为依赖类,被测试。这个依赖类层次的测试序列一直持续到构造完整个系统13面向对象的系统测试通过单元测试和集成

9、测试,仅能保证软件开发的功能得以实现。但不能确认在实际运行时,它是否满足用户的需要。为此,对完成开发的软件必须经过规范的系统测试系统测试应尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段系统测试时,应该参考OOA分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够完全再现问题空间系统测试不仅是检测软件的整体行为表现,从另一个侧面看,也是对软件开发设计的再确认14面向对象的系统测试(续)类簇(是一组相互合作的类)类簇测试主要考察一组协同操作的类之间的相互作用, 是系统集成测试的一个子阶段在单个类分别进行测试后, 根据系统中

10、类的层次关系图, 将相互有影响的类作为一个整体, 检查各相关类之间消息连接的合法性、子类的继承性与父类的一致性、动态绑定执行的正确性、类簇协同完成系统功能的正确性等测试用例可由多种方案结合生成如根据类的继承关系图来纵向检查类, 根据对象之间方法的相互作用来横向检查类的关系图15面向对象的系统测试(续)系统测试: 系统测试是对所有类和主程序构成的整个系统进行整体测试, 以验证软件系统的正确性和性能指标等满足需求规格说明书和任务书所指定的要求它与传统的系统测试一样, 包括功能测试、性能测试、余量测试等, 可套用传统的系统测试方法测试用例可从对象行为模型和作为面向对象分析的事件流图中导出16面向对象

11、软件回归测试面向对象软件中的回归测试不再作为测试的一个独立的阶段, 而是以增量方式进行的对象系统中的交互, 既发生在类内的方法间又发生在多个类之间类A与类B的交互是通过:(1) B的实例变量作为参数传给类A 的某方法 这时, 类B的改变必然导致对类A 的方法的回归测试, 如果类A的方法又与其它方法发生交互, 这些方法及其类必须都进行回归测试(2) 类A的实例是类B表示的一部分 这时,B的所有对类A中变量进行引用的方法必须进行回归测试 在这两种情况下, 测试依赖集可用来确定情况(1) 中所有与方法A的交互集; 对象的数据依赖集可用来确定情况(1)和(2)中所有必须重新测试的类和方法对面向对象软件

12、的修改主要有: 不修改对象属性, 只对方法进行修改该对象以及系统中所有与该对象发生交互的对象都要进行完全新的测试。通常, 这种测试代价是很高的 修改对象属性 17面向对象软件测试总结面向对象测试的整体目标以最小的工作量发现最多的错误和传统软件测试的目标是一致的,但是OO测试的策略和战术有很大不同测试的视角扩大到包括复审分析和设计模型,此外,测试的焦点从过程构件(模块)移向了类不论是传统的测试方法还是面向对象的测试方法,都应该遵循下列的原则: 应当把“尽早和不断地测试”作为开发者的座右铭程序员应该避免检查自己的程序,测试工作应由独立的专业的软件测试机构来完成设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大关系对测试错误结果一定要有一个确认的过程。一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见妥善保存一切测试过程文档,意义是不言而喻的,测试的重现

温馨提示

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

评论

0/150

提交评论