基于UML状态图的类测试用例自动生成方法

面向对象的软件开发方法近年来得到了广泛的应用,随之而来的是给软件测试提出了新的课题。目前基于规约的测试方法是软件测试的主要研究方向,在文献OO Ana R.Cavalli 中总结了各种基于规约的测试方法,其中应用最为广泛[5]的就是以扩展的有限状态机为基础的面向对象系统的EFSM 基于状态的测试。在文献中系统地讲述[2]Chourouk Bourhfir 了基于测试的理论基础和各种测试方法;在文献中EFSM [4]从理论上比较了最常用的种测试用例生成算法的故N.Coga 4障揭示能力和效率。但是当应用传统的测试面向对象EFSM 的系统时人们遇到了两个难题:预测问题(),预(1)Oracle 测在软件测试中就是指预期结果, 因为面向对象软件的封装的特点带来的对象状态不可观测性,使自动预测成为难题;模型因为不支持层次结构,当状态过多时容易(2) EFSM 造成状态爆炸问题。国内外现在有很多人从事这方面的研究,如在文献中提出了一种把控制流和数据流相Y.K.Kim [3]结合基于状态图的类的测试用例的生成方法,UML Diego 在文献提出了一种基于状态图测试的框架。

Latella [6]UML 本文通过把基于的唯一输入输出测试用例EFSM (UIO)生成方法应用于面向对象软件的类的状态图提出了一种测,试用例自动生成的方法,对解决以上两个问题进行了探讨。

扩展的有限状态机模型

1 有限状态机作为自动机的数学模型,在软件测试FSM 中得到了广泛的应用,是通信软件规约和测试的主要模型。在的基础上人们开发出了不同的模型,这些模型主要包FSM 括:标签转换系统,扩展的有限状态机,通信有限状态机,中的状态图。UML

扩展的有限状态机是对有限状态机的扩展,可定EFSM 义为一个元偶6EF = < ,S S 0,,,,I O T V >,其中:表S 示一个非空的状态集合;S 0表示初始状态,任何其它状态在给定的上下文中总能随时到达初始状态,可以把它理解为复位或重置功能;表示非空的输入的集合,可理解为发送的

I 消息或方法的调用;表示非空的输出的集合,可理解为产O 生的动作;表示非空的状态转换集合;表示变量的集T V 合,这些变量可以是方法的参数或前置条件中判定参数。其中元素又是一个元偶∈,,T 5

t T = < Start_Sfate Dest_State ,。这里∈表示i Precondition, Compute_Block >Start_Sfate S 的开始状态;∈表示经过后到达的状态;∈t Dest_State S t i 表示的触发事件;表示的触发条件,是一个I t Precondition t 基于变量的判定表达式;表示经过转换后V Compute_Block t 引起赋值或动作说明。

作为测试模型的还要求具备以下几个条件:该EFSM (1)扩展有限状态机是最小的,就是该状态机不存在相同的状

态,即∈﹡, t T t (s)

