一种基于测试异味的不稳定测试根因分类方法

文档序号:31794914发布日期:2022-10-14 17:05阅读:40来源:国知局
一种基于测试异味的不稳定测试根因分类方法

1.本发明涉及软件测试技术,具体为一种基于测试异味的不稳定测试根因分类方法。


背景技术:

2.不稳定测试(flaky tests)是指使用相同代码运行测试,结果时而通过,时而失败。它们的问题在于:(1)可能会隐藏真正的缺陷,并且由于其不稳定性而难以再现。(2)增加了维护成本,因为开发人员可能不得不花费大量时间来调试不是真正的缺陷,而只是不稳定缺陷。更重要的是,从心理学的角度来看,不稳定测试会减少开发人员对测试的信心,可能导致真正的测试失败被忽略。
3.目前还不存在对不稳定测试的根本原因进行自动识别的技术。对于flaky tests原因的分析还是依靠人工完成,非常耗费人力。这导致很多企业没有足够的精力去维护和解决不稳定测试问题,反过来又导致了测试的不稳定性和维护成本的增加。据此本发明公开了一种基于测试异味的不稳定测试根因分类方法。


技术实现要素:

4.本发明的目的在于提供一种基于测试异味的不稳定测试根因分类方法,以解决上述背景技术中提出的问题。
5.为了解决上述技术问题,本发明提供如下技术方案:一种基于测试异味的不稳定测试根因分类方法,其特征在于,所述方法如下:
6.步骤1:将执行失败的测试用例重新运行指定次数,若出现至少有一次执行结果与之前不同的情况,则判定该测试用例为不稳定测试;
7.步骤2:针对筛选出来的不稳定测试,使用现有的技术检测其存在哪些测试异味;
8.步骤3:将测试异味检测结果输入到分类器算法中,分类器会预测导致该不稳定测试的根本原因。
9.不稳定测试筛选过程中,对执行结果为失败的测试用例重跑指定的阈值次数,在阈值次数内,若出现执行通过的情况,说明该用例为不稳定测试,阈值次数根据项目的具体要求来确定。
10.测试异味检测过程中,使用现有的测试异味检测工具对筛选出来的不稳定测试进行检测,主要检测的异味有:资源乐观、间接测试、测试运行时冲突、休眠测试这4种测试异味。
11.不稳定测试根因分类过程中,将不稳定测试的根本原因划分为5类,分别是:测试运行环境类、异步等待类,并发类,测试顺序依赖类和其他。当测试异味检测结果输入到分类器算法后,分类器会分别预测该不稳定测试的根因是否与测试运行环境类有关,是否与异步等待类有关,是否与并发类有关,是否与测试顺序依赖类有关,若都不是,则将其根本原因分为其他类别。
12.本发明所达到的有益效果在于:提供了一种自动化的不稳定测试根因分析方法。它利用测试异味和不稳定测试根因之间存在的强相关性进行预测,能够迅速并准确的预测出导致某个不稳定测试的根本原因有哪些类别。与人工分析相比,该方法能够明显节省不稳定测试根因分析所消耗的时间和人力,同时有着较高的准确度,因为不稳定测试根因预测结果有测试异味检测结果来支撑。该方法能够为企业提供一种快速有效识别不稳定测试根本原因的能力,有助于消除不稳定测试,从而帮助企业优化测试用例质量。
附图说明
13.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,下面将结合服务对本发明作优选的详细描述,其中:
14.图1是本发明一种基于测试异味的不稳定测试根因分类方法的的流程图;
15.图2是本发明一种基于测试异味的不稳定测试根因分类方法的示意图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,本领域技术人员可由本说明书所描述的内容轻易地了解本发明的其他优点与功效,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.本文使用术语“测试异味”,被定义为测试代码中的不良编程实践(例如测试用例是如何组织、实现和相互交互的),它表明测试源代码中潜在的设计问题。
18.本文使用术语“资源乐观”,是一种测试异味,是指对外部资源的状态做出乐观假设的测试用例,这可能会导致不稳定的测试结果。
19.本文使用术语“间接测试”,是一种测试异味,是指使用来自其他类的方法去测试被测类。
20.本文使用术语“测试运行时冲突”,是一种测试异味,当测试方法分配的资源也被其他测试方法使用时,就会产生不稳定的情况。
21.本文使用术语“休眠测试”,是一种测试异味,在测试用例中显式使线程休眠时发生,它可能会导致不稳定测试的结果。
22.本文使用术语“不稳定测试”,是指对相同的代码执行测试,每次的执行结果都可能不同的情况,导致不稳定测试的原因有很多,可能有测试用例本身,测试用例运行的框架或测试系统本身,测试系统所依赖的环境等。
23.本文使用术语“测试运行环境类”,是导致不稳定测试根因的一个分类,主要包括网络、io和资源泄漏问题,其中网络问题主要是指测试执行结果会受到网络性能的影响,io问题是指测试方法没有正确管理外部资源,而资源泄漏指的是测试方法没有正确地获取或释放其所使用的资源。
24.本文使用术语“异步等待类”,是导致不稳定测试根因的一个分类,例如一个测试进行了一次异步调用,但是没有等待异步调用的结果。
25.本文使用术语“并发类”,是导致不稳定测试根因的一个分类,例如测试用中存在
不同的线程以不可避免的方式相互作用。
26.本文使用术语“测试顺序依赖类”,是导致不稳定测试根因的一个分类,主要指的是测试结果会受到测试用例执行顺序的影响。
27.本文使用术语“testq”,是一个现有的测试异味检测工具,该工具为开发人员提供了一个可视化界面来,以探索测试套件并能够检测12种测试异味。
28.本文使用术语“c4.5算法”,是由ross quinlan开发的用于产生决策树的算法,用于实现通过一系列规则对数据进行分类的过程。该算法是对ross quinlan之前开发的id3算法的一个扩展。c4.5算法产生的决策树可以被用作分类目的,因此该算法也可以用于统计分类。c4.5算法与id3算法一样使用了信息熵的概念,并和id3一样通过学习数据来建立决策树。
29.实施例1:
30.本实施例的技术方案适用于从失败用例中找到不稳定测试,并预测这些不稳定测试的根本原因的情况,该方法可以由测试平台或测试系统来执行或实现,具体包括如下步骤:
31.步骤110、将执行失败的测试用例重新运行指定次数,若出现执行结果与之前不同的情况,则判定该测试用例为不稳定测试。
32.其中,执行失败的测试用例是指执行测试用例集后未通过的用例,可能是由于代码存在缺陷,也可能是不稳定测试导致的;重跑是指在代码和环境都不变的情况下,重新运行该测试用例。
33.本实施例中,当系统测试完成,出现部分用例执行失败后,可以将重跑的阈值设置为10,即将所有失败用例重新运行10次,在这一过程中,如果出现测试用例结果为通过,则可以认定它为不稳定测试用例。
34.步骤120、使用现有的测试异味检测工具去检测该不稳定测试存在哪些测试异味。
35.其中,测试异味检测工具是现有的技术,主要通过扫描测试代码,来识别一下不良测试编程实践;测试异味在在这里只关注资源乐观、间接测试、测试运行时冲突、休眠测试这4种。
36.本实施例中,使用现有的测试异味检测工具(优先的使用testq)对系统代码进行检测,识别出测试代码中存在的测试异味,然后,可以识别出筛选出来的不稳定测试存在哪些测试异味。
37.步骤130、将测试异味检测结果输入到分类器算法中,分类器预测该不稳定测试的根本原因。
38.其中,测试异味检测结果是指对不稳定测试使用相应的测试异味检测工具检测后的结果,可能会同时包含多种测试异味;分类器算法是指机器学习种的一种决策树分类算法。
39.本实施例中,对于每一个不稳定测试,我们将它所包含的测试异味输入到预测器当中,优选的,该预测器使用c4.5决策树分类算法。分别预测不稳定测试的根因是否与测试运行环境类有关,是否与异步等待类有关,是否与并发类有关,是否与测试顺序依赖类有关。若都不是,则预测为其他类。
40.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,
本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1