面向对象的软件测试策略研究(转).doc_第1页
面向对象的软件测试策略研究(转).doc_第2页
面向对象的软件测试策略研究(转).doc_第3页
面向对象的软件测试策略研究(转).doc_第4页
全文预览已结束

下载本文档

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

文档简介

面向对象的软件测试策略研究发布时间: 2010-12-17 13:54 作者: 赵蔷 欧阳宏基 软件测试是保证软件质量的一个重要手段随着面向对象技术在软件工程中日益推广和使用传统的结构化测试技术和法受到了极大的冲击面向软件测试技术是新兴的软件测试技术是专门针对使用面向对象技术开发的软件而提出的一种测试技术是面向对象软件开发中的不可缺少的一环已成为保证面向对象软件质量、提高其可靠性的关键。本文主要研究了面向对象技术的特点对测试的影响提出面向对象软件测试的策略。1、测试面向对象软件的特殊性和传统的开发技术相比面向对象开发技术新增了多态、继承、封装等特点,极大地优化了数据使用的安全性捉高了代码的重用率是面向对象开发技术产生巨大吸引力的重要因素而另方面也影响了软件测试的方法和内容增加了软件测试的难度带来了传统软件设计技术所不存在的错误从程序的组织结构方面来讲传统软件测试技术与过程式程序中数据和操作相分离的特点相适应是从输入处理输出的角度检验一1、函数或过程能否正确工作面向对象程序设计把程序看作是相互协作而又彼此独立的对象的集合在面向对象程序中,对象是属性(数据)和方法(操作)的封装体。每个对象就像一个传统意义上的小程序有自己的数据、操作、功能和目的。因此,传统的测试技术必须经过改造才能用于面向对象软件的测试同时还需要研究专门针对面向对象软件、适应面向对象软件特定的测试理论和技术2、面向对象技术的特点及其对测试的影响与传统的程序相比面向对象程序设计是一种全新的软件开发技术,面向对象程序的封装性、继承性、动态绑定等特性使程序具有较大的灵活性给软件测试提出了新的要求使得面向对象软件的测试更加复杂2.1 信息隐蔽对测试的影响类的重要作用之一就是信息隐蔽它对类中所封装的信息的存取进行控制从而避免类中有关实现细节的信息被错误使用。而这样的细节性信息正是软件测试所不可忽略的。由于面向对象的软件系统在运行时刻由一组协调工作的对象组成对象具有一定的状态,在工作过程中对象的状态可能被修改产生新的状态。所以对于面向对象的程序测试对象的状态是必须考虑的因素。面向对象软件测试的基本工作就是创建对象向对象发送一系列信息后检查结果对象的状态看其是否处于正确的状态。而对象的状态往往是隐蔽的若类中未提供足够的存取函数来表明对象的实现方式和内部状态则测试者必须增添这样的函数。因此,类的信息隐蔽机制给测试带来困难22封装性对测试的影响封装性(Encapsulate)类的重要特征之一它把数据和操作数据的方法封装在一起限制对象属性对外的可见性和外界对它的操作权限。封装性提高了信息隐蔽的能力。使模块间的耦合变弱,从而使程序更容易修改。有效地避免了类中有关实现细节的信息被错误地使用而这样的细节性信息正是软件测试所不可忽略的。如前所述,对象的状态是对面向对象的程序测试必须考虑的因素测试应涉及对象的初态、输人参数、输出参数、对象的终态。但是对象的状态往往是隐蔽的若类中未提供足够的存取函数来表明对象的实现方式和内部状态则测试者必须增添这样的函数。这样增加了测试的工作量在一定程度上破坏了类的信息隐蔽性和封装性因此类的封装性给测试带来了很大困难。2.3 继承性对测试的影响继承是指父类的属性和操作可以通过实例化产生的子类和对象来实现继承性是面向对象程序的基本特性之一是一种有效的程序复用方法然而类的继承机制增加了软件测试的复杂性,同时也向测试用例设计者提出了新的挑战。即使是彻底复用的,对每个新的使用语境也需要重新测试此外多重继承增加了需要测试语境的数量,从而使测试进一步复杂化。在面向对象的程序中,一个函数可能被封装在多个类中子类不但继承了父类中的特征(数据和方法)还可以对继承的特征进行重定义Weyuker的非外延性公理认为若有两个功能相同而实现不同的程序,对其中一个是充分的测试数据集未必对另一个是充分的所以,继承并未简化测试问题反而使测试更加复杂2.4 多态性对测试的影响多态性(Polymorphism)-向对象方法的关键特性之一同一消息可以根据发生消息的对象不同采取不同的处理方法它使得系统在运行时能自动为给定的消息选择合适的实现代码这给程序员提供了高度柔性、问题抽象和易于维护但多态性所带来的不确定性也使得传统测试实践中的静态分析法遇到了不可逾越的障碍。与此同时还增加了系统运行中可能的执行路径加大了测试用例的选取难度和数量这种不确定性和骤然增加的路径组合给测试覆盖率的满足带来了挑战多态性给软件测试带来的问题仍然是目前研究的重点及难点问题之一3、面向对象的软件测试策略3.1 扩大测试视角在面向对象的程序设计中,由于相同的语义结构(如类、属性、操作和消息)出现在分析、设计和代码阶段。面向对象的分析和面向对象的设计模式提供了关于系统的结构和行为的实质性信息,所以应该重视面向对象分析和设计模式的复审如果问题在分析阶段及设计阶段未被检测到则将传送到编码中要花费大量的精力和时间去实现一个不必要(有问题)的属性、不必要的操作、驱动对象问通信的消息及其他相关的代码然后再花费更多的精力去发现它,还必须对系统进行相关的修改而修改有可能导致更多的潜在问题因此,面向对象的软件测试应扩大测试的视角包括分析与设计模型测试、类测试、对象交互测试、类层次结构测试、面向对象系统测试五大部分3.2 划分测试层次软件测试层次是基于测试复杂性分解的思想是软件测试的一种基本模式。传统层次测试基于功能模块的层次结构而在面向对象软件测试中继承和组装关系刻画了类之间的内在层次它们既是构造系统结构的基础也是构造测试结构的基础。对于传统程序设计语言书写的软件测试分为3个级别的测试:单元测试、集成测试和系统测试。面向对象软件测试的动态测试工作过程与传统的测试一样分为制定测试计划、产生测试用例、执行测试和评价几个阶段。在测试的具体内容上。从面向对象软件的结构出发。可以将面向对象软件测试分为三个层次:类测试、集成测试和系统测试面向对象的测试层次与传统软件测试层次的对应关系。3.3 面向对象测试技术策略3.3.1 面向对象的类测试策略类测试就是验证类的实现是否和该类的规格说明完全一致一类测试和传统的单元测试大体相似但和单元测试不同,类测试除了要测试类中包含的方法还要测试类的状态。在面向对象系统中系统的基本构造模块是封装了的数据和方法的类和对象每个对象有自己的生存周期、自己的状态。消息是对象之问相互请求或协作的途径是外界使用对象方法及获取对象状态的唯一方式对象的功能是在消息的触发下,由对象所属类中定义的方法与相关对象的合作共同完成。在工作过程中对象的状态可能被改变产生新的状态。测试过程中不能仅仅检查输入数据产生的输出结果是否与预期的吻合还要考虑对象的状态。类测试是整个测试过程的一个重要步骤,它与传统测试方法的区别可用测试按顺序可分为三个部分:1)基于服务的测试:测试类中的每一个方法:2)基于状态的测试:测试类的实例在其生命周期各个状态下的情况:3)基于响应状态的测试:从类和对象的责任出发以外界向对象发送的消息序列来测试对象的各个响应状态。目前有很多类的测试方法,如:基于状态图的测试、基于宁列图的测试、基于活动图的测试、基于协作图的测试、基于状态模式的测试等都是针对上述测试的某一个部分。3.3.2 集成测试策略如前所述。面向对象软件测试分为类测试、集成测试和系统测试三个层次。其中,集成测试作为重要环节,贯穿于面向对象软件构造过程的始终。面向对象软件的集成测试有两种不同的策略,一种是基于线程的测试,另一种是基于使用的测试。基于线程的测试:集成一组相互协作以对于某输入或事件作出回应的类。每个线程被集成并被分别测试应用回归测试以保证没有产生副作用。基于使用的测试:通过测试那些不适用的服务器的类(称为独立类)而开始构造系统。在独立测试完成后,下一层的使用独立的类(称为依赖类)被测试依赖类层次的测试序列一直持续到构造完整个系统3.3.3 类间多态性测试策略在面向对象软件集成测试中最需要克服的问题是类问交互带来的多态性和动态绑定的问题多态分为多态操作和多态变量操作的多态是指在类继承等级的不同层次中可以是同一个方法而不同层次中的类可按照各自的需要调用该方法。多态变量是指改变量可以引用不同类的对象。针对类的多态性。人们提出一种正交矩阵测试策略将正交拉丁矩阵应用到软件测试中,生成测试用例,这种方法能有效减少用例个数,但给出的测试用例个数不能实现充分测试3.3.4 回归测试策略由于面向对象软件的特殊性使得其测试过程以层次增量方式进行即首先对类进行测试:然后将多个类集成为类簇或子系统并进行集成测试:最后将多个类簇或子系统集成为最终系统并进行系统测试。在单个对象方法或方法的集成测试中,都需要确定对哪些测试用例进行回归测试。面向对象的回归测试不

温馨提示

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

评论

0/150

提交评论