没有合适的资源?快使用搜索试试~ 我知道了~
软件故障检测和定位的多目标优化方法
沙特国王大学学报软件故障Neha Guptaa,Mr. Chang,Arun Sharmaa,Manoj Kumar PachariyabaIndira Gandhi Delhi Technical University for Women,New Delhi 110006,IndiabMakhanlal Chaturvedi国立新闻与传播大学计算机科学与应用系,印度博帕尔462011阿提奇莱因福奥文章历史记录:收到2019年2020年1月17日修订2020年1月19日接受2020年1月25日在线提供保留字:故障检测多目标优化故障定位代码覆盖率突变分区测试套件缩减A B S T R A C T软件测试的目的是找出错误。如果存在故障,则需要对其进行检测、定位并解决。故障检测和定位是两个相邻的活动,因此很难将它们结合起来。故障检测需要有助于早期检测故障的测试信息,而故障定位需要有助于准确定位故障的信息但是测试信息是两个活动都需要的一个共同点该前提条件有助于有效地结合故障检测和定位。在这项研究工作中,一个代码和突变覆盖率为基础的多目标方法已被提出来产生一个最小化的测试套件具有检测和定位故障的能力对于测试用例的优化,NSGA-II算法已被使用。对Defects 4j库的测试结果表明,该方法能够产生最小化的测试集,其故障检测率为95.16%,故障定位得分与完整测试集的故障定位得分相当测试集大小的平均减少百分比为78%,这是一个很好的减少百分比与给定的故障检测和定位分数。©2020作者由爱思唯尔公司出版代表沙特国王大学这是一个开放的访问CC BY-NC-ND许可证下的文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。1. 介绍软件开发由多个阶段组成,其中测试和调试是最关键的阶段,因为开发人员要开发出无错误的软件是非常困难的。编码完成后,对软件进行了测试,目的是检测故障.如果检测到故障,则进行调试以定位故障的主要原因,以便消除它们。因此,检测和定位故障是软件开发中不可缺少的两个阶段。故障检测是指对被测系统进行故障检测,而故障定位是指对引起故障的可疑线路进行定位。由于故障检测和定位的重要性,Boehm(1984)建议软件总开发时间的大约50%用于测试,25%用于*通讯作者。电子邮件地址:neha005phd0115@igdtuw.ac.in(N. Gupta)。沙特国王大学负责同行审查调试.故障检测是在两种情况下进行的:软件开发和现有软件中的更改。为了处理现有软件的修改,进行了回归测试。为了最小化回归测试的工作量,测试用例可以被最小化、选择或优先化。此外,优化技术还可以用于基于所考虑的充分性标准(如代码覆盖率、突变覆盖率、故障历史覆盖率、执行时间等)来最小化测试用例。2014; Pradhan等人,2016;Yoo 和 Harman , 2010; Turner 等 人 , 2016; Zheng 等 人 , 2016;Marchetto等人,2015; Parejo等人,2016年,Gupta等人,2019;Bian等人,2017)已被提出用于故障检测,而回归测试中使用了优化技术,如多样性遗传算法,NSGA-II,MOPSO,和声搜索等。另一方面,故障定位需要携带最大诊断信息的测试用例(Gonzalez-Sanchez 等 人 , 2011 年 ) 。 基 于 语 句 ( SBFL ) 和 基 于 突 变 体(MBFL)的技术被广泛用于定位故障。在SBFL技术中,每一行的可疑性是使用测试用例的通过/失败和语句覆盖信息来计算的,而在MBFL技术中,通过/失败和被杀死的突变覆盖信息被使用。与SBFL技术相比,MBFL技术具有更好的故障定位精度(Papadakis和Le Traon,2015年;https://doi.org/10.1016/j.jksuci.2020.01.0091319-1578/©2020作者。由爱思唯尔公司出版代表沙特国王大学这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。制作和主办:Elsevier可在ScienceDirect上获得目录列表沙特国王大学学报杂志首页:www.sciencedirect.com北纬2898号Gupta等人 /沙特国王大学学报-计算机与信息科学34(2022)2897- 2909Moon等人,2014; Debroy和Wong,2010; Hong等人,2015年)。对于故障定位,如果所有测试用例都用于计算代码的可疑值,则需要大量的工作。因此,优化技术可以与故障定位技术一起使用,以减少所需的工作量。在减少用于故障定位的测试用例时,必须谨慎,因为测试减少可能会删除携带最大诊断信息的测试用例。 许多方法,例如(Baudry和 Fleurey,2006; Hao 等人 , 2010; Dandan 等人 ,2013; Xuan 和Monperrus , 2014; Perez 等 人 , 2017; Wang 等 人 , 2017 ) 和(Debroy等人,2010年; Wong等人,2012)在文献中可用,这有助于获得适合于故障定位的简化详细讨论见第2.3.1。故障的检测和定位是后续活动,即它们一个接一个地执行首先,故障检测的帮助下,失败的测试用例,其次是他们的本地化使用的通过和失败的测试用例的信息,以便调试可以完成。这两种活动都很耗时,为了节省时间,两种活动都使用了优化技术,但都是单独使用的。这是因为用于故障检测的策略对故障定位没有帮助,反之亦然。 Gonzalez已经在检测故障中使用了针对故障定位优先化的测试用例(Gonzalez-Sanchez等人,2011),反之亦然(Gonzalez-Sanchez等人, 2012年)。它被发现是没有帮助的,因为优先用于故障检测的测试用例没有足够的诊断信息,从而不能给出良好的因此,本地化的故障需要的策略,保持最大的不同信息的测试用例。测试用例缩减对每个考虑的活动也有Yu等人(2008)已经得出结论,与故障检测相比,测试缩减对故障定位的影响更大目前的限制是,测试用例的优化是针对故障检测和定位,但单独进行的。如果这两个活动的优化过程是一体化的,那么就需要更少的努力。这种集成是困难的,因为它们需要不同的测试信息。故障检测需要有助于早期检测故障的信息,而故障定位需要以测试用例的通过/失败信息的形式的最大诊断信息。在故障检测之后,可以获得通过/失败的信息因此,在回归测试完成之前,它将不可用此外,以前的版本,通过/失败信息也将没有帮助,因为以前版本的故障将被删除,下一个版本将有一些其他的故障。用于故障定位的测试用例集最小化的大多数技术是在线技术,即它们需要测试用例的通过/失败细节。因此,由于这个原因,集成优化测试用例的故障检测和定位是困难的。这个问题的解决方案是使用离线技术(Baudry和Fleurey,2006;Hao等人,2010; Wang等人,2017;Vidács等人,2014)的故障定位与故障检测技术相结合。这些技术不需要测试用例的通过这些技术的组合得到的精简测试集,将在回归测试之前可用,因此它可能有助于故障检测和定位。由于测试用例的最小化是为每个任务完成的,因此可以提出一种组合方法,该方法可以最小化用于检测和定位故障的测试用例。Gupta et al.(2019)还建议,如果测试是以支持调试的方式进行的,那么这两项活动所需的工作量就更少很少有研究人员朝这个方向努力。Vidács et al.(2014)的工作就是其中之一。他们提出了一种组合的方法,用于最小化检测和定位故障的测试用例。在他们的方法中,测试用例已经基于代码覆盖率和代码分区数量的最大化而被最小化。在为每个检测和定位故障创建单独的测试用例集之后,这样做是为了得到适合于两者的测试用例,而不是单独的活动。类似地,Geng等人,2016使用了所有测试用例的覆盖和分区信息,以最大限度地减少测试用例的数量。他们使用NSGA-II算法来最大化代码覆盖率和代码分区,而不是通过联合测试集来创建组合测试集。NSGA-II的最终精简测试集能够有效地检测和定位故障。 Yoo等人,2013首先根据故障检测对测试用例进行优先级排序,一旦遇到故障检测测试用例,测试用例就会被优先级排序,以便更好地定位故障。所有这些工作都是为了将故障检测和定位集成在一起。一个更重要的方面是选择充分性标准,这可能有助于检测和定位故障。可能应当注意,在文献中已经将诸如代码、要求、功能性和突变覆盖的适当性标准用于故障检测(Panichella等人,2014; Pradhan等人,2016; Yoo和Harman,2010;Turner等人,2016; Zheng等人,2016; Marchetto等人,2015; Parejo等人,2016; Gupta等人,2019; Bian等人, 2017年)。类似地,可以注意到,选择最大化语句分区数量的测试用例有助于准确的故障定位(Hao等人,2010; Vidács等人,2014; Geng等人,2016年)。因此,分区是帮助更好地定位故障的重要概念之一。中更详细地讨论了该问题,第2.本文提出了一种基于语句覆盖、分支覆盖和多样性变异充分性准则(D-criterion)的测试集最小化方法,用于故障检测和定位。为了一起优化这三个标准,NSGA-II算法(Deb等人,(2002)已使用。在这三个准则中,语句和分支覆盖有助于检测故障,D-准则有助于检测和定位故障。它是由Shin等人(2017)提出的,并用于故障检测。结果表明,相对于传统的突变体充分性准则(K准则),D准则更好。Gupta等人(2019)使用D准则并提出了DAM-FL技术来定位故障。对于Defects4j存储库的大多数故障,其表现优于或等同于称为Metallaxis的基于K标准的技术(Papadakis和Le Traon,2015)(Just等人,2014年)。D-准则之所以能很好地检测和定位故障,是因为它是基于将突变体划分为可区分集的概念。分段是用于故障定位的离线技术之一。它已被广泛用于语句,但很少用于突变体。由于MBFL技术更好,如果突变体的分区也完成,那么它将有助于更好的故障定位。所提出的方法的实证评估已经完成了四个项目的Defects4j库的基础上两个指标:故障检测和故障定位分数的百分比。对NSGA-II算法给出的基于语句、分支和D-准则覆盖的完整测试集和精简测试集,计算并比较了这两个度量结果表明,该方法能够有效地减少回归测试中使用的测试用例数量,并能定位故障。本实证研究解决了以下研究问题:RQ 1:与使用完整的测试集相比,所提出的故障检测技术的有效性有多大RQ 2:与使用完整的测试套件相比,所提出的故障定位技术的有效性有多大RQ 3:所提出的技术所需的努力是否值得获得的结果?第二部分介绍了本文的研究背景和相关工作.第3讨论了拟议方法。在第4实验工作中-N%¼N. Gupta等人 /沙特国王大学学报-计算机与信息科学34(2022)2897-29092899讨论了流程和要求。第5、6、7、8节分别讨论了研究结果、对效度的威胁、相关的未来工作和结论。2. 背景2.1. 测试套最小化执行一个完整的测试套件是一项乏味的工作。因此,已经进行了大量研究以减少测试所需的工作。测试工作量可以通过选择、最小化或优先化测试用例来减少测试用例最小化有助于得到一个精简的测试套件。 它有助于测试软件中所做的更改不会影响软件的未修改部分(Gupta等人,2019年)。在本文中,目的是集成检测和本地化的故障和测试套件最小化都考虑活动。因此,它可以作为一个链接,期望更高的精度和更少的工作量。最广泛使用的基于覆盖率的断层定位技术是SBFL和MBFL技术。这些技术已经在第1中讨论过了。Ochiai(Abreu等人,2009)、狼蛛(Jones和Harrold,2005)、Op2(Naish等人, 2011)、Dstar(Wong等人, 2013)是一些最广泛使用的SBFL技术。MBFL技术比SBFL技术表现得更好,因为突变体可以表现得像真正的故障,并且基于通过或失败测试用例的突变体的杀死信息来计算可疑性。一些被广泛研究的MBFL技术是MUSE (Parejo 等人, 2016 ),博物馆(卞等人, 2017 )、Metalxis (Papadakis 和Le Traon ,2015)以及Debroy和Wong( Debroy 和 Wong , 2010 )。 在少数 MBFL 技术中, 还集成了Tarantula和Ochiai技术的可疑度计算公式其中,Ochiai技术已被Abreu等评价。2007年,最可靠的。因此,为了计算MBFL技术中突变体的可疑性,Eq.(2)已使用。两个都是怀疑M失败的测试2.2. 故障检测软件开发完成后,测试人员的主要目的是发现软件中的缺陷。对于故障检测,执行测试如果任何测试失败,则该程序被确认为存在bug。如果一个测试套件包含更多的故障查找测试,那么就可以说这个测试套件在故障检测方面质量很好。但是,执行所有的测试用例来发现错误是一个不可行的解决方案。为此,测试套件最小化的方法,旨在检测故障与较少的测试用例。Yoo和Harman(2010)基于覆盖率和执行时间优化了测试用例。使用所提出的方法,已经为flex、grep、gzipped和space项目做出了正常的CPU处理需要大量的时间,而工作的优化算法,因此Yoo等人。(2013)已经使用图形处理单元,通过使用TAEA和NSGA-II算法优化需求覆盖率和计算成本来最小化测试套件。Ahmed等人,(2015)使用组合和布谷鸟搜索算法减少了基于功能覆盖的测试用例。所提出的技术进行优于遗传和禁忌搜索算法。 Zheng等人,2016年使用MOEA/D和NSGA-II算法优化了执行成本和MC/DC覆盖率。在所有算法中,MOEA/D表现最好。Turner等人也为mockito项目开发了一种测试套件最小化方法,(2016年)。他们通过使用NSGA-II算法优化代码覆盖率和执行时间他们减少了基于执行时间的测试用例的数量。因此,可以得出结论,代码覆盖率标准已被广泛用于减少测试用例的优化技术。在减少测试集的大小之后,需要验证最终剩余的测试用例的故障检测能力。用于故障检测验证的最广泛使用的度量是检测到的故障的百分比(Turner等人,2016; Yoo等人,2013; Ahmed等人,2015年)。它用于使用等式中的公式计算最小化测试套件检测到的故障百分比。(一).主要目的是提高检测到的故障的百分比。ðÞ¼pffiTffiffioffiffiffitffiaffiffiffilffifffiffiaffiffiiffiffilffieffiffidffiffiffitffiffieffiffisffiffitffiffifficffiffiaffiffisffiffieffiffiffisffiffiωffiffiffiðffiFffiffiffiaffiffiiffiffilffieffiffidffiffiffiðffiffimffiffiffiffiÞffiffiþffiffiffiffiPffiffiffiaffiffisffiffisffiffieffiffidffiffiffiðffiffimffiffiffiffiÞffiffiÞffiffið2Þ其中,m代表突变体,Failed(m)代表在SUT正常执行时失败并杀死所考虑突变体的测试数量。Passed(m)表示在SUT正常执行时通过但杀死所考虑的突变体的测试数。每一行代码的可疑值是通过取属于所考虑的行的所有突变体的可疑值的最高值来计算的。根据可疑度值,为线路分配等级(r)。等级1,被分配给具有最大可疑值的行,它将是第一个被检查的行。如果两条线具有相同的可疑值,则它们具有相同的等级。为了通过示例进行说明,可以参考Gupta等人的工作。(2019)。如果技术足够好,那么通过使用它,故障线路应该在要分析的线路列表的顶部。为了验证所提出的方法的故障定位能力,使用了Jones和Harrold(2005)使用的故障定位(FL)分数它在Eq中定义(三)、N表示SUT中语句的总数,r是故障定位技术为故障线路提供的秩需要更高的FL评分FLScore<$N-rω10032.3.1. 故障定位的最小化方法使用所有测试用例的执行数据进行故障定位将是耗时的。因此,许多研究人员一直致力于优化测试用例以定位故障。Baudry和Fleurey(2006)提出了一种诊断标准的检验方法,该方法基于减小所覆盖的动态基本块的大小。与传统的基于覆盖率的故障诊断技术相比,该方法具有更好的性能。Hao等人(2010)使用了分区或区分语句的概念,以获得适用于故障定位的简化测试套件。与未充分划分的测试用例集相比,该技术产生的精简测试用例集提供了更好的故障定位结果故障检测检测到的故障总数故障总数2.3. 故障定位的最小化方法和有效性度量ð1ÞGonzalez-Sanchez等人(2011)提出了RAPTOR方法,该方法对测试用例进行优先级排序,以更好地定位故障。它是基于歧义组的减少,并试图选择测试用例,提供一个覆盖和非覆盖测试用例之间的平衡。它也不需要测试用例的通过和失败信息,因此它可以在故障检测之前使用。使用覆盖矩阵和路径向量信息的两步约简方法,在检测到故障之后,进行调试以消除这些故障。为了消除这些故障,由Dandan et al. (2013年)。它需要完整的测试执行信息进行还原,因此只能在北纬2900度Gupta等人 /沙特国王大学学报-计算机与信息科学34(2022)2897- 2909已检测到故障与所提出的技术,他们能够减少48%的测试套件的大小与改进的故障定位的有效性狼蛛技术。Xuan和Monperrus(2014)提出了一种基于测试用例切片的技术,用于减少用于故障定位的测试套件。首先,他们已经原子化了失败测试用例的单个断言测试用例,然后使用切片,删除了所有不相关的语句。实验结果表明,纯化后的测试用例对SUT的大部分故障都是有效的。(Perez等人,2017)提出了一种名为DDU的方法。它基于密度-多样性-唯一性原则。他们的主要思想是,代码的组成部分应该经常以不同的组合形式出现,并且应该很好地区分开来。实验表明,基于DDU的测试集比基于分支覆盖的测试集提高了34%的诊断准确率。在所有这些研究工作中,使用了第1节中讨论的在线或离线技术。划分是一种离线测试技术,它不需要测试用例的失败/通过信息,同时最小化测试套件。它只需要覆盖率信息,这些信息通常是在创建测试用例时收集的。它也被用于共同驱动的方法(Vidács等人,2014; Geng等人,2016年)用于故障检测和定位。语句划分的概念已被广泛用于故障定位。但是,突变划分的概念很少用于故障定位。在后面的章节中,我们将详细讨论这些概念。2.4. 分区划分的概念是在集合论的等价类的思想上发展起来的(Enderton,1977)。 在同一类中的元素被认为是等价的,即T-不可区分的,而属于不同类的元素被称为彼此可区分的。在文献中,有两种类型的分区:语句分区和突变分区。语句划分意味着根据代码语句的覆盖信息将其划分为不同的等价类/分区。它有助于区分语句,因此它们将被分配不同的可疑值。各种研究工作,其中语句分区有助于更好的故障定位(Hao等人,2010; Vidács等人,2014;Geng等人,2016年)。因为这项工作的主要焦点是突变体划分。所以,只有这一点2.4.1. 突变体分配突变体也可以通过基于测试用例的kill信息将它们划分为等价类来彼此区分。Shin等人已经完成了一项这样的工作(Shin例如,2017年7月27日),他们提出了一种多样性感知突变充分性标准,该标准包含了传统的K标准。各种研究工作可用于减少突变体集,例如Ma和Kim(2016)May已经完成了重叠突变体的聚类。(Wong等人,1994年)和Offutt等(Offutt等, 1996年)已经致力于突变算子,以创建较少但必要的突变体。包含突变体的概念由(Hao et al.,2010年),放弃多余的突变体。但是区分突变体的概念是基于划分的。它可以区分现有的突变体,并且能够产生行为多样的突变体,并且可以覆盖代码的不同部分。由于它是基于分区的,因此与传统的K准则相比,它在两个故障检测方面都表现出色(Shin等人,2017年7月27日)和定位(Gupta等人,2019年5月)。Shin等人使用的分区概念(Shin等人,2017年7月27日)已在表1中以突变体覆盖率信息为例进行了解释。由consid创建的突变分区表2中给出了测试套件。一个测试套件,可以创建大量的分区的突变体是可取的。在表2中,可以看出,测试套件{T1,T2和T3}可以根据表1中的kill信息创建最大数量的可能分区。属于同一分区的突变体被称为彼此没有区别。基于划分原则,作者定义了d-得分,它告诉所考虑的测试套件区分的突变体的数量。根据表2,可以观察到,随着测试套件创建的分区数量的增加,D分数也会增加。对于最终测试套件{T1、T2和T3},已经创建了最大可能数量的分区,因此D得分值为1。第3详细讨论了D分数的公式D-评分值范围为[02.5. 多目标优化多目标算法在软件测试中得到了广泛的应用,特别是在故障检测阶段优化算法也被用于优化故障定位的测试用例。因此,他们可能是有用的,当提出一个组合的方法来减少测试套件的基础上,各种适当的标准。文献中可用的各种MOO算法有MO-PSO,NSGA-II和NSGA-III,MO-BAT等。选择RITHM进行优化是因为它在软件测试领域得到了广泛的应用并给出了良好的结果。3. 该方法在目前的工作中,已经提出了一个集成的方法来最小化测试用例一起故障检测和定位。基于状态覆盖、分支覆盖和多样性变异充分性准则(D-criterion)实现了测试用例的最小化语句覆盖率和分支覆盖率将有助于检测故障,D-准则将有助于这两个考虑的活动。在目前的工作中,已经考虑了各种适当性标准,以便SUT的各种要素可以一起涵盖。这三个充分性标准可以一起优化,因为它们都需要关于测试用例的信息。可以注意到,语句和分支覆盖需要关于测试套件覆盖的语句和分支的信息,而D-准则需要与测试套件杀死的突变体相关的信息。MBFL技术比SBFL技术表现得更好(Papadakis和Le Traon,2015年8月),因为在突变测试中,可以创建大量当前代码中不存在的错误。因此,测试人员可以了解可能发生的故障类型以及能够检测这些故障的测试用例。如果实际故障和种子故障具有相似的行为,则实际未定位的故障可能由于种子突变故障而被定位。选择D-准则作为优化的充分性准则之一是因为它是基于突变测试的,另一个原因是它选择的测试用例能够划分和区分突变体。它有助于涵盖程序的各种行为。语句划分已被广泛用于定位故障以及集成方法(Vidács等人,2014; Geng等人,2016年)用于检测和定位故障。但是突变体划分很少用于故障定位。因此,与此提出的方法,作者试图评估如何结合语句覆盖和突变分区将检测和定位故障。NSGA-II多目标算法已被用于通过最大化以下三个目标来产生较小的测试套件:¼N. Gupta等人 /沙特国王大学学报-计算机与信息科学34(2022)2897-29092901表1通过测试用例杀死突变体的示例。测试M1M2M3M4T11111T20101T30011表2由测试套件创建的突变分区。测试套件未区分突变体集优秀(D分){T1}{m0},{m1,m2,m3,m4}2/5{T1,T2}{m0},{m1,m3},{m2,m4}3/5{T1、T2、T3}{m0}、{m1}、{m3}、{m2}、{m4}5/5目标1:D评分/D标准最大化通过使用多样性感知突变适当性标准计算D-评分(Shin等人,2017年)。“它是当所有突变体彼此区分时,由测试套件产生的唯一d-向量的数量超过唯一d-向量的最大数量”。D-得分最大化的目标是使用最少的测试用例来获得最大的D-得分值。D-评分值范围为[0-1]。因此,D分数的最大期望值为1.对于原始程序p。的测试套件TS和突变体集合M,使用以下等式计算D得分(四)、.ndtTS;p;mtjm2M0o.0438测试套件,则染色体大小将是位串中的438位。人口规模:人口规模告诉一个人口中的解决方案或父母的数量。Coello等人(Coello等人,2007)已经得出结论,群体大小应该大于染色体的长度,因为如果反之亦然,则算法将不会适当地收敛并且不会给出最优结果。因此,群体大小是根据染色体的大小设定的初始种群:为了初始化种群与不同的抽样程序,斜坡一半和一半的初始化方法已被使用。生成/评估的数量:生成的最大数量取决于所考虑的项目。交叉功能:半均匀交叉已被用作交叉功能。● 变异函数:使用概率为pm= 1/n的位翻转变异函数对解进行变异这里n是染色体的大小停止标准:使用了两个析取中的停止标准,以先达到者作为停止标准。首先是评价的数量另一个是,对于每个项目版本,已经为所有适应度函数/目标设置了阈值D语句和分支覆盖率的D等于所考虑版本的完整测试套件所达到的语句和分支覆盖率百分比D-评分的D已设置为1,因为最大可实现D-评分值为1。当获得的值之间存在差异时,D-评分 ≥100;M;p≥100O. M.;其中M0¼M[fpogð4Þ阈值小于0.001%。4. 实验工作流程和要求目标2:最大限度地扩大分支机构覆盖面分支覆盖最大化的目标是找到最大化分支覆盖价值的精简测试集。分支覆盖意味着程序中每个控制结构的每个分支都应该由所考虑的测试套件执行称为分支覆盖的(5)度量子集测试集T覆盖分支的百分比。b表示程序P中被测试套件T覆盖的分支,|P|表示程序P中分支的总数。在本节中,讨论了执行所提出的方法所采用的工作流程和执行实验所需的工件。4.1. 工作流用于进行实验的工作流程已在图1中示出。 Defects4j仓库的第一个项目(Just例如, 2014年 , 他被调查以收集信息。Branchcoverjfb2Pjb由Tgj覆盖然后覆盖工具Coberturahttp://cobertura.sourceforge.net/5¼jP jð Þ目标3:报表覆盖面最大化语句覆盖最大化的目标是寻找一个能够最大化语句覆盖价值的精简测试集。状态覆盖度量(SC)定义在等式(1)中。(6),它度量子集测试集T. s表示程序M的语句,|M|表示程序M中的语句数。已用于计算语句和分支覆盖率,每个测试案例为了创建突变体并分析其杀伤信息,使用了主要工具(Just,2014)。然后,多样性意识的突变充分性准则已被应用到划分和区分突变。所考虑的版本的相关测试用例作为NSGA-II算法的输入利用NSGA-Ⅱ算法生成测试用例子集。然后,这些子集被评估为语句、分支和D分数覆盖。在每次评估中,它试图获得一个测试套件,考虑的目标。最终简化测试套件,来自SCjfs2Mjs由TgjjM jð6ÞNSGA-II算法,然后评估故障检测和故障定位。为了实现NSGA-II算法,MOEA算法的参数设置对获得最优结果起着重要的作用。因此,采用以下设置来获得最佳解决方案:输入:属于项目的考虑版本的所有测试用例都以位串的形式作为NSGA-II算法的输入。位串的大小等于原始测试套件的大小。输出:以位串形式的测试套件字符串,可以最大化上述考虑的目标。染色体大小:染色体大小将取决于整个相关测试套件的大小例如,图1总共具有已使用http://moeaframework.org/框架4.2. 研究对象为了验证所提出的方法,使用了四个项目,即图表,lang,时间和Defects4j存储库的关闭。在Defects4j版本1.5.0中有六个项目,但在目前的工作中只使用了四个,因为从Defects4j存储库中检索每个项目版本的单个测试用例覆盖信息是一个耗时的过程。所提出的方法是基于突变测试,这是昂贵的,也提出了相同的技术用于回归测试,因此只有相关的(修改/●●●●●●●●北纬2902号Gupta等人 /沙特国王大学学报-计算机与信息科学34(2022)2897- 2909Fig. 1. 用于实现所提出方法的工作流。改变和加载)项目的类。修改的类是那些有错误并已被纠正的类加载类是在执行触发测试时加载的类触发测试是那些有助于检测故障的测试可以注意到,Defects4j中的所有项目都有不同的版本。因此,所有考虑的项目的版本已经分析。在没有数据的情况下,这些版本被删除。因此,删除了3个版本,一个来自图表,两个来自4.3. 测试套件在Defects4j中,每个项目版本都有一组与之相关的测试,称为开发人员编写的测试。在开发人员编写的测试中,加载至少一个相关类(修改和加载)的测试用例称为相关测试。在该方法中,相关的测试用例被认为是完整的测试集,因为作者正在分析修改和加载的类。尽管如此,相关测试套件和完整测试套件可以互换使用。对于每个项目的每个版本,完整测试套件的大小是不同的。在表3中,提供了每个项目的完整测试套件大小的范围。最后,得到一个具有最大语句覆盖能力和分支覆盖能力,并能划分/区分最大数目的可能可区分突变体的约简测试集.5. 结果在Defects 4j项目上执行NSGA-II算法后,为每个考虑的项目版本获得一个简化的测试套件然后检查所考虑的项目版本的每个缩减测试套件中的故障检测测试用例的数量。此外,突变体的可疑性使用等式中的公式计算(二)、然后,通过在其所有突变体可疑值中取最大值来计算每一行代码的可疑度。在计算每条线的可疑性之后,如前面在第2节中讨论的那样计算等级。减少测试套件,然后评估故障检测使用方程。(1)和使用Eq.(三)、在精简测试套件中,即使只有一个故障检测测试用例可用,则这意味着缩减的测试套件能够检测故障,并且如果缩减的测试套件提供高的故障定位得分值,则这意味着需要检查较少数量的可疑语句以定位和移除故障。将NSGA-Ⅱ得到的精简测试用例的故障检测和定位能力与各工程版本的完整测试集的故障检测和定位能力进行了比较。结果表明,这些减少的测试套件都有故障检测和定位能力,并执行相当的完整/相关的测试套件。结果部分进一步分为以下部分:5.1. 故障检测能力分析(RQ 1)减少测试套件从NSGA-II算法已被评估的基础上检测到的故障的百分比,如方程。(一).对于每个项目版本,检查最小化测试套件中是否存在故障检测测试用例。如果在缩减的测试套件中有故障检测测试,那么这意味着在所考虑的项目版本中检测到了故障。图2描述了每个项目的最小化测试套件检测到和未检测到的故障数量,即chart、lang、time和closure。这表明简化的测试套件具有很高的故障检测能力,因为它检测到248个故障中的236个。只有六个版本(可变:4、8、17、43和不可变:18、65),时间上的三个版本(可变:21、22和不可变:10)和关闭项目中的三个版本(可变:11、35和不可变:85)未被最小化测试套件检测到。在故障检测百分比方面,对于所有项目,可以观察到,在95.16%的项目版本中,缩减的测试套件能够检测到故障。因此,可以得出结论,语句,分支,和D-分数是足够的标准进行故障检测。5.2. 故障定位能力分析(RQ2)故障定位的分析已经完成的故障定位分数的基础上描述的方程。(三)、故障局部化分数的值越高,表明必须检查的用于定位故障的语句越少 对于每个项目,完整测试集和简化测试集的故障定位得分已经被计算并在图1和图2中给出。3、5、7、9和10。这些图示出表3有关所考虑项目的信息。项目版本相关/完整测试套件图表26【5-559】郎65[10-836]时间27[8-4102]闭合133[21-8096]图二. 在每个考虑的项目中检测到的故障数。N. Gupta等人 /沙特国王大学学报-计算机与信息科学34(2022)2897-29092903图三. 当使用完整测试套件和简化测试套件时,图表项目的故障定位得分。图四、当使用完整测试套件和简化测试套件时,图表项目的故障检测测试用例数图五. 使用完整测试集和简化测试集时lang项目的故障定位得分图六、当使用完整测试套件和缩减测试套件时,lang项目的故障检测测试用例数见图7。 当使用完整测试集和缩减测试集时,时间项目的故障定位得分。北纬2904号Gupta等人 /沙特国王大学学报-计算机与信息科学34(2022)2897- 2909图8.第八条。当使用完整测试集和缩减测试集时,时间项目的故障检测测试用例数图9.第九条。当使用完整测试套件和简化测试套件时,关闭项目的故障定位得分(1图10个。当使用完整测试套件和简化测试套件时,关闭项目的故障定位得分(61当完整测试套件和简化测试套件用于所考虑项目的每个版本时,曲线之间的差异。 图3、5、7、9和10清楚地显示了所有四个项目即chart、lang、time和closure,它们各自的约简测试集在故障定位能力上与完整测试集相当。从这些图中,已经删除了被检测到但没有被简化测试套件很好地定位的不可变故障。总共38个故障(6-chart,11-lang,5-time,16-closure)在非可变行中。他们的错误定位得分为零,因为用于错误定位的技术是基于突变体的。因此,它无法定位这些不可变版本/故障中的故障。在可变错误中,未检测到lang中的四个版本/错误(4、8、17和43)、时间中的两个版本(21、22)和闭包中的两个版本(11、35简化的测试套件。因此,在所考虑的方案的那些版本中,故障也未被定位并且具有零故障定位分数。但是对于所有项目的剩余版本,可以注意到缩减测试套件的故障定位得分与完整测试套件的故障定位得分相当。还可以观察到,所提出的方法试图在缩减的测试套件中保持故障检测测试用例的数量Dandan等人 (Dandan等人, 2013)还得出结论,故障检测测试用例在故障定位中起着至关重要的作用。仅被错误测试用例覆盖而未被通过测试用例覆盖的语句是最易受影响的语句。因此,包含必要的错误测试用例是很重要的。通过所提出的方法,可以看出,它能够包括大多数故障完整测试套件中的测试用例。图4、6、8、11和12分别描述了针对项目图、lang、时间和闭包的每个版本的完整测试套件和缩减测试套件中的故障测试用例的数量。它清楚地表明,所提出的方法包括减少测试套件中的大多数故障检测测试。还可以注意到,大多数具有最高可疑值的品系及其对应突变体代表实际故障。如果不对突变体进行划分,那么被相同的测试用例杀死的突变体这影响了MBFL技术的准确性。为了区分有缺陷的突变体与其他突变体,突变体分区的平均大小应该尽可能小,而突变体分区的数量应该尽可能大在所提出的方法中,这项工作因此,故障定位分数是好的,因为D-准则是能够区分突变体和不同的测试用例,而不是相似的测试用例被选中。由于测试用例的多样性,故障检测测试用例的数量也有所增加。因此,D-分数是一个很好的充分性标准的故障定位,因为它试图保持最大的和不同的信息的测试用例使用分区的概念。5.3. 分析缩减测试套件的大小及其对考虑的充分性标准(RQ 3)完整的测试套件和减少测试套件的大小进行了比较,为每个项目版本。结果显示,76%的N. Gupta等人 /沙特国王大学学报-计算机与信息科学34(2022)2897-29092905项目版本,有超过60%的测试用例减少。这是一个很好的减少百分比。因此,它表明,一个减少的测试套件有非常少的测试用例的数量相比,完整的测试套件。因此,减少测试套件的结果不是因为它的大小,而是因为用于减少的标准。尽管如此,在减少了60%以上的情况下,它们能够覆盖最大的状态和分支,并获得最大的D分数。图 13、每个项目都有一个小提琴情节。它描述了在给定的测试套件大小缩减百分比类别下的项目版本的数量。在Chart、lang、time和clo- sure项目中,大多数版本分别有大约90%、63%、93%和90%的减少。Closure项目版本拥有最大的完整测试套件。关闭项目版本的测试套件减少百分比范围从50%到95%。测试集大小的平均减少百分比为78%,这是一个很好的减少百分比与给定的故障检测和定位分数。此外,为了分析测试套件的缩减并没有影响语句覆盖率、分支覆盖率和D-得分值,作者比较了所有项目的完整测试套件和缩减测试套件的语句和分支覆盖率值。图图14和图15描述了完整的和简化的测试套件对图表项目的语句和分支覆盖率。类似地,Fig. 16和17,图。 18和19和图。 20 -23表示lang、
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功