软件测试技术-韩永国-第九章面向对象测试课件_第1页
软件测试技术-韩永国-第九章面向对象测试课件_第2页
软件测试技术-韩永国-第九章面向对象测试课件_第3页
软件测试技术-韩永国-第九章面向对象测试课件_第4页
软件测试技术-韩永国-第九章面向对象测试课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

面向对象测试软件测试课程组西南科技大学计算机学院面向对象测试软件测试课程组19.1面向对象基础1.对象对象是要研究的任何事物。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。2.类类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。9.1面向对象基础1.对象23.消息消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。4.封装性封装是一种信息隐蔽技术。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性,而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。3.消息35.继承性继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。6.多态性对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定。5.继承性4面向对象程序的组成面向对象程序通常由一系列类组成在类中封装了数据和作用在数据上的操作(即方法)类和类之间按继承关系组成一个无环路有向图单继承(Java)多继承(C++)对象是类的实例面向对象程序的组成面向对象程序通常由一系列类组成5面向对象的新特性继承封装(信息隐蔽)多态(动态绑定)面向对象的新特性继承6新特性对测试的影响信息隐蔽(封装)对测试的影响

类的重要作用之一是信息隐蔽;信息隐蔽避免类中有关实现细节的信息被错误地使用;隐蔽机制给测试带来了困难。新特性对测试的影响信息隐蔽(封装)对测试的影响7新特性对测试的影响继承对测试的影响若一个类得到了充分的测试,当其被子类继承后,继承的方法在子类的环境中的行为特征需要重新测试。新特性对测试的影响继承对测试的影响8新特性对测试的影响多态性对测试的影响传统软件测试中经常使用静态分析技术对代码进行分析;面向对象软件中,由于动态绑定和多态性的存在所带来的不确定性,给测试覆盖率的满足增大了难度。新特性对测试的影响多态性对测试的影响9面向对象测试的类型面向对象分析的测试(OOATest)面向对象设计的测试(OODTest)面向对象编程的测试(OOPTest)面向对象单元测试(OOUnitTest)面向对象集成测试(OOIntegrationTest)面向对象系统测试(OOSystemTest)面向对象测试的类型面向对象分析的测试(OOATest)10在传统软件中,确定单元的指导方针是:1、能够自身编译的最小程序块;2、单一过程/函数(独立);3、由一个人完成的小规模工作。面向对象软件测试与传统方法的区别:指导方针中没有明确说明是把类还是方法作为单元。9.2面向对象测试的层次在传统软件中,确定单元的指导方针是:9.2面向对象测试的层11面向对象测试的层次面向对象测试的层次,取决于单元的构成,一般采用三层或四层方式。如果把单个操作或方法看作单元,则有四层测试,即方法、类、集成和系统测试。如果把类看作单元,则有三层测试:类测试,集成测试,系统测试。面向对象测试的主要问题是集成测试,即在通过测试的类之间的交互测试。面向对象测试的层次面向对象测试的层次,取决于单元的构成,一般129.2类测试(面向对象单元测试)类测试概念:验证类的实现是否和该类的说明完全一致。类测试的方法:通过代码检查或执行测试用例的方法来有效地进行类测试。(后者优于前者)。

9.2类测试(面向对象单元测试)类测试概念:验证类的实现是13类测试过程为类创建实例创造适当的环境运行测试用例(向一个实例发送一个或多个消息)通过参数来检查测试运行的结果清除执行测试用例所需的测试环境。类测试过程14面向对象软件的单元测试观点面向对象软件的单元测试观点

⑴以方法为单元

