陈小林
(四川大学计算机学院,成都610065)
在过去的二十年里,基于UML模型的测试已经发展到面对大型复杂的工业软件系统的挑战。UML规范在软件开发中的适应不仅改变了开发的方式,也改变了测试过程的方式,这允许在设计阶段控制错误。从测试的角度来看,来自不同工件的UML转换序列提供了关于消息的重要信息,例如发送方/接收对象、相关参数和保护条件,例如,UML转换序列是序列图中的消息序列,状态机图中的转换序列,或活动图中的活动序列。因此,这些UML转换序列是测试软件的许多测试用例生成技术的基础,UML在大型系统的分析和设计中已经扎根。此外,它在软件行业和学术界都是一个事实上的标准。UML分析和设计在许多软件项目中执行。它是一种标准的建模语言,用于视觉描述结构和理解系统的行为。因此,研究基于UML模型生成测试用例的意义是很重要的,在开发的早期进行测试介入,可以极大程度地降低软件测试的成本。
Philip Samuel[1]等提出了序列依赖图的概念,并将顺序图转化成该图,通过遍历序列依赖图生成测试用例。文瑾[2]在文献中给出了基于UML顺序图的测试场景生成方案和实现算法,并通过顺序图的比较获取设计变更信息,作为回归测试的依据。Emanuela[3]等研究了将UML顺序图转化为标签转换系统图(LTSs)的方法,然后采用深度优先遍历算法遍历后生成测试场景。
A.J.Offutt[4]等研究了基于UML状态图的测试用例生成方法,该研究的主要贡献在于其定义了四种基于状态图的测试覆盖准则,并开发了第一个测试用例自动生成工具UMLTest。Kansomkea[5]等在文献中给出了一种基于建模工具Rational Rose的测试用例生成方法,该方法支持从UML状态图的规格说明中提取测试信息。Supaporn[6]等研究了如何将状态图转化为TFG的测试流图,从而依据测试序列生成测试场景的方法,但该方法没有提供测试数据的生成与组合方式。
Hyungchoul[7]等研究了从扩展型的UML活动图(IOAD)中提取全路径的测试用例生成方法。该方法虽然保证了测试的有效性和充分性,但容易导致路径爆炸,从而影响测试效率。覃钊璇[8]等结合面向对象的多态性提出一种基于扩展的UML活动图的测试用例生成方法。该方法引入权值的概念并在传统的遍历算法的基础上加以改进,减少无效测试场景的输出。袁洁松[9]等实现了一个测试用例自动生成工具UMLTGF,该工具基于灰盒测试理论,但约束条件过多,只能实现部分自动化。
自动化测试用例生成器需要了解系统的行为。UML提供了一种使用UML转换序列来表达动态行为的方法。基于模型的测试从设计模型中提取出部分和抽象的行为,从而生成测试用例。
序列图显示了对象之间的消息和控制结构序列,它由一组对象和消息组成。对象用生命线表示,消息用对象中的行表示。消息显示对象之间的关联,以完成系统功能,并从上到下顺序依次交换自然顺序,对于集成测试非常有用。例如,图1显示了图书馆借书的序列图。
图1 图书馆借书序列图
M Elallaoui[11]在以前的工作中实现了一个作为输入用户的算法自动生成UML序列图,UML序列图是自动转换的利用模型将模型转化为文本转换。这个变换,可以应用于获取测试用例,与AndroMDA实现源MDA框架。测试是软件工程的一个重要领域。有各种不同的测试方法在不同的阶段进行软件开发生命周期(SDLC)。M Dhineshkumar[12]提出了一个新的从UML序列图生成测试用例的方法,包括将序列图转换成SDG,从SDG中生成测试用例。序列图是根据用例图编写的描述系统的整体视图。之间的可追溯性模型由使用关系定义语言提供。RK Swain[13]等提出了一种新的测试用例生成技术UML 2.0序列图。首先,构建UML序列图的一个系统。然后,从该模型构造消息依赖图(MDG)序列图(SD)并通过遍历MDG选择条件谓词。然后,计算对应于每个条件谓词的片。最后,根据给定的切片标准生成测试用例。测试策略通过切片测试覆盖、高路径覆盖和完整来获取测试用例谓词覆盖标准。在这里,关注的是对消息序列的测试在用例场景的对象中,技术可以用于系统以及对对象消息和条件的集群级测试信息。CAlvin[14]等为UML序列图的静态生成提供了一个框架,从面向对象的源代码。该框架提供了一个查询细化系统,引导用户在源中进行有趣的交互代码。技术包括构造一个超图源代码,通过用户定义的查询遍历超图生成相应的序列图集合。并实现了工具的框架,StaticGen,分析一个30个An⁃droid应用程序的语料库。
UML活动图用于建模一组对象的动态特性和操作的控制流程。他们还在一个图表中指定了一整套用例场景。活动图的基本思想是模型活动及其可能的执行顺序,描述了活动的顺序和并发控制流。如图2表示ATM取款的活动图。
图2 ATM取款活动图
Yasmina[16]等提出了一个框架,将自动UML活动图2.0转换为Petri网,用于分析目的,使用了INA analyz⁃er工具。这种转换帮助软件设计人员分析和验证属性。为了实现这个转换,提出了一个um l-ad的元模型和一个用于PN的元模型。基于这些元模型,定义了一个执行转换过程的图形语法。AToM3被用作元建模和图形转换的工具。Hettab[17]等使用图形转换技术和AToM3工具从UML活动图生成测试用例。提出了两个图形语法,第一个将UML活动图转换为一个中间图,称之为EADG(扩展活动依赖图)。EADG模型是活动依赖图的一个扩展,它捕获与测试用例生成相关的活动图的所有特性。第二个图语法根据混合覆盖标准从EADG模型生成测试用例集。Biswal BN[18]等从活动图中生成测试场景,从而完美地实现了测试的充分性标准。通过分析每个场景的相关序列和类图来生成测试用例,实现了最大路径覆盖标准。随着设计重用,测试模型创建的成本也降低了。Li L[19]等首次将软件测试与扩展相结合,提出了一种基于扩展理论的UML活动图生成测试用例的自动方法。为了通过最小化测试用例,在软件系统中找到更多的缺陷,设计了算法来构造欧拉电路,并由欧拉电路算法自动生成测试序列。初步结果表明,测试用例不仅满足了指定的测试覆盖标准,而且测试用例的数量也减少了。
状态图指定在响应事件时对象的生命周期中发生的事件序列。它描述单个对象或整个系统的行为,状态和转换是状态图的主要组成部分[10]。单个类对象、用例和整个系统的动态行为可以用UML建模中的状态图来表示。例如,图3表示CD player状态图。
图3 CD player状态图
Chimisliu V[20]等提出了一种使用控制、数据和通信依赖的方法,以增强对垃圾转换的测试目的。一个测试的目的是描述一个原始模型的抽象,描述一个需要测试的场景。在测试用例生成过程中使用了垃圾转换,以限制被搜索的状态空间。由于自动化测试用例生成活动非常重要,因此测试用例和测试用例的生成是完全自动的。从工业和其他一些文献中对三种模型的方法进行了评估,计算时间有了改进。Salman Y D[21]等的目标是使用UML状态图图,特别是在处理循环中,提出适合测试用例的覆盖标准。为了实现这一目标,这项工作回顾了以前的研究,提出了最实用的覆盖标准组合,包括全状态、全转换、全传递对和全环自由路径的覆盖。通过计算来确定所覆盖的覆盖率标准的覆盖率百分比,并将其应用到UML状态图图中。这个发现在测试用例的领域中是很有帮助的,特别是在UML状态图图表中的处理循环中。Gulia,Preeti[22]等提出了一种利用遗传算法从UML状态图中生成和优化测试用例的新方法。为了生成新的测试序列,采用遗传算法对交叉遗传算法进行了优化,并通过突变分析对测试序列的效率进行了评价。
综上所述,对所有的动态模型图的使用方法进行总结,如表1。
表1 模型方法汇总
作为一种半正式的建模语言,UML被广泛用于描述学术界和业界的分析和设计规范,综上所述,在基于UML转换序列的测试领域进行了研究。测试用例生成技术分为基于序列图、状态图和活动图描述了正在测试的软件的动态行为。每个视图代表系统中相同场景的一个特定特征。因此,这些模型相对于基于代码的测试在测试用例的完整性方面有更好的应用。在就将来的工作中可以结合使用不同的模型图,提高测试的覆盖率和效率。
参考文献:
[1]Philip Samuel,Anju Teresa Joseph.Test Sequence Generation from UML Sequence Diagrams[J].Ninth ACIS International Conference on Software Engineering.Aug,2008.
[2]文瑾.基于UML顺序图的回归测试用例生成研究[J].集成技术,2013,2(03):75-78.
[3]Emanuela G.Cartaxo,Francisco G.O.Neto and Patr'ıcia D.L.Machado.TestCase Generation by Means of UML Sequence Diagrams and Labeled Transition Systems[C].IEEE.2007,292-297.
[4]A.J.Offutt,Y.Xiong,S.Y.Liu.Criteria for Generating Specification-based Tests[C].Fifth IEEE Intemational Conference on Engineering of Complex Computer Sy Stem.October1999.
[5]S.Kansomkea,W.C.Rivepi boon.Automated-Generating Test Case Using UML State Chart Diagrams[J].Proceedings of SAICSIT.2003,296-300.
[6]Supaporn K,WanchaiR.Automated-Generating TestCase using UML State Chart Diagrams[J].Proceedings of SAICSIT,2003,296-300.
[7]Hyungchoul Kim,Sungwon Kang,Jong moon Baik,Inyoung Ko.Test Cases Generation from UML Activity Diagrams[C].Eighth ACIS International Conference on Software Engineering,Artificial Intelligence,Networking,and Parallel/Distributed Computing,IEEE.2007,556-561.
[8]覃钊璇,曾一,柴艳欣,徐攀登.基于UML活动图的多态性测试用例生成[J].计算机工程,2010,36(11):83-87.
[9]袁洁松,王林章,李宣东,郑国梁.UMLTGF:一个基于灰盒方法从UML活动图生成测试用例的工具[J].计算机研究与发展,2006,43(1):46-53.
[10]OMG,UML superstructure v2.1.2,"November2007.http://www.omg.org/spec/UML/2.1.2/.
[11]ElallaouiM,Nafil K,TouahniR.Automatic Generation of Test NG Tests Cases from UML Sequence Diagrams in Scrum Process[C].IEEE International Colloquium on Information Science and Technology.IEEE,2016:65-70.
[12]DhineshkumarM.An Approach to Generate Test Cases from Sequence Diagram[C].International Conference on Intelligent Computing Applications.IEEE Computer Society,2014:345-349.
[13]Swain RK,PanthiV,Behera PK,etal.Slicing-based Test Case Generation Using UML 2.0 Sequence Diagram[J].International Journal of Computational Intelligence Studies,2014,3(2/3):221-250.
[14]Alvin C,Peterson B,Mukhopadhyay S.Static Gen:Static Generation of UML Sequence Diagrams[M].Fundamental Approaches to Software Engineering,2017.
[15]M.Chen,P.Mishra,and D.Kalita,Coverage-driven Automatic Test Generation for UML Activity Diagrams.in Proceedings of the 18th ACM Great Lakessymposium on VLSI,pp.139-142,2008.
[16]Yasmina,Rahmoune&Chaoui,Allaoua&Kerkouche,Elhillali.(2015).A Framework for Modeling and Analysis UML Activity Diagram using Graph Transformation.Procedia Computer Science.56.612-617.10.1016/j.procs.2015.07.261.
[17]Hettab,Abdelkamel&Kerkouche,Elhillali&Chaoui,Allaoua.(2008).AGraph Transformation Approach for Automatic Test Cases Generation from UML Activity Diagrams.88-97.10.1145/2790798.2790801.
[18]BiswalBN,Nanda P,Mohapatra DP.ANovel Approach for Scenario-Based Test Case Generation[C].International Conferenceon Information Technology.IEEE Computer Society,2008:244-247.
[19]Li L,LiX,He T,etal.Extenics-based TestCase Generation for UMLActivity Diagram[J].Procedia Computer Science,2013,17:1186-1193.
[20]Chimisliu V,Wotawa F.Improving TestCase Generation from UMLStatechartsby Using Control,Data and Communication Dependencies[C].International Conference on Quality Software.IEEE Computer Society,2013:125-134.
[21]Salman YD,Hashim N L,Rejab MM,etal.Coverage Criteria for Test Case Generation Using UML State Chart Diagram[C].The,International Conference on Applied Science and Technology,2017:020125.
[22]Gulia,Preeti&S.Chillar,R.(2012).ANew Approach to Generate and Optimize Test Cases for UML State Diagram Using Genetic Algorithm.ACM SIGSOFT Software Engineering Notes.37.1.10.1145/2180921.2180933.