关键词:
软件测试
EFSM模型
测试用例自动生成
测试序列
分散搜索算法
摘要:
信息技术的快速发展,软件产品越来越被应用到社会中的各个方面,但是,随之而出现的软件质量及安全问题阻碍着它的蓬勃发展。因此,保证软件质量已成为当今广大专家学者和工程人员的重点研究方向。软件测试一直以来都是确保软件质量和安全的重要措施。然而随着软件复杂性的加剧和软件规模的增加,软件测试已成为一种复杂、耗时的工作,为了降低软件测试在整个软件开发过程中的人力及物力开销,提高软件整体的质量和可靠性,软件测试的自动化技术已成为现如今亟须解决的问题。软件测试自动化技术其中的一个关键点就在于测试用例的自动生成。基于模型的测试是一种有效的软件测试方法,它可以有效地描述复杂软件系统的状态和行为。其中扩展有限状态机(Extend Finite State Machine,EFSM)是有限状态机(Finite State Machine,FSM)在原有的基础上,扩展上下文变量以及作用在上下文变量上的谓词条件和操作而来,因此,EFSM可以更加精确地描述软件系统的状态行为,被广泛应用于实际工程之中。但由于EFSM的复杂性,使得对EFSM模型进行测试用例自动生成这一过程更加复杂,因而仍然是一项攻坚难题。本文在已有的研究基础上对EFSM模型的测试用例自动生成方法进行了深入研究,主要包括以下几个方面:(1)由于EFSM模型本身是静态的,但是在测试过程中,必须使得EFSM模型能够根据输入变量得到执行,进而得到测试用例。本文采用UML建模的方法,利用SMC工具将EFSM模型转换为Java代码,结合图论的广度优先搜索算法使得静态EFSM模型具有动态执行能力,从而建立了EFSM的可执行模型。(2)本文在深入分析和研究了前人对于测试序列自动生成方法的基础上,将EFSM模型状态图转换为迁移图,进而采用改进广度优先搜索方法自动生成从初始迁移到达其他各个目标迁移的可行测试序列。在生成测试序列的过程中采用基于数据流和控制流的冲突检测方法来识别测试序列的冲突问题,然后,综合考虑测试序列长度和以及操作变量的类型,设计测试序列可行性度量方法定量分析测试序列的可行性与有效性。(3)根据前面获得的测试序列,本文深入分析和探讨了智能优化算法对于测试数据自动生成方面的有效性和高效性,重点介绍了遗传算法和分散搜索算法。进而针对前面已经获得的从初始迁移到达其他各个迁移的测试序列,采用分散搜索算法进行测试数据的自动生成。本文设计并实施了一系列实验验证本文测试序列生成方法的有效性,然后将本文使用的分散搜索算法与遗传算法在测试数据自动生成方面进行比较,从而验证分散搜索算法的有效性。实验结果表明,本文提出的测试序列生成方法能够有效并且高效的生成可行测试序列,分散搜索算法对于测试数据的自动生成相比于遗传算法在本实验中更具有优势。