面向对象的系统集成测试概述_第1页
面向对象的系统集成测试概述_第2页
面向对象的系统集成测试概述_第3页
面向对象的系统集成测试概述_第4页
面向对象的系统集成测试概述_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、技术创新,变革未来面向对象的系统集成测试概述面向对象的基本概念对象类消息接口封装继承多态面向对象的基本概念Peter Coad 和 Edward Yourdon 提出下列等式认识面向对象方法: 面向对象 对象(Object) 分类(Classification) 继承(Inheritance) 通过消息的通信 (Communication with message)采用这四个概念开发的软件系统是面向对象的。面向对象技术面向对象方法的出现,实际上是程序设计方法发展的-个返朴归真过程。面向对象的实质:从系统的组成上来进行分解。对问题自然分割,利用类及对象作为基本构造单元,以更接近人类思维的方式建立

2、问题域模型,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、可维护性好的软件,并能控制软件的复杂性降低开发维护费用。对象对象是指包含了一组属性以及对这些属性的操作的封装体。对象之间存在着一定的关系,对象之间的交互与合作构成更高级的行为。王五由他的头、胳膊、腿和身体组成汽车是一种交通工具对象间的由分解所构成的关系,part of层次;具有代表一种一般特性的对象之间的聚合关系,is a层次;代表更一般的对象间在物理上或概念上有关的相关关系。人乘坐或驾驶汽车对象是软件开发期间测试的直接目标。面向对象软件测试所关注的焦点: (1)对象的行为是否符合它的规定说明; (2)该对象与和

3、它相关的对象是否协同工作。 面向对象的集成测试因为面向对象软件没有层次的控制结构,传统的自顶向下和自底向上的集成策略是没有意义的,类之间的相互依赖及其紧密,使其根本无法在编译不完全的程序上对类进行测试。因此,面向对象集成测试通常需要在整个程序编译完成后进行。此外,面向对象程序具有动态特性,程序的控制流往往无法确定,所以也只能对整个编译后的程序做基于黑盒的集成测试。面向对象的集成测试能够检测出相对独立的单元测试无法检测出的那些类相互作用时才会产生的错误。单元测试可以保证成员函数行为的正确性,集成测试则只关注于系统的结构和内部的相互作用。面向对象的集成测试(续)面向对象集成测试可以分成两步进行:先

4、进行静态测试,再进行动态测试。测试较为复杂。静态测试主要针对程序结构进行,检测程序结构是否符合设计要求。现在常用的一些测试软件都能提供一种称为 “可逆性工程”的功能,即通过源程序得到类关系图和函数功能调用关系图。将“可逆性工程”得到的结果与OOD的结果相比较,以检测OOP是否达到了设计要求。动态测试则测试与每个动态语境有关的消息。设计测试用例时,通常需要上述的功能调用关系图、类关系图或实体关系图为参考,确定不需要被重复测试的部分,从而优化测试用例,使得进行的测试能够达到一定覆盖标准。一、集成测试的UML支持以方法为单元的集成测试通常需要进行两级集成:一是将成员函数集成到完整类中;二是将类与其它

5、类集成。这里讨论以类为单元的方法-更常见;以类为单元的测试完成后需要恢复被扁平化的类。UML协同图和序列图是集成测试的基础。 UML在系统层描述类定义和类组成。UML协同图显示类间信息传输,支持成对集成和相邻集成。例:o-oCalendar协同图(类似单元调用图)。testItDateYearMonthDay1:Create2:increment3:getYear1:Create2:increment3:printDate1:Create2:increment3:setMonth4:getMonth1:Create2:increment3:setDay4:getDay1:isLeap1:get

6、MonthSize图18-1 o-oCalendar 的协同图根据协同图,可以得到一些要集成的类对:testIt和Date,为Year、Month和Day建立桩。以协同图为基础的面向对象集成测试的缺点是UML描述类行为的状态图很难合并,使较高层次的测试困难。类的相邻集成会降低桩工作量,但缺陷隔离困难,测试用例失败,则必须在更多的类中寻找缺陷。序列图以时间先后表示类的操作即类的时间路径。箭头标号表示类按时间顺序发送的消息。例: o-oCalendar的printDate序列图。testItDate:testdateDay:dMonth:mYear:y时间1:printDate()2:getMon

7、th()3:getDay()4:getYear()图18-2 printDate的序列图测试伪代码:testDriver m.setMonth(1) d.setDay(15) y.setYear(2002) Output(“expected value is 1/15/2002”) Output(“actual output is”) testdate.printDate()End testDriver面向对象软件的MM-路径是由消息连接起来的方法执行序列。原子系统功能(ASF):从端口输入事件开始到端口输出事件结束的MM-路径。ASF测试是集成测试和系统测试的交叉点,可在两个层次上测试ASF

8、。例: o-oCalendar伪代码 消息图(图18-3) 二、面向对象软件的MM-路径testitMainDateDate()Increment()printDate()DayDay()setCurrentPos()increment()setDay()getDay()MonthMonth()setCurrentPos()increment()setMonth()getMonth YearYear()setCurrentPos()increment()getYear()isLeap()m1m2m3m6m5m4m7m11m8m9getMonthSize()m13m10m14m15m16m17m

9、20m18m19m21图18-3 o-oCalendar中的消息m12比协同图更详细。显示了每个消息的源方法和目的方法,而不只是类。实例化(2002年1月15日)Date的部分MM-路径伪代码和路径图实例化(2002年4月30日)Date并计算第二天的部分MM-路径伪代码和路径图基于MM-路径有向图分析选择o-oCalendar的集成测试用例最低限度需要覆盖所有消息的MM-路径集;13个基于决策表的功能测试用例构成了透彻的集成测试用例集合。可以寻找MM-路径,确保所有消息被遍历。测试用例MonthDayYear预期输出Tes6/2001Test463020041/7/

10、2004Test56312001不可能Test69116200417/1/2004Test1013120011/2/2001Test11141216200417/12/2004Tes1/2002Test16216200417/2/2004Tes2/2004Test1822820011/3/2001Test1922920041/3/2004Test202292001不可能Test21222302004不可能13个基于决策表的功能测试用例testitMainDateDate()Increment()printDate()DayDay()setCu

11、rrentPos()increment()setDay()getDay()MonthMonth()setCurrentPos()increment()setMonth()getMonth YearYear()setCurrentPos()increment()getYear()isLeap()m1m6m5getMonthSize()m15m16m18m19m21图18-4 实例化Date(2002年1月15日)的MM-路径m4testitMainDateDate()Increment()printDate()DayDay()setCurrentPos()increment()setDay()getDay()MonthMonth()setCurr

温馨提示

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

评论

0/150

提交评论