目前,面向对象软件的测试研究还处于发展阶段,其相关理论还未成熟。传统软件测试从层次上可以分为单元测试,集成测试和系统测试。
面向对象的单元测试
面向对象单元测试OO Unit Test在OOP Test时进行,是对程序内部具体单一的功能模块的测试,如果程序是用C++语言实现,主要就是对类成员函数的测试。面向对象的编程特性使得对成员函数的测试与传统的函数或过程测试不同,需要考虑继承和多态特性。面向对象单元测试是进行面向对象集成测试的基础。
面向对象的集成测试
面向对象集成测试OO Integrate Test涵盖OOD Test和OOP Test,主要对系统内部的相互服务进行测试,如成员函数间的相互作用,类间的消息传递等。面向对象集成测试不但要基于面向对象单元测试,更要参见OOD或OOD Test结果。
面向对象的系统测试
面向对象系统测试OO System Test涵盖OOA Test、OOD Test和OOP Test,是面向对象测试的最后阶段,主要以用户需求为测试标准,借鉴OOA或OOA Test结果,对系统的有效性进行测试。
但面向对象软件测试在层次上的划分尚未达成共识,比较流行的是方法测试。方法测试和传统软件的单元测试有着很大的相似性。
2.1.3 面向对象集成测试的策略
面向对象软件从宏观上来看是各个类之间的相互作用,在面向对象程序中,最小的可测试单元已不是方法,而是类和类的实例类是面向对象方法中最重要的概念,是构成面向对象程序的基本成分。目前,对面向对象软件测试的层次划分尚未达成共识。传统层次测试主要基于功能模块的层次结构,而在面向对象软件测试中,继承和组装关系刻画了类之间的内在层次,它们既是构造系统结构的基础,也是构造测试结构的基础根据测试层次结构,面向对象软件测试总体上呈现从单元级,集成级到系统级的分层测试结构,测试集成的过程是基于可靠部件组装系统的过程。由于面向对象软件从宏观上来看是各个类之间的相互作用,因此,提出的测试方法中将对类层的测试作为单元测试,而对于由类集成的模块测试作为集成测试,系统测试与传统测试层相同。
2.1.4 面向对象集成测试的基本方法
传统的集成测试,是由底向上通过集成完成的功能模块进行测试,一般可在部分程序编译完成的情况下进行。而对于面向对象的程序相互调用的功能是散布在程序的不同类中,类通过消息相互作用申请和提供服务。面向对象软件没有层次的控制结构,传统的自顶向下和自底向上集成策略就没有意义。由于构成类的成分有直接和间接的交互,传统的增量集成方法(一次集成一个操作到类中)也不可行。
目前,针对面向对象软件集成测试方法的研究,有许多方向。ChanWK等总结如下:
(1)基于状态的测试:即利用有限状态自动机的相关理论来对面向对象系统进行集成测试。
(2)基于事件的测试:此方法用同步序列来表示同步事件之间的关系,依据同步序列来集成各对象,在此基础上进行测试。
(3)基于形式化规约的测试:即应用代数规约技术来形式化描述类的行为,进而进行测试。
(4)确定性与可达性技术:此方法主要通过执行预定的某个同步序列来检验某个确定性的结果。
(5)变异测试:它是一种错误驱动测试,即针对某类特定程序错误,通过检验测试数据集的排错能力来判断测试的充分性。
(6)基于UML的测试:即利用半形式化建模语言UML的类图、状态图和协作图等提供的面向对象系统的信息来产生测试用例。 基于MM路径的集成测试用例生成技术研究(3):http://www.youerw.com/jisuanji/lunwen_9601.html