;该扩展有限状态机是t (s')(2) 连通的,即从初始状态开始通过有限次转换能到达状态机中的任何其它状态;该扩展有限状态机是确定的,即任何(3) 状态的转换是被明确定义的。

自动测试用例生成的方法

2 UIO 基于的测试一般包括如下步:根据测试需求EFSM 3(1) 生成测试用例,测试需求也就是测试的覆盖标准,对基于状态的测试一般要求覆盖所有的状态以及状态转换;运行(2) 测试用例(测试驱动);验证被测类是否到达正确的状(3) 态并做出了正确的响应。

理论上,能达到状态及状态转换的完全覆盖这种要求的测试用例是无穷的。然而,穷举是不可能的,只可能是从无限测试用例中选出有限的能达到覆盖要求的测试用例,以组

基于状态图的类测试用例自动生成方法

UML 张毅坤,施凤鸣,姚全珠,刘军,付长龙

(西安理工大学计算机科学与工程学院,西安

) 710048摘要: 作为面向对象软件开发的事实上的标准建模语言,近年来得到了广泛的应用,基于的测试也成为面向对象软件测试的研UML UML 究热点。该文把基于扩展的有限状态机的唯一输入输出测试用例自动生成方法和的类的状态图相结合,提出了一种基于EFSM UIO UML UML

状态图的类的测试用例自动生成方法。

关键词:统一建模语言;状态图;扩展的有限状态机;基于规约的测试;测试用例生成;唯一输入输出

Automatic Generation Method of Class Test Cases

Based on UML State Diagrams

ZHANG Yikun, SHI Fengming,YAO Quanzhu, LIU Jun, FU Changlong

(College of Computer Science and Engineering, Xi'an University of Science and Technology, Xi'an710048)

【】Abstract This paper presents a automatic test case generation method of state-based class test which combines EFSM-based UIO method with ,state diagrams of UML. First state diagrams is flattened to a EFSM second test cases are generated by applying UIO method to the EFSM.

【】Key words ;;;;;UML State diagrams Extented finite state machine(EFSM)Specification-based test Test case generation Unique input output (UIO)

第29卷 第21期Vol.29 № 21

计 算 机 工 程Computer Engineering

2003年12月 December 2003

?软件技术与数据库?

中图分类号:TP311

文章编号:1000—3428(2003)21 —0091—03

文献标识码:A

—91—

成最优的、效率最高的、费用最低的测试用例,并有效地完成预测验证的任务。法正是其中的一种方法。唯一输入UIO 输出序列能唯一地识别(Unique Input Output Sequence, UIOS)一种状态,也就是说对象处在该状态时接收了对应的UIOS 中的输入时,所产生的输出不同于状态空间中的任何其它状态在接收此输入所产生的输出。

这种方法的生成测试用例的步骤可描述如下:为每(1) 一个状态:∈,si si S si != s 0找到一个唯一输入输出序列作为预测消息序列;为每一个状态找到一条从初UIOSi (2) si 始状态到该状态的测试消息序列;si s MSi(Message Sequence)连接每一个状态的和,即把加在的后(3) MSi UIOSi UIOSi MSi 面组成测试用例。用这种方法产生的TSi(Testing Sequence)测试用例同时包括预测也就是指先运行测试消息序列,然,后通过运行以验证被测对象到达了预期的状态。

UIOS 在测试用例中加上后,每个测试用例可能非常UIOS 长,因此有必要进行优化,生成路径尽量短的和。MS UIOS 生成最短的过程可描述如下:找到每个状态的长度UIOS (1)的系列,其中表示序列的路径长度;检查该L = 1I/O L I/O (2) 序列是否为唯一,如果是唯一的,在对应状态的就找UIOS 到了;为没有找到的状态找出每个长度为的(3) UIOS L = 2 序列,检查其是否为;重复直至所有I/O UIOS (4) L = L + 1的状态都找到对应的。

UIOS 的状态图

3 UML 当模型应用于比较复杂的系统时,因为其本身在

EFSM 语法上就不支持层次结构,常常面临状态爆炸的问题,虽然也可以根据物理结构对状态空间进行分解,但是分解常常会影响系统的整体性。的状态图引入超态的概念以支持UML 层次结构解决了这个问题,在面向对象系统的建模中得到了广泛的应用。

超态又被称为组合状态,组合状态包含有其它状态或子状态。组合状态可划分为与状态和或状态(and-state)(or-。与状态表示其子状态可同时发生的组合状态,有时state)也叫正交状态;或状态表示其子状态相互排斥的组合状态。

在图的状态图中,包含有个组合状态(超态)、、1323,其中是一个与状态,进入状态后,其子状态和同时42234发生;组合状态和是或状态,进入状态后,对象只能处343于或其中的一个状态;进入状态后,对象只能处于3.2 3.14或其中的一个状态。

4.1 4.2

图状态图

1 如果把状态图进行展平为一个,就可以应用UML EFSM 方法自动生成测试用例。

UIO 基于状态图应用法自动生成测试用例

4 UIO 基于状态图的测试用例自动生成步骤如下:

为应用对该类进行状态测试,首先应该做的(1) EFSM 就是把具有层次结构的状态图展平为,如图的状态EFSM 1图可展平为如图所示的。具体的展平算法可参考文2EFSM 献和文献。[1][3]

图扩展的有限状态机

2 生成测试消息系列,可以对图进行遍历,有向图的(2) 2遍历可分为深度优先遍历和广度优先遍历,为使生成的测试消息序列最短,同时运用这两种遍历方法生成不同的测试树,然后为每个状态选取从初始节点达到该状态最短路径的作为测试消息序列,算法描述如下:

构造测试树的广度优先算法

1) Construct_testing_tree_BFS(Node curNode) 表示当前节点

