《 软件测试技术》课件9面向对象测试new_第1页
《 软件测试技术》课件9面向对象测试new_第2页
《 软件测试技术》课件9面向对象测试new_第3页
《 软件测试技术》课件9面向对象测试new_第4页
《 软件测试技术》课件9面向对象测试new_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

面向对象测试9.1面向对象基础从面向对象的编程语言来看,面向对象就是对象、类的组合;从面向对象的系统特性来看,面向对象应包括封装、继承和多态。1.类类是对一组具有相同/相似性质的的对象的定义。类是对象的模板(抽象)。类从规范和实现两个方面描述对象:在类规范中,定义类的每个对象能做什么:在类实现中,定义类的每个对象如何做事情;类可有其子类,也可有其它类,形成类层次结构。2.对象对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。对象是软件测试的直接目标程序运行时,对象被创建、修改、访问或删除,对象的行为是否符合规格说明,对象与它相关的对象是否协同工作,都是面向对象软件测试所关注的焦点。3.消息消息是对象之间进行通信的结构。一般它由三部分组成:接收消息的对象名、消息名及实参。一个对象接收消息,则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来。从测试的角度看:消息有发送者:发送者决定何时发送消息,并且可能做出错误的决定;消息有接收者:接收者可能接收到非预期的特定消息,可能会做出不正确的反应;消息可能包含实参:参数能被接收者使用或修改,如果传递的参数是对象,则对象在消息处理前和处理后,对象必须处于正确的状态;4.封装性封装是一种信息隐蔽技术。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块。封装的目的在于把对象的设计者和对象的使用者分开。5.继承性继承性允许子类共享父类中定义的数据和方法,同时可修改和扩充。子类是在新的环境中存在,所以父类的正确性不能保证子类的正确性,继承使代码的重用率得到提高,但同时故障传播的几率也增加。继承提供了一种机制,潜在的错误会从基类传递到其子类,因此要尽早消除错误。6.多态性同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定。与多态相关的一个概念是动态绑定。面向对象程序的组成面向对象程序通常由一系列类组成在类中封装了数据和作用在数据上的操作(即方法)类和类之间按继承关系组成一个无环路有向图单继承(Java)多继承(C++)对象是类的实例面向对象的特性继承(代码重用)封装(信息隐蔽)多态(动态绑定)继承对测试的影响当一个类被子类继承后,继承的方法需要在子类中重新测试。多重继承会显著地增加派生类的复杂程度,导致一些难以发现的隐含错误。信息隐蔽(封装)对测试的影响类的重要作用之一是信息隐蔽;信息隐蔽避免类中有关实现细节的信息被错误地使用;隐蔽机制给测试带来了困难,解决办法:修改被测试类在其子类中定义新操作,协助测试引入一些机制来打破封装;多态性对测试的影响多态的形式:重载(类内)覆盖(类外)多态允许任何操作都能够包括类型不确定的参数,这就增加了应该测试的实参的种类。动态绑定和多态性所带来的不确定性,增大了测试难度。在传统软件中,确定单元的指导方针是:1、能够自身编译的最小程序块;2、单一过程/函数(独立);3、由一个人完成的小规模工作;9.2面向对象测试的层次面向对象测试的层次面向对象测试的层次,取决于单元的构成,一般采用三层或四层方式。如果把单个操作或方法看作单元,则有四层测试,即方法、类、集成和系统测试。如果把类看作单元,则有三层测试:类测试,集成测试,系统测试。面向对象测试的主要问题是集成测试,即类之间的交互测试。9.3面向对象单元测试面向对象软件的单元测试观点以方法为单元

以类为单元以方法为单元将面向对象单元测试归结为传统的(过程)单元测试。可以使用所有传统功能性测试和结构性测试手段。如果把方法看作是面向对象的单元,必须提供能够实例化的桩类,以及起驱动器作用的“主程序”类以提供和分析测试用例。以类为单元主要考察封装在一个类中的方法和类的状态行为,重点测试同一个类中的不同方法之间的交互关系。把类作为单元,可以解决类内集成问题,但是会产生其它问题。类测试过程为类创建实例;创造适当的环境;运行测试用例(向一个实例发送一个或多个消息);通过参数来检查测试运行的结果;清除执行测试用例所需的测试环境。类在UML中的描述在UML中,用矩形来表示类,并划分为三个区域:名称区域:显示类的名称;属性区域:显示在类中定义的变量;操作区域:显示在类中定义的方法;ClassNameAttributesOperation()ClassNameAttributesOperation()

InterfaceOperation()具体类抽象类接口类一、继承层次结构中类的测试继承是实现接口和代码复用的有效机制。根据继承机制的特点,父类中被测试用例所测试的代码被子类继承,只要父类代码没有被子类“覆盖”,那么就不用重新创建这些测试用例。例:Class_A+operation1()+operation2()Class_B+operation3()Class_C+operation2()+operation3()类之间的继承关系类继承类类方法是否改变是否增加测试用例Class_AClass_BClass_BClass_AClass_Coperation1()operation2()operation3()operation2()operation1()operation3()operation2()operation1()FalseFalseFalseTrueTrueTrueFalseFalseTrueFalseTrueTrue是否需要产生新的子类测试用例?继承层次结构中类测试的测试用例可以采用如下增补原则:(1)如果子类新增了一个或者多个新的操作,就需要增加相应的测试用例。(2)如果子类定义的同名方法覆盖了父类的方法,就需要增加相应的测试用例。

二、接口类测试

接口不存在任何构造方法,因此无法被实现;由于接口一定会在某个类中实现,因此就使用一个实现接口的类来做测试。遵循以下原则:如果接口没有被任何类实现就无需进行测试。如果已被别的类实现,那么就针对实现该接口的类进行测试。Class_C+Class_C+a_Method()+b_Method()+c_Method()Interface_A+a_method()+b_method()三、抽象类测试抽象类不能创建对象(不能被实例化)。测试时,首先需要继承被测试抽象类,实现里面的抽象方法(函数)。四、重载和覆盖测试覆盖是在子类中重新定义了从父类中继承的同名方法;重载是类对自身已有的同名方法的重新定义。在测试过程中,可以参考如下两个原则:①要对类实例方法的所有重载形式分别进行测试;②要对覆盖了父类的同名方法进行测试;

五、异常测试因为存在异常,在构建测试用例时,还要考虑如何测试在某种特殊情况下程序代码是否返回了指定的状态。9.3面向对象的集成测试如果单元测试以方法/操作为单元,则集成测试需要进行两极:类内集成和类间集成;如果单元测试以类为单元,则集成测试就是类间集成(类簇);集成测试能够检测出类相互作用时才会发生的错误。面向对象的集成测试把一组相互有影响的类看作一个整体称为类簇。根据系统中相关类的层次关系,检查类之间的相互作用的正确性:检查各相关类之间消息连接的合法性;子类的继承性与父类的一致性;动态绑定执行的正确性;类簇协同完成系统功能的正确性等等。可以根据协作关系来设计集成测试的方案,其实质就是基于调用的集成。可以采用成对集成和相邻集成的方法。1.基于UML协作图的集成测试UML序列图是按时间的顺序来描述对象之间交互的模型。由系统的一个输入事件作为激励,对其触发的一组类进行测试,执行相应的操作

温馨提示

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

评论

0/150

提交评论