⑵以类为单元面向对象软件的单元测试观点面向对象软件的单元测试观点15以方法为单元这种方法可以将面向对象单元测试归结为传统的(过程)单元测试。可以使用所有传统功能性测试和结构性测试手段。如果把方法看作是面向对象的单元,必须提供能够实例化的桩类,以及起驱动器作用的“主程序”类以提供和分析测试用例。以方法为单元这种方法可以将面向对象单元测试归结为传统的(过程16以类为单元类包含一组不同的操作,并且某特殊操作可能作为一组不同类的一部分存在。不再孤立地测试单个操作,而是将操作作为类的一部分。把类作为单元,可以解决类内集成问题,但是会产生其它问题。以类为单元类包含一组不同的操作,并且某特殊操作可能作为一组不17类测试的扩展继承层次结构中类的测试接口类测试抽象类测试重载和覆盖测试异常测试类测试的扩展继承层次结构中类的测试189.3面向对象的集成测试集成测试的UML支持协同图(合作图)序列图(顺序图)9.3面向对象的集成测试集成测试的UML支持19协作图o-oCalendar程序的协作图:Page282图18-1协作图(协同图)非常类似在“集成测试”中曾经使用过的单元调用图。协作图o-oCalendar程序的协作图:Page28220顺序图顺序图跟踪通过协作图的执行时间路径在UML中序列图有两级,即系统/用例级和类交互级Page283图18-2给出的是打印新日期的部分o-oCalendar应用程序的顺序图粗竖线表示类或类的实例,箭头标号表示类的实例按时间顺序发送的消息顺序图顺序图跟踪通过协作图的执行时间路径21面向对象软件的MM-路径在传统软件的MM-路径中,用“消息”表示个体单元(模块)之间的调用,采用模块执行路径取代完整的模块MM-路径表示由消息分开的各种方法执行序列,即方法/消息路径。与传统软件一样,方法也可能有多条内部执行路径MM-路径从某个方法开始,当到达某个自己不发送任何消息的方法时结束,这就是消息静止点面向对象软件的MM-路径在传统软件的MM-路径中,用“消息”22面向对象的集成测试在面向对象程序中,相互调用的功能是散布在程序的不同类中,类通过消息相互作用申请和提供服务。类的行为与它的状态密切相关,状态不仅仅是体现在类数据成员的值,也许还包括其他类中的状态信息。由此可见,类相互依赖极其紧密,根本无法在编译不完全的程序上对类进行测试。所以,面向对象的集成测试通常需要在整个程序编译完成后进行。此外,面向对象程序具有动态特性,程序的控制流往往无法确定,因此也只能对整个编译后的程序做基于黑盒子的集成测试。面向对象的集成测试在面向对象程序中,相互调用的功能是散布在程23面向对象的集成测试把一组相互有影响的类看作一个整体称为类簇。类簇测试主要根据系统中相关类的层次关系,检查类之间的相互作用的正确性,即检查各相关类之间消息连接的合法性、子类的继承性与父类的一致性、动态绑定执行的正确性、类簇协同完成系统功能的正确性等等。其测试有两种不同策略。面向对象的集成测试把一组相互有影响的类看作一个整体称为类簇。24面向对象的集成测试1.基于类间协作关系的横向测试。由系统的一个输入事件作为激励,对其触发的一组类进行测试,执行相应的操作/消息处理路径,最后终止于某一输出事件。应用回归测试对已测试过的类集再重新执行一次,以保证加入新类时不会产生意外的结果。面向对象的集成测试1.基于类间协作关系的横向测试。25面向对象的集成测试2.基于类间继承关系的纵向测试。首先通过测试独立类(是系统中已经测试正确的某类)来开始构造系统,在独立类测试完成后,下一层继承独立类的类(称为依赖类)被测试,这个依赖类层次的测试序列一直循环执行到构造完整个系统。面向对象的集成测试2.基于类间继承关系的纵向测试。26面向对象的集成测试能够检测出相对独立的单元测试无法检测出的那些类相互作用时才会产生的错误。基于单元测试对成员函数行为正确性的保证,集成测试只关注于系统的结构和内部的相互作用。面向对象的集成测试可以分成两步进行:先进行静态测试,再进行动态测试。

面向对象的集成测试能够检测出相对独立的单元测试无法检测出的那27静态测试静态测试主要针对程序的结构进行,检测程序结构是否符合设计要求。现在流行的一些测试软件都能提供一种称为“可逆性工程”的功能,即通过原程序得到类关系图和函数功能调用关系图。如、Rational公司的RoseC++Analyzer等,将“可逆性工程”得到的结果与OOD的结果相比较,检测程序结构和实现上是否有缺陷。通过这种方法检测OOP是否达到了设计要求。

静态测试静态测试主要针对程序的结构进行,检测程序结构是否符合28动态测试动态测试设计测试用例时,通常需要上述的功能调用结构图、类关系图或者实体关系图为参考,确定不需要被重复测试的部分,从而优化测试用例,减少测试工作量,使得进行的测试能够达到一定覆盖标准。测试所要达到的覆盖标准可以是:达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对所有执行线程的一定覆盖率;达到类的所有状态的一定覆盖率等。同时也可以考虑使用现有的一些测试工具来得到程序代码执行的覆盖率。

动态测试动态测试设计测试用例时,通常需要上述的功能调用结构图29动态测试具体设计测试用例,可参考下列步骤:

(1)先选定检测的类,参考OOD分析结果,分析出类的状态和相应的行为,类或成员函数间传递的消息,输入或输出的界定等。(2)确定覆盖标准。(3)利用结构关系图确定待测类的所有关联。(4)根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态、使用类的服务和期望产生什么行为等。动态测试具体设计测试用例,可参考下列步骤:309.4面向对象的系统测试通过单元测试和集成测试,仅能保证软件开发的功能得以实现。但不能确认在实际运行时,它是否满足用户的需要。为此,对完成开发的软件必须经过规范的系统测试。系统测试应该尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段。系统测试时,应该参考OOA分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够完全"再现"问题空间。9.4面向对象的系统测试通过单元测试和集成测试,仅能保证软31面向对象的系统测试1.功能测试2.强度测试测试系统的能力最高实际限度,即软件在一些超负荷的情况,功能实现情况。如要求软件某一行为的大量重复、输入大量的数据或大数值数据、对数据库大量复杂的查询等。3.性能测试4.安全测试面向对象的系统测试1.功能测试325.恢复测试采用人工的干扰使软件出错,中断使用,检测系统的恢复能力,特别是通讯系统。恢复测试时,应该参考性能测

温馨提示

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

评论

0/150

提交评论