SCI论文(www.lunwensci.com)
摘 要:软件测试是保证软件质量的重要手段,测试数据自动生成是软件测试领域研究的热点之一。近些年,测试数据的 自动化生成得到了广泛的关注。本文首先总结了应用较为频繁的基于路径覆盖、优化算法的测试数据生成的研究成果,之后归 纳了基于聚类算法以及基于 UML 模型的测试数据自动生成技术的研究现状,并分析了每类方法的特点及面临的主要问题,最 后对测试数据自动生成的未来发展进行了展望。
关键词:软件测试,自动化,测试数据生成,软件质量
Research on Classification of Software Test Data Automatic Generation Methods
FAN Shuping1. MA Baoying2.3. WANG Xueyan3. GAO Chenguang3
(1.School of Computer and Information Technology, Mudanjiang Normal University, Mudanjiang Heilongjiang 157012;
2.College of Computer Science and Technology, Harbin Engineering University, Harbin Heilongjiang 150001;
3.School of Health Management, Mudanjiang Medical University, Mudanjiang Heilongjiang 157011)
【Abstract】:Software testing is an important way to ensure software quality, and automatic generation of test data is one of the hotspots in the field of software testing. In recent years, the automatic generation of test data has received extensive attention. Firstly, this paper summarizes the research results of test data generation based on path coverage and optimization algorithm, which are frequently used. Then, the research status of automatic test data generation based on clustering algorithm and UML model is summarized, and the characteristics and main problems of each method are analyzed. Finally, the future development of automatic generation of measurement data is prospected.
【Key words】:software testing;automation;test data generation;software quality
引言
众所周知,软件可靠性直接影响软件开发成本和软 件质量,测试是软件过程中最重要的组成部分之一,其 目的是检测软件中存在的缺陷,从而保证最终产品的质 量。通过程序测试可以有效检测软件缺陷,如何高效地 生成满足目标要求的测试数据是测试工作的关键。本文 首先总结了应用广泛的基于优化算法的测试数据生成的 研究成果,之后归纳了基于聚类算法以及基于 UML 模 型的测试数据自动生成技术的研究现状,并分析了各类 方法的特点,最后对测数据自动生成的未来发展趋势进 行了展望。
1 软件测试数据生成方法的分类
人工编写系统级测试数据既消耗时间又容易出错,而 自动化测试由于在节省人力资源与成本的同时, 能有效提 高软件产品质量,从而得到了广泛的应用。面向源代码的 自动化软件测试数据生成的主要任务是自动生成满足一定 覆盖标准的测试数据,这些测试准则通常为条件覆盖、语 句覆盖、分支覆盖以及路径覆盖等标准,其中, 基于分支 和路径覆盖标准的程序测试是常用的方法,而为路径覆 盖生成有效且足够的测试数据是当前研究的热点之一。 1.1 面向路径覆盖的测试数据生成方法面向源代码的自动化软件测试数据生成中,基于搜索的测试主要是应用优化技术实现测试数据的自动生成, 目前国内外众多学者进行了广泛的研究。自动化测试的 主要任务是自动生成满足一定覆盖标准的测试用例, 这 些测试准则通常为条件覆盖、语句覆盖、分支覆盖以及路 径覆盖等标准。程序测试方法的有效性取决于测试数据生 成时考虑的标准,基于分支和路径覆盖标准的程序测试是 常用的方法,然而, 由于分支覆盖比路径覆盖更弱, 且由 于程序复杂性地增加会导致更多的路径覆盖,因此,为 路径覆盖生成有效且足够的测试数据是当前研究的热 点。研究面向路径覆盖标准的测试数据自动生成技术, 以高效生成覆盖程序不同路径的测试数据至关重要。
截止到目前,针对路径覆盖的测试数据生成技术往 往与遗传算法相结合,以快速生成覆盖目标路径的测试 数据。在应用遗传算法的测试数据进化生成方法中,适 应值函数设计往往考虑表示输入变量所覆盖路径和目标 路径接近程度的层接近度,以及反映个体执行路径偏离 目标分支大小的分支距离两个因素,并根据遗传算法的 个体适应值进化生成满足要求的测试数据。
夏春艳等 [1] 处理了分支距离,使其值在 0 ~ 1 范围 内,以及在层接近度与分支距离基础上,利用被测程序 条件语句的相关性判定不可达路径,根据节点在不可达 路径中出现的概率,提出了基于个体穿越度的适应度函 数设计方法。此外,也有将所有目标路径用哈夫曼编码 表示 [2] ,根据个体穿越路径与目标路径编码的匹配程度 设计适应值函数。为了快速生成覆盖目标路径的测试数 据,张岩等 [3] 提出在进化生成测试数据过程中,考虑动 态记录难覆盖语句的稀有数据,并据此设计遗传算法个 体对目标路径的贡献度,设置权重调整不同个体的适应 值,有效提高了测试数据生成的效率。
可见,面向路径覆盖的测试数据自动生成技术的效 率与遗传算法密不可分,实际应用中可以根据目标路 径,设计高质量的适应度函数,选择优化的遗传算法参 数,以及针对遗传算法的不足进行改进,例如,将遗传 算法与其他技术相结合,是提高测试数据生成技术效率 的关键。
1.2 基于进化算法的测试数据进化生成
与人工编写测试用例相比,基于搜索的测试数据生 成方法在提高代码覆盖率的同时,能有效地对未知错误 进行检测,大大促进了测试数据生成效率的提高。众多 优化算法如遗传算法、粒子群优化算法、人工蜂群算 法、爬山算法、差分进化算法等都在该领域得到了广泛 的应用,这些优化算法的目标是在程序输入域中搜索满 足要求的测试数据。
粒子群算法中,每个粒子都代表一个候选解,通过 随机初始化粒子的速度与位置,计算每个粒子的适应值, 每个粒子都会跟踪其最佳位置与全局最佳位置,并动态 调整粒子的速度与位置,与遗传算法相比,粒子群优化 算法产生了高质量的结果,在一定程度上解决了遗传算 法过早收敛和迭代次数多的问题。为了进一步改善种群 多样性,解决粒子群算法易于陷入局部最优的问题, 可 以在适应度函数设计中应用分支距离法 [4] ,从而实现对 测试数据质量的评价,也可以在 UML 模型的帮助下生 成和优化测试用例。
人工蜂群是一种广泛使用的元启发方法,目前已广 泛用于测试数据的进化生成中。该方法包含控制参数, 为了解决算法陷入极小值的问题,人工蜂群方法通过负 反馈能力,丢弃过度重复的解决策略,从而实现种群的 多样性,与此同时,增强方法在搜索过程中的探索能力, 以对不同难度的待解决问题都有更高的覆盖率。例如, 在人工蜂群算法中,使用交叉和变异算子生成一组测试 数据,以最大化面向对象软件目标的适应度函数 [5] ,实 验结果表明,与基本的人工蜂群算法相比,该方法可以 实现快速地收敛,并且对不同难度的待解决问题都有更 高的覆盖率
实际应用中,也可以结合若干种进化算法来生成测 试数据。例如,将遗传算法与爬山算法相结合进化生成 测试数据,以及对传统遗传算法的不足进行改进,在遗 传算法中引入模拟退火机制等,以有效生成满足目标要 求的测试数据。
总之,基于优化算法的测试数据进化生成,与适应 度函数密不可分,如何根据目标要求,设计高质量的适 应度函数是关键。此外,这类方法面临的主要问题是优 化算法往往经过多次迭代生成测试数据,在生成目标测 试数据过程中,由于算法在搜索过程中的随机性,往往 伴随生成批量冗余的测试数据 [6] ,因此如何减少生成的 冗余测试数据的数量是亟待解决的问题。
1.3 基于聚类技术的测试数据生成方法
随着越来越多的人工智能产品进入市场,大量云计 算技术的应用增加了软件测试的难度, 将人工智能技术引 入到软件测试中,以寻求一种更高效的测试方法来应对挑 战,这对促进我国软件测试技术领域的发展至关重要。人 工智能的发展离不开众多技术的支撑, 聚类算法作为机器 学习的关键技术,近年来成为人工智能领域的研究热点。 目前聚类算法已经广泛地应用到计算机软件领域中,例 如,将模糊聚类技术用于软件架构恢复,即从早期版本 软件的可用信息中,恢复出整个系统的软件架构,使软件架构的恢复更高效、更准确,以及基于模糊 K 均值聚 类的软件开发工作量估算方法,针对软件项目的复杂性 和不确定性,准确的估计工作量。在软件测试数据生成 方面,为了提高测试数据的生成效率,可以将特征或者 指向相同的数据聚合起来,以实现动态化处理测试数据 的离散度 [7] ,又如将聚类算法用于初始数据的约简,增 强测试数据的多样性,以有效提高测试数据的生成速度。 可见,聚类技术已经广泛应用于软件测试相关技术中。
随着聚类算法在软件测试技术中的应用,对于聚类 中最优参数的选择、数据中离群点的处理方式等有待进 一步挖掘,以取得更好的聚类效果。
1.4 面向模型的测试数据生成方法
程序测试通过从执行域中选择部分测试用例来验证 程序的执行逻辑。统一建模语言(Unified Modeling Language, UML)是一种广泛使用的可视化建模语言, 目前已经成为软件系统建模的重要标准,引起了国内外 学者的关注。在面向对象系统开发测试用例的工作中, 基于 UML 能够建立系统的静态与动态模型,从模型和 其他软件工程中自动生成测试,使得在编码之前为软件 创建测试成为可能,从而降低了开发成本。由于 UML 允许测试计划与开发周期并行执行,在提高软件开发效 率的同时,规范了测试用例的生成,有助于保证软件的 质量。
不同 UML 模型提供了系统的不同视图,并且可以 使用不同类型的 UML 模型来检测不同类型的缺陷。测 试自动化是软件开发中的重要组成部分,测试用例可以 从不同的 UML 模型中自动挖掘。目前,基于状态图、 活动图和序列图等生成测试数据的方法中,往往将处于 某种中间状态的各类图转换为其他图或树,以生成满足 各种覆盖标准的测试用例。例如,为了表示复杂系统的 控制流和数据流,从 UML 序列图到扩展有限状态机的 映射,或者应用从序列图到活动图的中间转换来生成测 试用例,以及在图转换的同时使用进化算法对测试用例 进行优化等,以实现测试用例的自动生成,并实现了软 件测试和形式化建模,提供了软件质量保证的关键要 素。针对面向模型的测试数据生成, Rocha 等 [8] 提出 了从 UML 模型生成测试的系统过程,从 UML 序列图 到扩展有限状态机的映射,以表示复杂系统的控制和数 据流,并提供精确的语义,实现测试用例的自动生成。 总之,基于模型测试的有效性主要是由于其能实现自动 化,统一建模语言已经成为软件建模的实际标准,基于 模型的测试用于通过具有系统特性与软件规定的模型设 计测试用例,并提供执行软件规范的详细信息,通过该技术可以从所述模型中自动完成测试用例的创建。
然而,实际系统的 UML 状态模型通常包括大量的 状态以及转换过程,因此,目前所涉及的测试数据生成 方法中考虑的模型通常是局部的,且基于小程序和简单 结构来建立测试数据,如何改进大规模复杂平台的自动 化测试数据生成技术,并融合智能优化算法也是有待研 究的方向。
2 结论与展望
测试数据自动生成是软件测试领域的重要研究方 向。本文主要介绍了测试数据生成方法的分类,以及测 试数据生成方法的主要特点。随着人工智能技术的发 展,机器学习与深度学习技术应用的越来越广泛,如何 将这些技术有效应用于测试数据的自动生成中,以提高 生成测试数据的质量值得进一步挖掘。与传统软件不 同,深度学习软件内部结构复杂,并通过模型训练来实 现软件内部的逻辑关系,因此,如何获取有效的测试数 据实现对深度学习系统的覆盖,以检测深度学习软件中 的缺陷也有待进一步研究。
参考文献
[1] 夏春艳,张岩,宋丽 .基于节点概率的路径覆盖测试数据进化 生成[J].软件学报,2016.27(04):802-813.
[2] GONG D W,ZHANG W Q,ZHANG Y.Evolutionary Generation of Test Data for Multiple Paths Coverage[J]. Chinese Journal of Electronics,2011.20(2):233-237.
[3] 张岩,巩敦卫 .基于稀有数据扑捉的路径覆盖测试数据进化 生成方法[J].计算机学报,2013.36(12):2429-2440.
[4] RAUF A,ANWAR S,JAFFER M A,et al .Automated GUI Test Coverage Analysis Using GA[C]//2010 Seventh International Conference on Information Technology: New Generations. IEEE,2010:1057-1062.
[5] OS A,BA A,DKA B.Archive-based Multi-criteria Artificial Bee Colony Algorithm for Whole Test Suite Generation[J]. Engineering Science and Technology,an International Journal, 2021(24):806-817.
[6] 薛猛,姜淑娟,王荣存 .基于智能优化算法的测试数据生成综 述[J].计算机工程与应用,2018.54(17):16-23.
[7] 刘光源 .基于K-均值聚类的软件测试数据生成算法[J].数字 通信世界,2022.215(11):56-58.
[8] ROCHA M,SIMAO A,SOUSA T,et al.Test Case Generation by EFSM Extracted from UML Sequence Diagrams[C]//SEKE, 2019:135-180.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/65534.html