APP下载

基于UML和OCL的类间交互测试用例生成算法研究

2012-11-30冯秋燕

计算机工程与设计 2012年11期

冯秋燕

(郑州大学 信息工程学院,河南 郑州450052)

0 引 言

基于模型的软件测试属于规范的软件测试范畴,其特点是:在产生测试用例和进行测试结果评估时,都是根据被测程序的模型及其派生模型 (一般称为测试模型)进行的[1]。基于Petri网语义对UML 2.0顺序图进行形式化描述的方法[2-4],重在帮助软件设计人员分析软件的非功能性需求,不适用于以测试为目的的模型分析。Zhe(Jessie)Li,Tom Maibaum[5]引进一种新的契约,将UML顺序图转化成契约,针对方法调用顺序、方法传参及对象交互等方面进行测试。Aritra Bandyopadhyay,Sudipto Ghosh[6-7]提出将顺序图与状态图结合,扩展VAG为EVAG生成测试用例,该方法生成的EVAG图过于庞大,没有考虑路径爆炸的问题。

本文提出一种从UML模型中的顺序图SD生成测试用例的方法。首先将SD转换成执行图EG,然后基于特定的覆盖准则和错误模型遍历EG,得到最小完备的测试路径,包括基本消息路径和多态消息路径,从而产生测试场景,最后生成测试用例。根据特定的准则和OCL约束,对测试路径作处理,提高了测试用例的可靠性。

1 相关概念

定义1 顺序图 (SD):SD=<M,O,Comb>,其中,M=M1M2…Mn,是消息序列。其中,Mi(1(i(n)是一条消息。O= {O1,O2,…,On}是对象集合;Comb是组合片断枚举类型,Comb= {alt,loop,opt,break}。

定义2 顺序图单元 (SDU):顺序图单元SDU或者为独立消息,记为SDUSF,或者为组合片段,记为SDUCF。

定义3 多态方法层次树 (PMTree):PMTree=<root,F,R>,描述一个多态方法pm所属类间的层次关系,其中,root是PMTree的树根,表示祖先类的pm方法;

F= {T1,T2,…,Tn},是一个多态方法层次树集合,其中Ti=<ri,Fi,R>;

R表示树中节点之间的关系,设父节点f,子节点为s,则R= {<f,s>|f.Pre s.Pre AND s.Post f.Post AND s.inv f.inv},其中,‘ ’表示 “不弱于”关系。

定义4 执行图 (EG):EG=<V,∑,q0,Final>是一个有向图,其中:V= {V1,V2,…,Vn}是消息节点的集合。……

登录APP查看全文