打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于模型驱动的嵌入式软件测试技术研究
【 摘 要 】 软件测试是保证软件可靠性的一种最重要的手段,而软件自动化测试又是保证软件测试效率的一种十分有效的方式。基于模型驱动的软件测试是一种自动化程度较高的测试方法。论文对模型驱动测试技术进行了综述,对测试需求建模、PIM转换到测试模型、测试用例生成方法的相关文献进行了调研。
  【 关键词 】 模型驱动测试;测试需求建模;UML;MARTE
  【 中图分类号 】 TP3-05
  【 文献标识码 】 A
  【 Abstract 】 Software testing is one of the most important means for assuring the software reliability, and the software automated testing is a very effective way to ensure the efficiency of software testing. Model driven software testing is a high degree of automated testing methods. In this paper, the model-driven testing technology were reviewed, and the relevant literature of the test requirements modeling, PIM converted to test model, test case generation method were investigated.
  【 Keywords 】 model driven testing; test requirements modeling; uml; marte
  1 引言
  软件测试是保证软件质量与可靠性的一种十分重要的手段,是一种检查软件系统实现正确性的可操作的方法[1]。然而,研究表明,测试时间大概会占据软件开发周期的30%-50%。也正是因为测试工作会消耗巨大的时间成本,因此,在确保软件质量的前提下,缩短测试周期便成了软件测试领域专家研究的重点。自动化测试也已经成为当前软件测试发展的趋势,可以有效的缩短测试时间和减少成本,同时也可减少手动生成的失误。软件自动化测试技术需要不断的发展和丰富才能满足测试的需要。
  基于模型驱动的软件测试技术是实现自动化测试的一种十分有效的手段。OMG于2001年正式提出了一种以应用模型技术进行软件系统开发的方法论和标准体系的框架规范:模型驱动体系结构MDA(MDA,Model Driven Architecture)[10,71]。其划分了两种模型,平台无关的模型( Platform Independent Model,PIM)与平台有关的模型(Platform Specific Model,PSM),将系统的功能描述和系统在特定平台上的实现分离开来,这种技术的出现在很大程度上解决了软件开发效率慢和复用率低的问题[12]。随着UML 2.0 Testing Profile的发布,模型驱动测试作为一种响应模型驱动开发过程的自动化测试方法,国内外已经开展了很多相关研究,由前期的理论探索论证阶段逐步转入到了发展与实践阶段。
  WANG Lin-Zhang [2]认为模型驱动测试就是通过对SUT的软件需求进行分析,然后再结合测试策略构建全面、清晰的测试模型,最后通过测试模型自动生成测试用例。模型驱动软件测试只需要关注测试模型的构建和模型转换的定义,测试的后续工作就可由计算机自动实现,使得测试人员能够专注于测试模型的开发,利用算法自动生成测试用例,真正的提高了软件测试的自动化水平。
  模型驱动测试技术有两个技术要点:一是可用于生成测试用例的测试模型构建;二是测试用例生成方法。
  系统设计模型(PIM,平台无关模型)可直接用于测试生成,该模型在开发过程中即可实现;使用建模语言在系统设计模型的基础上建立测试模型,一是可以直接建立测试需求模型,二是可以将PIM转换得到测试模型。模型驱动测试过程的概括总结如图1所示。
  本文接下来阐述了模型驱动测试技术的几个要点,测试模型的构建方法;遍历模型、智能算法、模型检验、用例优化等测试用例生成方法;最后一部分是对全文综述的总结。
  2 测试模型构建
  在模型驱动测试方法领域,可供我们使用的建模语言有很多种,更有很多关于测试需求建模方法的研究。
  建模语言大体可分为非形式化、半形式化、形式化三种。使用形式化语言构建测试需求模型,有助于提高系统测试的自动化程度[20]。但目前常用的几种建模语言大都是非形式化和半形式化的,如UML、Petri网、马尔可夫链、AADL等[9,24-28,72]。Petri网、马尔可夫链、AADL等语言对嵌入式软件系统的高实时性和非功能属性表达力不足。相反,UML具有良好的面向对象性以及丰富的建模表达能力,可以用来对系统的静态结构和动态行为进行描述,并且UML中某些模型具有形式化特征,如活动图。但UML在实时性和非功能属性(Non-Functional Property,NFP)方面表达能力不够。
  为了提高UML对实时嵌入式系统建模分析能力,OMG提出实时嵌入式系统建模和分析语言MARTE,大大提高了嵌入式系统的描述能力[29-30,57-60],其使用构造型、标记值和约束三种元素扩展了UML的建模能力,同时利用值描述语言(Value Specification Language, VSL)来定性或定量的描述非功能属性,可以对时间和空间建模,能准确地描述对象的属性。鉴于UML和MARTE在建模表达能力方面的优势,所以在模型驱动测试领域,一般采用UML及MARTE构建模型。   测试用例模型可直接用于生成测试用例,文献[14]为除活动图模型中的非结构化特征,把UML活动图模型先转化为测试大纲模型,然后再转换为测试用例模型。
  在其他测试模型方面,Qaisar A[13]先根据需求建立UML和UML-B模型,然后再将其转换成QML(Qtronic Modeling Language,一个Java类的建模语言)进而通过工具生成用例。周景才[57]提出使用一个建立在MOF文件基础上的模型转换器把UML设计模型转换为U2TP测试模型。文献[11]为了检验UML 模型的正确性, 在建模的基础上把UML 模型转换为SMV 模型, 然后使用符号模型检验器(SMV)对模型进行检验, 有利于在系统的设计早期发现系统的缺陷。
  3 测试用例生成
  软件测试工作的核心是生成测试用例,模型驱动测试中生成测试用例主要可基于PIM、测试需求模型、PIM转换得到的测试模型实现。当测试人员获取到有限的正确的输入的时候,也不大可能获取到所有可能的测试用例,这是就需要一些相应的测试策略来决定把什么样的用例包含到测试套中[4]。这就需要针对不同测试模型采用不同的测试用例生成策略,策略调研结果如图5所示。
  3.1 遍历模型路径生成测试用例
  测试模型大都有其路径可循,如有向图、FSM等,测试用例的生成主要是采用算法对其路径进行遍历,籍此来生成测试用例。
  根据不方向的搜索路径,分为广度优先搜索遍历和深度优先搜索遍历;同时依据不同的算法策略,分为非递归遍历算法和递归遍历算法。黄晨[31] 将UML状态图转换为扩展有限状态机(EFSM),可有效消除UML状态图的多层次和多并发性,采用广度优先搜索覆盖路径并满足状态、迁移覆盖准则,由测试序列建立查找表生成测试用例集,一条路径经历对应一个序列,所以一个序列对应一个测试用例。杨波[19]采用深度优先搜索算法从开始状态对标记迁移系统进行路径搜索,输出测试用例。高雪娟[8]同样采用深度优先搜索算法遍历有向图,寻找路径信息,生成测试用例。周景才[57]则同时采用了深度优先搜索和广度优先搜索算法进行遍历状态变换路径,获取测试逻辑。采用状态图生成测试用例相当于遍历有限状态机,同时也就是遍历状态机生成的有向图,因此也可以利用有向图的遍历算法生成测试用例[31]。
  3.2 智能算法生成测试用例
  智能算法[35]具备算法实现简单、鲁棒性好的特点,尤其是启发性智能算法,各种智能算法的作用机制不同,也都有其优缺点。
  随机算法[36,37]通过在软件输入域上随机生成测试输入来测试软件,算法简单、易于执行,生成效率高,但同时能够避免测试人员的主观偏见覆盖率低、会产生大量的非法或无用的测试数据,有明显的盲目性。
  遗传算法(GA)是一种启发性算法[6,38,39],将遗传过程与达尔文适者生存原则相结合,不断进化与淘汰测试用例,减少了测试用例自动生成的盲目性,提高了软件测试的效率,但在早期迭代阶段,测试用例种群中存在大量次优解。
  模拟退火遗传算[40,41]将遗传算法和模拟退火有机结合,测试效率和效果优于遗传算法,但算法执行过程相对复杂。
  蚁群优化算法[42-45],增强型学习系统,将被测件信息表达为某种知识,然后应用蚁群算法完成知识推理,在推理过程中寻找到合适的测试用例集,具有分布式计算、易于与其他算法相融合、鲁棒性强等优点,不过由于搜索初期信息元素相对匮乏,导致算法的搜索效率降低,反馈机制容易产生停滞早熟现象。
  禁忌搜索算法[46]通过邻域移动操作来拓展搜索空间,采用与人类记忆机制相似的禁忌策略,限制搜索过程陷入局部最优,以及避免迂回搜索,可以使搜索过程避开早熟收敛的缺陷,同时保证多样性的高效搜索,禁忌长度太小和太大都不行,会导致陷入局部最优。
  粒子群优化算法[47,48]通过测试用例的个体认知与群体只能的相互影响和作用动态地产生用例数据,计算速度和易用性优于传统算法,但是早熟导致大部分个体聚集在一个很小的搜索范围,当该范围不含最优解时,算法将停于局部最优。
  以上介绍到的智能算法,各有优缺点,并没有好坏之说,只是各自适用的应用场景有所不同。应根据被测件模型的特性以及测试目标等来决定使用哪一种算法。
  3.3 模型检验获取反例
  在基于模型驱动的测试技术中,模型用来描述所期望的软件行为,测试的目的在于发现软件实现与由模型描述的软件行为之间的差异。一个流行的方法是通过将测试产生问题形式化为可达性问题,模型检验器[49-52]是用于验证的工具,但是却可以根据违反属性的事件来提供反例进而找到违反原因,反例本质上也是测试用例。因此,可以使用模型检测器来产生测试用例集。该方法主要用来做功能测试,检验系统的时序特性与逻辑是否正确。通常针对采用时间自动机模型[33,56]表达的测试模型使用模型检验器生成测试用例,这也是一种自动验证系统是否满足其规范的基于模型驱动的测试技术。通过将测试问题转化为可达性问题,使用模型检测器来产生测试用例集是目前被广泛研究的一种方法。在软件领域,模型检验最初用于对高可靠性软件进行形式化验证,由于其在验证软件特性时可生成反例的特点,逐渐被用于测试用例的生成中。
  3.4 测试用例集优化
  借助于定义好的模型转换规则、遍历算法、智能算法、模型检验等方法作用于测试模型生成测试用例,但测试人员获取到的初始测试用例集常常由于不可预知的异常导致获取的测试用例集合具有三个特点:(1) 和测试输入相比,初始测试用例集是一个非常庞大的状态空间;(2) 初始测试用例集有时并没有覆盖所有的测试输入;(3) 多个测试用例覆盖着同一个测试输入。
  如果要执行这些测试用例的话,则会消耗很多不必要的成本,同时还会降低测试人员的工作效率。因此,必须采取相应的措施对获得的测试用例集进行约减。目前的约减策略主要有两种:一是通过分析和需求之间的关系实现约减;二是借助于寻优算法。另外有学者从其他角度着手, XIE Jing[65]从需求对应的代码分布出发,对测试用例集中存在冗余测试用例的问题,给出了一种基于需求关系的测试用例集优化方法。   [14] 张楣.基于UML 活动图模型的测试用例生成技术研究[J].北京航空航天大学学报,2001.8,27(4):433-437.
  [15] 贾晓琳,覃征,等.基于体系结构描述的软件测试技术[J].西安交通大学学报,2005.8,39(8):808-811.
  [16] 侯超凡,吴际,刘超.基于测试需求的互操作性测试用例生成方法[J].计算机科学, 2014, 41(11):162-168.
  [17] 毕考基于被测系统模型的测试需求描述及其可视化[D].北京:北京航空航天大学计算机学院,2011.
  [18] 李留英.UML statecharts的测试用例生成方法[J].计算机研究与发展,2001.6,38(6):691-697.
  [19] 杨波.一种软件测试需求建模及测试用例生成方法[J].计算机学报,2014,37(3):522-537.
  [20] IEEE Standard 610.12-2002. IEEE Standard Glossary of Software Engineering Terminology. New York, USA: IEEE Press, 2002
  [21] 高猛.实时嵌入式软件系统测试需求建模研究[J].航天控制, 2010, 28(05):64-69.
  [22] Tian M, Wu J, Gong R L. Test Requirement Model: as a Bridge Connecting SUT and Test Design[J]. International Proceedings of Computer Science & Information Tech, 2012.
  [23] Gutiérrez J J, Escalona M J, Mejías M. A Model-Driven Approach for Functional Test Case Generation[J]. Journal of Systems & Software, 2015, 109:214-228.
  [24] Guo Haitan and Yang Xianhui. Automatic creation of Markov models for reliability assessment of safety instrumented systems.Reliability Engineering and System Safety 93,2008:807―815.
  [25] Goble WM.Control systems safety evaluation and reliability.ISA The Instrumentation,Systems,and Automation,1998.
  [26] 冯冰, 杨志义.一种面向 A AD L 架构的模型测试方法[J].计算机测量与控制,2010,18(4):778-781.
  [27] 王瀚博,周兴社.结构分析和设计语言AADL研究[J].计算机工程与应用,2009,45(16):1-4.
  [28] 范洪达. Time Petri 网在实时软件测试中的应用[J].23-25.
  [29] OMG. UML Profile for Schedulability, Performance, and Time Specification[S]. 2005.
  [30] Group, O.M., Pending Issues sent to the OMG Finalization Task Force: UML Schedulability, Performance and Time profile[C]. 2004.
  [31] 颜炯.基于模型的软件测试综述[J].计算机科学, 2004 , 31(2) : 184 - 187.
  [32] Demathieu, S., et al. First Experiments Using the UML Profile for MARTE[C]. Proceedings of 11th IEEE Symposium on Object Oriented Real-Time Distributed Computing (ISORC), 2008: 50-57.
  [33] 吴黎明,胡军.无人机飞控软件系统建模与测试用例生成研究[J].
  [34] Wang Y, Lan X, Wang Y. Modeling Embedded Software Test Requirement Based on MARTE[C]. IEEE, International Conference on Software Security and Reliability-Companion. 2013:109-115.
  [35] 聂鹏.软件测试用例自动生成算法综述[J].计算机应用研究, 2012, 29(2).
  [36] Hamlet R. Random testing [J]. Encyclopedia of software Engineering, 1994.
  [37] Gerlich R, Boll T. Random testing: from the classical approach to a global view and full test automation[C]. Proceedings of the 2nd international workshop on Random testing: co-located with the 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE 2007). ACM, 2007: 30-37.   [38] 沈涤.基于遗传算法的测试用例的开发与设计[J].福建电脑,2013,10:107-109.
  [39] LI Jun,LI Yan-hui, PENG Cun-yin. Path test Data Generation Based on Adaptive Genetic Algorithm [J]. Computer Engineering, 2009, 0, 35(2):203-205.
  [40] Fu Bo. Automated Software Test Data Generation Based on Simulated Annealing Genetic Algorithms [J]. Engineering of Engineering TechnoIogy, 2005, 12: 82-84.
  [41] LI Long-shu,CAO Xun,WANG Fan.Test Data Generation Using Simulated Annealing Genetic Algorithm [J]. COMPUTER TECHNOLOGY AND DEVEI PMENT, 2011, 04, 21(4):85-89.
  [42] Dorigo M, Gambardella L M. Ant colony system: a cooperative learning approach to the traveling salesman problem [J]. Evolutionary Computation, IEEE Transactions on, 1997, 1(1): 53-66.
  [43] 陈明师.基于多态蚁群算法的测试用例自动生成技术[J].计算机应用研究,2009.06,26(6):2347-2348.
  [44] 王小银.基于蚁群算法的三三组合测试用例集的生成[J].计算机应用研究,2015.05,32.
  [45] REN Hong-li. Test cases generation from UML state machine diagrams using improved ACO [J]. Computer Engineering and Design, 2010,31(17):3835-3837.
  [46] 仲晓敏,赵雪峰.基于改进禁忌搜索算法的测试用例自动生成[J].计算机工程与设计,2011.06,32(6):2058-2060.
  [47] Windisch A, Wappler S, Wegener J. Applying particle swarm optimization to software testing[C]//Proceedings of the 9th annual conference on Genetic and evolutionary computation. ACM, 2007: 1121-1128.
  [48] CHEN Ce. Path Test Data Generation Based on Chaos Anneal Particle Swarm Optimization Algorithm [J].Journal of Nanjing University of Science and Technology, 2010, 06, 35(3):376-381.
  [49] John Wiley & Sons, Ltd. Testing with model checkers: a survey Softw [J]. Test. Verif. Reliab. 2009; 19:215-261.
  [50] 程亮,张阳.基于UML和模型检测的安全模型验证方法[J].计算机学报,2009.4,32(4):699-707.
  [51] 曾红卫,缪淮扣.优化基于模型检验的测试生成[C].第六届中国测试学术会议论文集(CTC2010),2010.7:106-112.
  [52] 梁陈良,聂长海.一种基于模型检验的类测试用例生成方法[J].东南大学学报(自然科学版),2007.9,37(5):776-780.
  [53] H. Ural. Formal methods for test sequence generation. Computer Communications, 15(5):311-325,1992.
  [54] D. Lee and M. Yannakakis. Principles and methods of testing finite state machines ― a survey [C]. Proceedingsof the IEEE, 84(8):1090-1123, 1996.
  [55] L. Nachmanson, M. Veanes, W. Schulte, N. Tillmann, and W. Grieskamp. Optimal strategies for testing non deterministic systems [J]. SIGSOFT Software Engineering Notes, 29(4):55-64, 2004.
  [56] 袁磊,吕继东.一种全覆盖的列控车载系统测试用例自动生成算法研究[J].铁道学报,2014.08,36(8):55-62.
  [57] 周景才.模型驱动的自动化测试架构[J].计算机工程与应用,2010,46(2):66-68.
  [58] Andre, C., F. Mallet and R. de Simone. Modeling of immediate vs. delayed data communications: from AADL to UML MARTE[C]. ECSI Forum on specification & Design Languages (FDL), 2008: 249-254.   [59] Ziwei, L., et al. Formal Specification of Hybrid MARTE Statecharts[C]. Proceedings of 2012 Sixth International Symposium on Theoretical Aspects of Software Engineering (TASE), 2012: 59-66.
  [60] Demathieu, S., et al. First Experiments Using the UML Profile for MARTE[C]. Proceedings of 11th IEEE Symposium on Object Oriented Real-Time Distributed Computing (ISORC), 2008: 50-57.
  [61] HUANG Long, MIAO Huai-kou, WANG Xi, GUO Liang. Formal Testing Model Generation Based on Scenario. JOURNAL OF SHANGHAI UNIVERSITY (NATURAL SCIENCE) [J], 2011, 17(5): 595-599.
  [62] 陈伟.一种能得到优化代表集的测试用例集极小化算法[J].计算机研究与发展,2006,43(22):105-109.
  [63] Zhang Rui,Jiang Jianhui,Yin Jie,et a1.A new method for test suite reduction[C].The 9th International Conference for Young Computer Scientists,2008,5(1):1211-1216.
  [64] LIN M u,DAI Yueming.Study of test suite optimization method in regression testing [J]. Computer Engineering and Applications,2011.47(11):54-56.
  [65] XIE Jing. Optimization Method of Test Case SetBased on Requirement Relationship [J].Computer Engineering, 2011, 08, 37(16):33-35.
  [66] LUO Wen-bing. Test Suite Optimization Based on Graph Analysis [J].Computer Engineering, 2010, 08, 36(15):92-94.
  [67] REN Hong-li,ZHANG Wei,LIANG Jia-an. Approach for optimizing test suite based on ACO [J]. Computer Engineering and Applications, 2010, 46(29); 58-62.
  [68] 高猛,钟德铭等.软件密集航电系统测试需求建模研究[C].第7届国际可靠性、维修性、安全性学术会议论文集,2007.08.
  [69] Meng Gao, Minyan Lu. Research on test requirement modeling for software-intensive avionics and the tool implementation[C]. Digital Avionics Systems Conference, 2007. DASC ' 07. IEEE/AIAA 26th, 2007.11, 6.D.2-1 - 6.D. 2-10.
  [70] 徐珞,石晶.基于任务场景的测试需求建模方法[J].计算机工程与设计,2015.04, 36(4), 1009-1015.
  [71] Chris Raistrick, 赵建华等译. MDA与可执行UML[M].北京:机械工业出版社.
  [72] Bruce Powel Dauglass.实时UML-开发嵌入式系统高效对象[M].北京:电子工业出版社.
  [73] Bill Hasling, Helmut Goetz. Model Based Testing of System Requirements using UML Use Case Models [J]. 2008 International Conference on Software Testing, Verification, and Validation, 367-376.
  基金项目:
  受航空基金――基于模型的时间触发飞控系统测试技术研究支持。
  作者简介:
  雷海申(1990-),男,北京航空航天大学,硕士研究生;主要研究方向和关注领域:模型驱动软件测试技术、软件可靠性工程。
  王轶辰(1977-),男,博士,北京航空航天大学,副教授;主要研究方向和关注领域:软件可靠性工程、复杂软件系统测试技术。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
UML基础学习及资源总结
UML在软件开发各个阶段的应用
【原】UML笔记(1):UML简介
UML模型图
技术干货分享-基于模型设计的HDL代码自动生成技术综述
UML 的九种模型图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服