6.1面向对象测试技术_第1页
6.1面向对象测试技术_第2页
6.1面向对象测试技术_第3页
6.1面向对象测试技术_第4页
6.1面向对象测试技术_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

软件质量保证与测试第6章面向对象测试技术SoftwareQualityAssuranceandTesting

6.1概述面向对象的特点

面向对象的开发模型不同于传统的瀑布模型,它将开发过程分为面向对象分析(OOA),面向对象设计(OOD),和面向对象编程(OOP)三个阶段。面向对象分析阶段产生整个问题空间的抽象描述,在此基础上,进一步归纳出适用于面向对象编程语言的类和类结构,最后形成代码。面向对象具有封装、继承、多态等特性,并且开发过程是迭代的。

面向对象特点对测试的影响

封装就是把对象的属性和方法结合成一个整体,尽可能掩盖其内部的细节。封装后的对象,只知道输入和输出,无法了解内部的操作过程,限制了对象属性对外的透明性和外界对它的操作权限。这一特征简化了对对象的使用,但同时也给测试结构的分析、测试路径的选取、测试数据的生成等带来了困难。面向对象特点对测试的影响

困难测试结构的分析测试路径的选取测试数据的生成

封装面向对象特点对测试的影响

继承是类之间的一种联系,类可以通过派生生成新类,派生出的新类称为子类。通过继承机制,子类可以继承父类的特点和功能,这一特征为缺陷的扩散提供了途径,如果父类带有缺陷,派生出的子类也会带有缺陷。继承使代码的重用率得到了提高,但同时也使缺陷的传播几率增加。

父类子类子类继承扩散面向对象特点对测试的影响

另外子类可以具有自己独有的特点和功能,子类是在新的环境中存在,所以父类的正确性不能保证子类的正确性。父类子类新的环境?面向对象特点对测试的影响

多态是同一个操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。多态性增强了软件的灵活性和重用性,同时也使得测试的工作量成倍增加。多态和动态绑定增加了软件运行中可能的执行路径,而且给面向对象软件带来了不确定性,给测试覆盖带来了困难。面向对象特点对测试的影响都需要测试!都需要测试!面向对象特点对测试的影响

在面向过程程序中存在的依赖关系有:变量间的数据依赖;模块间的调用依赖;变量与其类型间的定义依赖;模块与其变量间的功能依赖。而在面向对象软件中,除了存在上述依赖关系外,还存在以下的依赖关系:类与类间的依赖;类与操作间的依赖;类与消息间的依赖;类与变量间的依赖;操作与变量间的依赖;操作与消息间的依赖;操作与操作间的依赖等。这些依赖关系,给测试带来了很多问题。面向对象特点对测试的影响变量间的数据依赖模块间的调用依赖变量与其类型间的定义依赖模块与其变量间的功能依赖面向过程程序面向对象复杂的依赖关系给测试带来了很多问题!类与类间的依赖类与操作间的依赖类与消息间的依赖类与变量间的依赖操作与变量间的依赖操作与消息间的依赖操作与操作间的依赖等面向对象程序面向过程依赖关系+

面向对象特点对测试的影响

例如,在传统的面向过程程序中,对于某个函数Function(),只需考虑函数Function()本身的行为和特性即可。而在面向对象程序中,不得不还要同时考虑它的基类函数Base::Function()和它的继承类函数Derived::Function()的行为和特性。面向对象测试

面向对象技术开发出的软件如何进行测试呢?面向对象软件测试是根据面向对象的软件开发过程结合面向对象的特点提出的。它包括:分析与设计模型测试技术类测试技术(用于单元测试)对象交互测试技术(用于集成测试)类层次结构测试技术(用于集成测试)面向对象系统测试技术

面向对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已经不适用。而需要采用对象交互测试技术和类层次结构测试技术。面向对象测试面向对象测试的环节和阶段

面向对象测试可分为:OOATest:面向对象分析的测试OODTest:面向对象设计的测试OOPTest:面向对象编程的测试三个环节。OOUnitTest:面向对象单元测试OOIntegrateTest:面向对象集成测试OOSystemTest:面向对象系统测试三个阶段。面向对象测试模型

面向对象测试模型如图所示。类、对象和消息

面向对象软件产品的基本组成单位是类,从宏观上来看,面向对象软件是各个类之间的相互作用。在面向对象系统中,系统的基本构造模块是封装了的数据和方法的类和对象,而不再是一个个能完成特定功能的功能模块。每个对象有自己的生存周期,有自己的状态。消息是对象之间相互请求或协作的途径,是外界使用对象方法及获取对象状态的惟一方式。

对象的功能是在消息的触发下,由对象所属类中定义的方法与相关对象的合作共同完成。且在不同状态下对消息的响应可能完全不同。工作过程中对象的状态可能被改变,产生新的状态。对象中的数据和方法是一个有机的整体,测试过程中不能仅仅检查输入数据产生的输出结果是否与预期的吻合,还要考虑对象的状态,且在不同状态下对消息的响应可能完全不同。类、对象和消息类测试

类测试是由那些与验证类的实现是否和该类的说明完全一致的相关联的活动组成的。该类测试的对象主要是指能独立完成一定功能的原始类。如果类的实现正确,那么类的每一个实例的行为也应该是正确的。类测试的目的是要确保一个类的代码能够完全满足类的说明所描述的要求。进行类测试的时间在完全说明一个类,并且准备对其编码后,就可以制定类测试计划、设计测试用例等。如果开发人员还负责该类的测试,那么尤其应该如此。应该在软件的其它部分使用该类之前来执行对类的测试。防止因未经测试的类被使用而导致缺陷传导和扩散。在有的开发过程中,一个类的说明和实现在一个工程的进程中可能会发生变化,每当一个类的实现发生变化时,就应该执行回归测试。

进行类测试的人员类测试通常由开发人员来进行,因为他们对代码非常熟悉。但由同一个开发者来进行类测试也有缺点,即如果他对类说明有任何错误理解,都会影响到测试的作用和效果。因此,最好由同一个项目组的另外一个开发人员来进行类测试,包括编写测试计划,对代码进行独立检查等,这样就可以避免自己难以发现自己的错误这样的问题。

类测试一个对象能维持自己的状态,而状态一般来说也会影响操作的含义。但要测试到操作和状态转换的所有组合情况一般是不可能的,而且也没必要,此时可以结合风

温馨提示

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

评论

0/150

提交评论