//curNode ∈{ if all s S are visited then return;

,,,∈ for each t = (si,i p o si') T

if (si = curNode and si' is not visited ) then make si' as a child of curNode;for each child cNode of Node

construct_testing_tree_BFS(cNode); }

运用该算法可以构成如图所示的测试树。

3

图测试树

3 构造测试树的深度优先算法

2) Construct_testing_tree_DFS(Node curNode) { 表示当前节点

/ /curNode ∈if all s S are visited then return;,,,∈for each t = (si,i p o si')T{

if (si = curNode and si' is not visited ) then{make si' as a child of curNode;

();Construct_testing_tree_DFS si'

}}}

运用该算法可生成如图所示的测试树。

4图测试树

4 生成测试消息序列

3) Construct MS(DestNode)

初始状态为起始状态节点,为目的状态节点

//DestNode —92—

(上接第页)

17型三相平放串联空心电抗器单相额定CKSCKL-24/10-1容量,额定端电压,额定电流,额定=8kVar =60.62V =132A 电感为使计算结果具有对比性,固定设计模型的=1.462mH. 结构参数(即包封数不进行优化),设计的电抗器每相均由个包封组成,每个包封分别由层和层导线并联组成,沿253半径方向由内向外依次编号为…。对该产品参数用本1,2,,8文的改进遗传算法进行重新设计,得到表、所示的优化结23果;根据表、的数据得到表的电抗器优化设计前后的对234比结果。

表电抗器设计参数

2 包封轴向并联层数径向并联层数线规 (mm) 1 2 5 3.15 2 2

3 3.55

表电抗器各线圈参数的优化结果

3 线圈 匝数 电流(A) 电流密度(A/mm 2

) 1 40.104 48 15.061 19 0.966 313 9 2 39.136 94 15.305 05 0.981 959 8 3 38.421 31 15.461 40 0.991 991 3 4 37.934 51 15.531 58 0.996 494 0 5 37.661 95 15.516 92 0.995 553 6 6 37.644 92 18.580 58 0.938 604 4 7 37.674 80 18.408 37 0.929 905 2

8 37.984 84 18.104 56 0.914 558 2

表电抗器的优化计算结果

4 优化前 优化后电阻损耗 660W 582W 电抗器单相重量 61kg 38.1kg 线圈外直径 898mm 909.43mm

高度 510mm 310mm

从表可以看出,在满足设计要求的情况下,电抗器的4重量和体积有了相当大的减小。其中电阻损耗减少了11.,单相重量减轻了,高度降低了,优化效果8%37.54%39.2%明显,这对降低产品成本和安装空间起着直接的改进作用。

结论

5 本文提出的改进遗传算法较好地处理了遗传算法的收敛速度和全局收敛性之间的矛盾。将其应用于空心电抗器的优化设计中也取得了较好的效果。

参考文献

1 Tang K S, Man K F, Kwong S, et al. Genetic Algorithms and Their Applications. IEEE Signal Process, 1996, 13(6): 22-37

