(7)数据流分析:它使用程序插装技术,在程序执行的相关行为和变量处插入探针,记录相关信息,来检测变量定义/使用对之间的数据流异常。
2.2 MM路径的定义
方法/消息路径(Method/Message Path,简称MM-Path)是通过消息连接的一系列方法的执行。MM路径,是P.c.Jorgensen针对面向对象集成测试提出的,它是方法/消息路径的简称,是由消息连接起来的方法执行序列。MM路径很好地反映了面向对象系统中不同对象之间的交互机制。MM路径和单纯的方法序列和单纯的消息序列不一样,它详细刻画了对象的动态交互过程,能够更清楚地体现消息的传递激活方法的执行这样一个过程。
图2-1.MM路径示意图
图2-1中有三个对象,三条MM路径,其中实线线段表示MM路径,虚线线段表示消息传送。图中MM路径②开始于对象object1的方法meth2,经消息调用对象object2的方法meth2,然后经消息调用其方法meth3,再经消息调用对象object3的方法meth1,对象object3的方法meth1不再发送任何消息,因而MM路径②终止。MM路径开始于一个方法,终止于一个不再发送消息的方法。它涵盖了面向对象系统中类内和类间各方法之间的调用关系,体现了类内和类间两个层次上的集成关系,因此,基于MM路径的测试能够很好地检测面向对象系统内部各方法之间的交互关系。
3.MM路径分类及形式化研究
3.1 MM路径的分类研究
面向对象系统组成与开发的结构性本质,以及抽象、封装、继承、多态性等特性给测试带来了新的问题。因此,在研究MM路径在面向对象测试中的应用的时候,先结合面向对象系统的特点,从产生原因,作用域范围和组成结构三方面来对MM路径进行分类,并讨论其各自特点,可以根据不同的MM路径的特性设计相应的测试方案。
3.1.1从MM路径的产生原因进行分类
面向对象程序具有继承、封装和多态等新特征,使得传统的结构化程序测试策略不能完全适应面向对象程序的测试需要,这主要表现在三个方面,即面向对象的封装不能实现传统测试方法中对数据非法操作的测试;面向对象的继承,使错误的传播概率提高,增加了测试的复杂度;面向对象的多态特征使程序内“同一”函数的行为复杂化,增加测试的工作量。因此,从MM路径的产生原因出发,可将MM路径分为以下三种:
(l)基于方法使用的MM路径。这种MM路径是方法之间由于存在数据流或者控制流的操作关系而产生的。例如,方法A中的数据需要使用方法B来获得,或者方法A的执行需要使用方法B的操作。这两种情况类似于传统软件中的函数调用和过程调用。大多数MM路径的产生都源自方法的使用,比如数据处理方法使用赋值方法和取值方法。
(2)基于继承关系的MM路径。这种MM路径是子类与父类之间由于方法的复用而产生的。例如,当初始化一个子类时,需要先执行父类的构造函数,再执行子类的构造函数,这样就在子类和父类之间产生基于继承关系的MM路径。
(3)基于多态的MM路径。这种MM路径是由于不同子类共用抽象基类的接口而产生的。基于多态的MM路径的最大特点是路径的多样性和不确定性。一个消息在不同参数下会由来自不同子类的方法进行响应,而具体确定和哪个子类相联系则需要通过动态绑定来完成。
3.1.2从MM路径的作用域范围进行分类
类是面向对象系统中的一个重要概念。它是具有相同属性和操作的一组对象的集合,为属于该类的全部对象提供了统一的抽象描述。一个类包括用来定义对象状态的数据成员和用来定义对象的动态行为的方法。一个面向对象系统就是由多个类组成的,而面向对象系统的功能也正是通过各个类中方法之间的交互实现的。因此,从MM路径的作用域范围出发,可将MM路径分为以下两种: 基于MM路径的集成测试用例生成技术研究(4):http://www.751com.cn/jisuanji/lunwen_9601.html