SCI论文(www.lunwensci.com)
摘 要:近年来,随着敏捷方法的广泛应用,回归测试取得了显著的发展。针对敏捷开发环境下,软件版本交付频繁以及 测试用例数目不断增多的问题,回归测试优化技术得到了广泛的关注。本文研究敏捷回归测试中关键技术的发展现状,包括回 归测试用例选择与回归测试用例优化技术,以提高敏捷回归测试的效率,为回归测试优化技术的发展奠定基础。
关键词: 回归测试,敏捷开发,测试用例选择,测试用例排序,聚类
Research on Key Technologies in Agile Regression Testing
MA Baoying1.2. DONG Zhenghao2. YUAN Maocai3. FAN Shuping4.SONG Yan4. WANG Juan2
(1.College of Computer Science and Technology, Harbin Engineering University, Harbin Heilongjiang 150001;
2.School of Health Management, Mudanjiang Medical University, Mudanjiang Heilongjiang 157011;
3.China Ship Science Research Center, Wuxi Jiangsu 214000;4.School of Computer and Information Technology,
Mudanjiang Normal University, Mudanjiang Heilongjiang 157012)
【Abstract】: In recent years, with the wide application of agile methods, regression testing has made significant progress. Aiming at the problems of frequent software version delivery and the increasing number of test cases in agile development environment, regression test optimization technology has been widely concerned. This paper studies the development of key technologies in agile regression testing, including regression test case selection and regression test case optimization, in order to improve the efficiency of agile regression testing and lay a foundation for the development of regression test optimization technology.
【Key words】: regression testing;agile development;test case selection;test case sequencing;clustering
引言:测试关注于被测软件的各个部分,其目标是保证软 件产品的质量。回归测试是在代码修改后,重新执行测 试用例,以确定软件修改后是否会导致新的缺陷。近年 来,敏捷回归测试被广泛应用于软件开发中,敏捷已经 风靡一时,应用敏捷测试软件迭代速度快、软件版本 间隔更小,与目前许多企业内团队倡导的模式相符。相 对于传统的软件测试方法,敏捷测试更为精简,包含了 面向业务的一套完整的端到端回归测试,更强调持续集成、测试驱动开发等技术 [1]。敏捷回归测试中,随着测 试用例规模逐渐增长,用例的重复执行导致测试效率降 低,进而影响产品交付的成本以及测试时间。因此,众 多测试技术被提出,包括测试用例约简、测试用例选择 和测试用例的优先排序。目前,敏捷团队应用测试数据 分析、机器学习以及其他先进技术来优化敏捷回归测试 过程和测试方法。敏捷软件开发的优势主要体现在 :在 短时间内交付与变更高质量软件。敏捷测试方法在自动 化回归测试中很有效,但与此同时,也给回归测试带来新的挑战。下面,首先介绍敏捷回归测试的基本概念。
1 敏捷回归测试的内涵
敏捷是一种产品交付方法,它以持续集成和测试驱 动开发等技术为中心,因此,测试团队总是在研究提高 其回归测试工作效率的方法,以便在敏捷环境中最大限 度地利用回归测试,并通过应用测试自动化和持续执行 来节省成本和时间。软件开发过程中,回归测试是指程 序员对软件进行修改后对软件进行的测试,回归测试的 目标包含完整的端到端的业务功能,测试过程中往往重 复执行相同的测试,以确保系统所需的功能保持稳定。 敏捷方法鼓励频繁的构建和测试周期,减少测试间隔, 是同时结合用户故事和其他特定敏捷参数的实践过程 [1]。 敏捷方法已经将测试(尤其是回归测试)纳入到软件开 发中,敏捷测试中往往在每个 Sprint 和发布结束时运行 回归测试用例集,这意味着需要大量的时间和代价。敏 捷回归测试的目标是保证最近更新的程序或代码变化并不 会对现有功能产生不良影响。传统的需求工程往往需要早 期冻结用户需求,即需求一旦确定就很难发生改变, 这会 导致返工率的提高。敏捷测试则以反复迭代为核心,敏 捷产品开发的主要特点是高度迭代并具有周期性,与此 同时,能够根据客户的需求,保证测试具有针对性,并 完成高效、连续的处理。与传统的瀑布模型不同,敏捷 开发环境中,从确定用户要求开始,往往要检测规划、 设计用例、执行、问题追踪与回归检测,最后需要进行 软件系统的发布测试。在高度迭代的敏捷研究过程中, 测试人员要从多个方面来考察测试的实际活动 [2],首先 要从整体上,在测试时间允许的条件下,找出需要尽早 改变的问题,这些问题的发现往往由开发人员对需求准 确把握的程度、对项目全面了解程度、含有终端用户视 角程度以及对客户有现实的商业价值程度来决定。
2 敏捷回归测试关键技术
随着软件规模的扩大以及软件复杂性的激增,软件 质量已成为软件开发与维护中关注的重点,软件测试工 作的重要性不言而喻。目前测试人员常采用回归测试来 确定代码更改的准确性,并减少由于代码更改而导致被 测程序或其他模块产生新的缺陷。然而,有研究表明, 回归测试费用一般占软件维护费用的 50% 以上 [3]。开 发者在软件开发与维护的过程中,为了逐步完善软件产 品的现有功能、对软件产品的原始代码进行重构以及改 善软件系统的执行特性等,都需要经过更改原代码或触 发软件产品演化。由于敏捷开发等软件开发方式的日趋 完善,软件系统演化频率急剧增加,因此,在降低软件 开发成本的同时保证进化后软件系统的质量尤为重要。
一种可行的方法是重复运行与改变被测程序修改前运行 的测试用例集,然而,随着测试用例的数量不断增加, 将造成一系列问题,如测试成本的提高以及现有的部分 测试用例集在修改的程序上运行失效,为了解决这些问 题,国内外众多学者对高效自动的回归测试技术进行了 深入的研究。其中,对高质量测试用例的有效保护,是 回归测试中研究的重点问题。鉴于此,各种回归测试用 例关键技术应运而生,其中包括了测试用例选择技术 (RTS) 与测试用例排序技术。
2.1 回归测试用例选择技术
回归测试用例选择技术(Regression Test Cases Selection) 的目标是找到一个数量少的测试用例子集 来充分满足所有的测试需求,与此同时尽可能地降低测 试成本。实际中可以应用不同的粒度进行测试用例的选 择,如模块级、方法 / 函数级、类级、指令级、代码级 等。例如,Gligoric 等 [4] 提出减少基于类或模块级别 的文件依赖性,所提出的方法可以很好地与测试框架集 成,并能够跟踪测试对文件的动态依赖关系,结果表 明,该技术可以有效减少端到端的测试时间。
在面向白盒回归测试用例选择技术中,往往通过先 静态分析找到程序代码的变化,而后选择覆盖程序中所 有变化的测试用例。传统的白盒测试用例选择技术主要 应用贪婪算法、启发式算法实现,如 G 算法、GE 算法、 GRE 算法、H(HGS) 算法、CH 算法等实现, 该类测 试用例选择技术的基本思想是 : 首先根据测试目标中的 每个需求确定出相应的用例,这些用例组成满足测试目 标的原始测试用例集 ;然后对这个测试用例集采用贪心 算法,一些启发式算法或整数规划等方法进行精简,去 掉一些冗余的测试用例。1974 年首次提出了用于简化 测试用例集的贪心算法(G 算法),之后, Liu 等 [5] 应 用贪心算法来识别有效的测试用例子集。近些年,遗传 算法、蚁群算法、粒子群等智能算法在回归测试用例优 化选择中也得到了广泛的应用。然而,由于这些算法过 早收敛、优化效率低等局限性,在实际应用中往往需要 通过与其他算法混合使用来得以改进,此外,算法的代 价通常较高,优化过程繁琐。针对这些问题,众多学者 对其进行研究。例如,对传统遗传算法进行改进 [6],采 用限制每个基因的遗传编码不同以产生初始种群、个体 失效保护机制的交叉操作和最优个体保护机制的变异操 作,以获得信息处理系统的全局优化测试集。此外,也 有考虑故障检测率、隔离率、临界故障检测率以及隔离 率约束 [7],建立测试优化选择模型,并应用粒子群算法 对其进行求解,以降低测试成本。
2.2 回归测试用例排序技术
测试用例排序技术(Test Cases Prioritization,TCP) 旨在提高回归测试的效率,并通过区分测试用例的先后 执行顺序,更早地发现软件中存在的缺陷。测试用例排 序技术在不减少测试用例数量的情况下,按照某种准则 对测试过程中用例执行的先后进行排序,使得有较高优 先级的测试用例优先执行,该技术可以有效减少回归测 试的工作量 [8]。目前,回归测试用例排序技术主要包括 : 基于覆盖率的优先级、基于相似性的优先级、基于需求 和风险的优先级以及基于缺陷检测的优先级 [9-12] 等。
在回归测试用例排序技术中,基于程序代码覆盖的 排序技术应用的较为广泛,这类技术往往需要考虑程序 的源代码,其主要目标是尽早实现对程序代码的覆盖。 为了尽可能的扩展程序代码的覆盖范围, Fang 等 [10] 则 考虑测试用例穿越被测程序实体的序列,据此得到测试 用例之间的相似性,进而提出基于用例间相似性的测试 用例排序方法。在基于需求的优先级技术中,张娜等 [11] 引入关注需求覆盖率、基于需求测试用例重要度和测试 用例失效率这 3 个因素共同确定基于需求的测试用例排 序问题。在基于风险与缺陷的优先级技术中, Tyagi 等 [12] 提出考虑故障检测率、故障检测百分比和风险识别能力 三方面因素的多目标测试用例排序方法。也有方法评估 代码单元的故障倾向性,在基于覆盖的测试用例排序技 术中应用神经网络实现缺陷预测 [9],以及在变异测试中 根据真实缺陷和变异缺陷的性能进行测试用例的排序。 可见,现有的敏捷回归测试技术有效提高了排序用例的 缺陷检测效率。
2.3 敏捷回归测试用例选择与排序技术
软件测试在保证软件可靠性方面至关重要,为了保 证可靠性,需要在敏捷实践中投入大量的精力和资源。 在敏捷应用程序中进行回归检查,以解决由于测试不 充分而导致的编程返工问题。由于敏捷中的手动回归测 试比较耗时,自动化回归测试应运而生。自动化回归测 试节省了测试人员花费的时间,测试团队可以专注于覆 盖程序的更多部分,并运行除回归之外的其他类型的测 试,进而提高测试覆盖率。
敏捷开发环境中, 软件版本交付频繁,传统测试用 例选择或排序技术对处理新用例的选择与排序以及对新 用例与旧用例叠加情况考虑的不足 [13], 此外, 传统测 试用例选择与排序技术的实现往往都不依赖于任何敏捷 参数,也未应用于敏捷项目中。敏捷测试中,执行大型 测试套件往往需要耗费大量的时间与成本,测试用例优 先化、回归测试选择、测试套件最小化和测试套件扩充等各类技术已经被应用来减少执行的时间。
为了有效处理软件开发中的频繁变更,克服延迟交 付的问题,Arora 等 [14] 在敏捷环境中引入了一种测试 用例选择方法,该方法考虑了模块中用户故事组无向图 的权重,有效消除了用户故事开发的其他风险。针对敏 捷测试,也有文献在对新用户故事的关键字和现有用户 故事关键字进行映射后,根据现有用户和新用户故事中 出现的名词和动词,提出了测试用例优先级排序方法, 以减少测试套件的回归测试时间。张丽等 [15] 提出一种 动态回归测试用例排序方法,该方法分析需求和模块、 模块和用例间的映射关系,并分析原功能受新功能的影 响情况和用例的历史执行信息,分别实现了新功能与原 功能的测试用例排序。针对自动化的敏捷回归测试用例 排序方法,Kandil 等 [1] 考虑了对测试人员具有实际权 重的多个参数进行用例的排序,并解决了基于集群的发 布测试用例选择技术,该技术基于覆盖模块的相似性对 用户故事进行聚类,并使用文本挖掘技术来选择测试用 例。Ali[16] 等通过对测试用例聚类, 提出一种测试用例 选择和排序技术,该技术根据覆盖标准以及失效的测试 用例实现测试用例的排序,以有效改善敏捷软件开发的 回归测试。此外,聚类技术也广泛应用于测试用例排序 技术中,例如,根据所覆盖模块的相似性对用户故事进 行聚类,解决基于集群的发布测试用例选择技术以及可 扩展性的问题。此外,也有研究基于集群以及基于需求 聚类的测试用例优先级技术。
可见,针对敏捷测试关键技术,众多学者进行了 研究并提出了不同的回归测试用例选择以及 TCP 技术。 与此同时,基于故障检测能力、代码覆盖标准、持续集 成等方面已提出不同的敏捷回归测试用例排序与选择技 术,来减少冗余故障和不相关测试用例,有效提高了故 障检测能力。然而,现有技术在故障检测能力、代码覆 盖率、故障率、多标准、无关测试用例等方面仍然有待 进一步提升。
3 结论
目前敏捷回归测试技术变得越来越重要。在敏捷项 目中使用回归测试时,项目团队也会面临诸多问题,如 目前现有的技术在对测试用例进行选择与排序时,往往 依赖于测试用例对代码的覆盖情况、基于测试用例的历 史测试信息,而往往忽略带缺陷的测试用例,再如敏捷 回归测试的自动化技术面临的风险问题等。敏捷开发环 境中,由于新功能的逐渐增加,测试软件新版本必然会 不断生成新的测试用例。为此,本文关注了敏捷回归测 试的基本概念与敏捷方法中关键的优化技术,在考虑降低测试时间与测试成本方面,测试用例的排序技术与优 先级技术至关重要。由于敏捷回归测试过程耗时,因此 更容易自动化和实现回归测试,从而节省时间、降低测 试成本,也提高了测试覆盖率。本文根据敏捷开发环境 特点,研究了回归测试用例选择及排序技术目前的发展 现状,分析并研究了敏捷回归测试关键技术,为提高软 件质量奠定基础,为敏捷回归测试提供借鉴,今后将进 一步研究如何提高敏捷开发效率。
参考文献
[1] KANDIL P,MOUSSA S,BADR N.Cluster-based Test Cases Prioritization and Selection Technique for Agile Regression Testing[J].Journal of Software:Evolution and Process, 2017.29(6):1-19.
[2] 刘先博,沈小仑.面向敏捷开发的软件测试技术[J].电脑知识 与技术,2015.11(18):70-72.
[3] 马宝英,杨禹军,范书平,等.智能优化算法在回归测试关键技 术中的应用现状研究[J].软件,2020.41(1):18-20.
[4] GLIGORIC M,ELOUSSI L,MARINOV D.Practical Regression Test Selection with Dynamic File Dependencies [C]//Proceedings of the 2015 International Symposium on Software Testing and Analysis,2015:211-222.
[5] LIU J M,LIU Y H,FENG F Z,et a1.The Optimization Selection of Tests Based on Greedy Algorithm [J].Journal of China Ordnance,2014.35(12):2109-2116.
[6] LIU J M,LIU Y H,FENG F Z,et al.Research on System Test Selection Based on Improved Genetic Algorithm[J]. Measurement and ControlTechnology. 2019.38(4):59-63. [7] YE W,LU X Y,LÜ X F,et al.Optimized Test Selection Method Considering Critical Faults.Systems Engineering and Electronics,2019.41(7):1583-1589.
[8] TAHAT L,KOREL B,KOUTSOGIANNAKIS G,et al.State- based Models in Regression test suite prioritization[J]. Software Quality Journal,2017.25:703-742.
[9] MAHDIEH M,MIRIAN-HOSSEINABADI S H,ETEMADI K,et al.Incorporating Fault-proneness Estimations Into Coverage-based Test Case Prioritization Methods[J]. Information and Software Technology,2020.121:1-12.
[10] FANG C,CHEN Z,WU K,et al.Similarity-based Test Case Prioritization Using Ordered Sequences of Program Entities[J].Software Quality Journal,2014.22:335-361.
[11] 张娜, 姚澜, 包晓安,等.多目标优化的测试用例优先级在线 调整策略[J].软件学报,2015.26(10):2451-2464.
[12] TYAGI M,MALHOTRA S.An Approach for Test Case Prioritization Based on Three Factors[J].International Journal of Information Technology and Computer Science, 2015.7(4):79-86.
[13] 王晓琳,曾红卫,林玮玮.敏捷开发环境中的回归测试优化 技术[J].计算机学报,2019.42(10):2323-2338.
[14] Anita Arora,Naresh Chauhan.A Regression Test Selection Technique by Optimizing User Stories in an, Agile Environment[C]//IEEE International Advance Computing Conference.IEEE,2014:1454-1458.
[15] 张丽,戴丽丽,杜兰.基于敏捷开发模式的回归测试用例排 序技术[J].微电子学与计算机,2020.37(12):48-52.
[16] ALI S,HAFEEZ Y,HUSSAIN S,et al.Enhanced Regression Testing Technique for Agile Software Development and Continuous Integration Strategies[J]. Software Quality Journal,2020.28(2):397-423.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/62200.html