2 Srinivas M, Patnaik L M. Adaptive Probabilities of Crossover and Mutation in Genetic Algorithms. IEEE Trans. on Systems, Man and Cybernetics, 1994, 24(4): 656 667

王蕾沈庭芝招扬一种改进的自适应遗传算法系统工程3 , , . . 与电子技术

, 2002, 24(5): 75-78朱东柏马春秋等电阻电压法在空心干式电抗器设计中的应用4 , . . 变压器, 1994,(7): 21

{FindPathDFSTree(int PathDFS[]); 在深度优先测试树中查找路径

//在广度优先测试树中查找路FindPathBFSTree(int PathBFS[]);//径

Return MinLen(PathDFS,PathBFS[]); 比较路径长度,返回最短路径//}

运用这种算法,对于状态,在图中的路径为→→4312,路径长度为,在图中的路径为→→→→,路径长42412354度为,因此取图中的消息序列→→为测试消息序列。

43124在的基础上为每个状态找到最短的,只(3) EFSM UIOS 要是连接的就可以保证为每个状态找到最短的,EFSM UIOS 这一点已经得到理论证明,可参考文献。

[2]把每个状态的测试消息序列和结合起来组成测(4) UIOS 试用例。

因为测试消息序列和序列都是路径最短的,所以UIOS 测试用例也能保证是路径最短的。运用以上算法就可以为中的每一个状态自动生成测试用例。

EFSM 与集成

5 Rational Rose 一种方法要得到广泛的应用就应该和现有的、成熟的技术和工具相结合,现在应用最广泛的建模工具是UML ,如果把测试建立在的基础上,无疑使方Rational Rose Rose 法的推广变得更容易,同时对这种方法的研究也更有意义。

建立在状态图基础上的自动化测试,要求在建模UML 时使用对象约束语言()表OCL Object Constraint Language 示完整的约束条件,以保证测试时有一个完整的测试模型。这些信息在中存储在扩展名为的文件中,测试时Rose MDL 只需要从的文件中读取类规约(状态图)的信Rotional Rose 息以构建展平的,然后应用上述算法生成测试用例。

EFSM 结束语

6 以上说明了一种从的状态图生成类的基于状态的UML 测试用例的方法,实际应用中取得了较好的效果,该方法的特点是在测试用例中包含了预测,并且通过算法保证测试用例的路径长度为最短,同时测试从状态图开始,避免了建模中出现的状态爆炸问题。但其中还有一些问题值得继续探讨和研究,这些问题主要有:不可到达状态,因为前置条(1)件的存在,实际执行时能到达的状态和输入数据有关,其关键问题就是如何选择测试数据;本文所用的覆盖标准是(2)状态的覆盖而不是状态及状态转换的覆盖,从理论上讲是不充分的。其中最主要问题就是不可达状态问题,现在国内外有很多人正在进行这方面的研究。

参考文献

华庆一王斌君陈莉译面向对象系统的测试1 Binder R V. , , . .

北京人民邮电出版社

: , 2001-042 Bourhfir C, Dssouli R, Aboulhamid E M. Automatic Test Generation for EFSM_based Systems. http:// https://www.360docs.net/doc/2414775011.html, 3 Kim Y K, Hong H S, Bae D H. Test Cases Generation From UML State Diagrams. IEEE Proc. Softw., 1999,146(4)

4 Coga N. Comparing TorX, Autolink, TVG and UIO Test Algorithms. Springer-verlag Berlin Heikelberg, 2001

5 Cavalli A R, Favereau J P, Phalippou M. Formal Methods in Confor- mance Testing: Result and Perspectives.https://www.360docs.net/doc/2414775011.html,/ madvtg/Papers/iwpts93.pdf

6 Latella D, Massink M. A Fomal Testing Framework for UML State- chart Diagrams Behaviours: From Theory to Automatic Verification. https://www.360docs.net/doc/2414775011.html,/ citation.cfm

—93—

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

相关文档
最新文档