CN111274126B - 测试用例筛选方法、装置及介质 - Google Patents
测试用例筛选方法、装置及介质 Download PDFInfo
- Publication number
- CN111274126B CN111274126B CN202010037435.9A CN202010037435A CN111274126B CN 111274126 B CN111274126 B CN 111274126B CN 202010037435 A CN202010037435 A CN 202010037435A CN 111274126 B CN111274126 B CN 111274126B
- Authority
- CN
- China
- Prior art keywords
- test case
- execution
- test
- case
- classifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开一种测试用例筛选方法,该方法可以被应用于软件测试领域。该方法包括:将测试用例的历史执行数据用作训练样本,利用机器学习技术训练得到用例分类器,并利用该用例分类器预测得到至少一个第一测试用例的预测执行失败率;获取至少一个与被修改的软件代码对应的第二测试用例的关联度;然后,根据至少一个第一测试用例的预测执行失败率,以及至少一个第二测试用例的关联度,从至少一个待选测试用例中筛选出高风险用例;其中,至少一个待选测试用例为前述第一测试用例和第二测试用例的并集。采用上述技术方案可以从待选测试用例中更精准地筛选出高风险用例,从而促使缺陷发现或覆盖需求的测试用例前移,进而提高测试的有效性。
Description
技术领域
本申请涉及软件测试技术领域,具体涉及一种测试用例筛选方法。此外,本申请还涉及一种测试用例筛选装置,以及一种计算机可读存储介质。
背景技术
回归测试(regressiontest)是在修改了软件的原有代码之后,重新对软件进行测试的一种测试流程。通过回归测试可以确认软件的原有功能是否被破坏,即确认修改了原有代码之后是否引入新的错误,或者导致其他原有代码产生错误等问题,即判断修改后的软件中是否存在缺陷。如果存在缺陷,那么开发人员就需要对软件再进行修改。在软件开发生命周期(SystemDevelopment Life Cycle,SDLC)中,软件的各个版本都需要经过多次充分的测试才能够发布。因此,回归测试是一项需要持续进行的任务。
测试用例(testcase)是指为了进行测试而向被测试系统(即软件)提供的一组数据,一般包括输入数据、执行条件以及预期结果。在测试时,如果一个测试用例执行失败,可能意味着缺陷的发现。为测试一个软件,通常需要设计很多测试用例,形成测试用例库。在软件开发的生命周期中,测试用例库中的测试用例可能会被不断更新,以便应对经过修改之后的软件的回归测试。
在回归测试中,为满足不同的需求,测试人员通常会制定不同的回归测试策略。选择有效的回归测试策略,可以精准地从测试用例库中筛选出合适的测试用例,从而提升回归测试的测试效率和有效性。筛选测试用例一般包括三种类型的方法:
(1)选取测试用例库中全部的测试用例。采用该类型的方法能够保证缺陷遗漏风险最低,但是对时间和设备等测试资源的需求较高,导致回归测试的测试效率较低。
(2)基于软件中被修改的代码,从测试用例库中筛选出部分测试用例。具体地,在一种实现方式中,首先需要对所有测试用例进行覆盖分析,确定每个代码行与测试用例之间的映射关系,然后才能根据被修改的代码行以及映射关系,从测试用例库中筛选出合适的测试用例。
该方法一定程度上可以提高测试效率,但被修改的代码并不一定会导致缺陷,未被修改的代码也不一定不存在缺陷,有可能未被修改的代码会由于与被修改的代码存在关联而产生缺陷。也就是说,覆盖分析所得到的代码行与测试用例之间的映射关系,实际上并不能准确地反映出测试用例的风险(即测试用例执行失败的概率高低)。因此,采用该方法无法很好地保证回归测试的有效性。
(3)基于测试用例的风险,从测试用例库中筛选出部分测试用例。具体地,在一种实现方式中,首先对此前测试中执行用例时的执行数据进行分析,确定每个测试用例所发现的缺陷,以及缺陷的严重等级。然后根据缺陷的个数和缺陷的严重等级,来评估这些测试用例的风险,从中筛选出高风险用例,用于本次回归测试。
采用该方法一定程度上可以筛选出高风险用例,提高回归测试的有效性。但是,发明人经过分析认为,该方法采用执行测试用例所发现的缺陷和缺陷的严重等级来衡量测试用例的风险,并仅据此来进行筛选,筛选的精准程度仍然有待提高。
发明内容
本申请提供一种测试用例筛选方法,该方法结合了基于测试用例的风险的筛选方法,以及基于软件中被修改的代码的筛选方法这两种类型,可以更加精准地筛选出高风险用例,进而提高测试的有效性。
第一方面,本申请提供一种测试用例筛选方法,包括:获取至少一个第一测试用例的预测执行失败率;获取至少一个第二测试用例的关联度;根据上述至少一个第一测试用例的预测执行失败率,以及上述至少一个第二测试用例的关联度,从至少一个待选测试用例中筛选出高风险用例。其中,上述预测执行失败率由用例分类器对至少一个第一测试用例进行预测得到,上述用例分类器为利用历史执行数据训练得到的分类器,上述历史执行数据包括执行至少一个第一测试用例而生成的至少一条执行记录;上述第二测试用例为被修改的软件代码所对应的测试用例,上述关联度用于表征第二测试用例与对应的被修改的软件代码之间的关联程度;上述至少一个待选测试用例为至少一个第一测试用例和至少一个第二测试用例的并集。
采用本实现方式,一方面利用机器学习技术来预测测试用例的风险,另一方面获取测试用例与软件代码之间的关联度,结合这两方面的信息,可以更加精准地筛选出高风险用例,促使缺陷发现前移,促使覆盖需求的测试用例前移,进而提高测试的有效性。此外,采用该方法还有利于保障软件的信息安全,降低测试用例筛选的实施成本,提升筛选的时效性。
在一种可能的实现方式中,将历史执行数据用作训练样本,利用机器学习技术训练得到用例分类器,并利用该用例分类器对至少一个第一测试用例进行预测,可以得到至少一个第一测试用例的预测执行失败率。该实现方式具体可以为:获取历史执行数据;利用历史执行数据训练分类器,得到用例分类器;将至少一个第一测试用例输入用例分类器,得到至少一个第一测试用例各自的预测执行失败率。采用本实现方式,无需使用产品的源码作为输入,有利于保障软件的信息安全。并且,由于在训练的时候无需使用测试用例的具体内容,仅仅使用测试用例的历史执行数据即可,从而大大降低了实施成本。
在一种可能的实现方式中,执行记录包括测试用例标识,与测试用例标识对应的执行结果、执行时间和执行时长。测试用例的执行时长可能与执行结果相关,因此可以利用测试用例的测试用例标识、执行时间和执行结果来训练得到分类器模型,得到用例分类器,以便利用该用例分类器来预测测试用例后续被执行时的预测执行失败率。执行时间则被应用于作为输入训练样本的顺序的依据,以保证训练效果。
在训练之前,可以先对历史执行数据进行数据清洗,以过滤掉其中一些容易对训练产生干扰的执行记录,得到清洗后的数据。再将清洗后的数据中的执行记录,输入到分类器中进行训练。数据清洗可以有多种实现方式,例如可以利用执行结果、失败原因和执行次数中的一种或者多种来实现。
在一种可能的实现方式中,可以利用执行结果来清洗历史执行数据。该实现方式具体可以为:根据执行记录中的执行结果清洗历史执行数据,得到清洗后数据;将清洗后数据中的执行记录输入至分类器中,得到用例分类器。根据执行结果来清洗历史执行数据,可以避免执行结果不明确的执行记录对训练产生干扰,影响分类器的预测准确率。
在另一种可能的实现方式中,可以利用执行结果和执行记录中的失败原因来清洗历史执行数据。该实现方式具体可以为:根据执行结果和失败原因清洗历史执行数据,得到清洗后数据。将失败原因中的一个或者多个原因作为过滤的条件,可以过滤掉与软件缺陷没有关联的执行记录,避免这些执行记录对训练产生干扰,影响分类器的预测准确率。
在又一种可能的实现方式中,可以利用执行结果和执行次数来清洗历史执行数据。该实现方式具体可以为:将历史执行数据中每一个第一测试用例各自对应的执行记录的数量,确定为每一个第一测试用例各自对应的执行次数;根据执行结果和执行次数清洗历史执行数据,得到清洗后数据。执行次数过少的测试用例对应的执行记录,其置信度相对较低。因此,将这些执行记录过滤掉,可以避免这些执行记录对训练产生干扰,影响分类器的预测准确率。
在一种可能的实现方式中,将清洗后数据中的执行记录,按照执行记录中的执行时间输入至分类器中,得到用例分类器。与不按照执行时间的先后顺序输入训练样本的方式相比,采用本实现方式可以保证训练效果,提升用例分类器的预测准确率。
在一种可能的实现方式中,第二测试用例的关联度可以通过问题单或者需求单来确定。该实现方式具体可以为:获取与被修改的软件代码对应的需求单/问题单;获取与需求单/问题单对应的至少一个第二测试用例;将每一个第二测试用例对应的需求单/问题单的数量,确定为第二测试用例的关联度。采用本实现方式所得到的第二测试用例的关联度,不但能够体现出第二测试用例与被修改的软件代码之间的对应关系,也能够表示出二者之间的关联紧密程度。这与测试用例的风险相关,也与测试用例是否能够覆盖测试需求相关。基于此,将该关联度引入进来用于筛选高风险用例,有利于更加精准地筛选出高风险用例,有利于提高后续测试的有效性。
筛选高风险用例可以有多种实现形式,可以根据不同的业务需求来确定。
在一种可能的实现方式中,可以以预测执行失败率和关联度作为排序依据,对所有的待选测试用例进行排序,然后根据排序结果,筛选出高风险用例。该实现方式具体可以为:以预测执行失败率和关联度为排序依据,对上述至少一个待选测试用例排序;从排序结果中筛选出预设数量个预测执行失败率或者关联度最高的高风险用例。采用该实现方式,可以较精准地筛选出高风险用例,有助于提高测试的有效性。并且,与后续的另一种实现方式相比,该实现方式不需要设定权重值,更加容易被使用。
在另一种可能的实现方式中,可以根据预测执行失败率和关联度的权重,来评估每个待选测试用例对应的风险,从而筛选出高风险用例。该实现方式具体可以为:确定预测执行失败率的权重和关联度的权重;利用预测执行失败率的权重和关联度的权重,计算每一个待选测试用例对应的风险评估值;将风险评估值高于预设的第一阈值的待选测试用例,确定为高风险用例。采用该实现方式,可以较精准地筛选出高风险用例,有助于提高测试的有效性。
第二方面,本申请提供一种测试用例筛选装置,包括获取模块和处理模块;上述获取模块用于获取至少一个第一测试用例的预测执行失败率;以及,获取至少一个第二测试用例的关联度;其中,预测执行失败率由用例分类器对上述至少一个第一测试用例进行预测得到,用例分类器为利用历史执行数据训练得到的分类器,历史执行数据包括执行上述至少一个第一测试用例而生成的至少一条执行记录;第二测试用例为被修改的软件代码所对应的测试用例,关联度用于表征第二测试用例与对应的被修改的软件代码之间的关联程度;上述处理模块用于根据上述至少一个第一测试用例的预测执行失败率,以及上述至少一个第二测试用例的关联度,从至少一个待选测试用例中筛选出高风险用例;其中,至少一个待选测试用例为至少一个第一测试用例和至少一个第二测试用例的并集。
第三方面,本申请提供一种测试用例筛选装置,包括:至少一个存储器,以及至少一个处理器;至少一个存储器存储有一个或多个指令,当一个或多个指令被至少一个处理器执行时,使得该装置实现第一方面的任一种方法的部分或全部步骤。
第四方面,本申请提供一种计算机可读存储介质,该计算机存储介质中包括指令,当指令在计算机上运行时,使得该计算机执行第一方面的任一种方法的部分或全部步骤。
可以理解地,上述第二方面、第三方面的测试用例筛选装置,以及第四方面的计算机可读存储介质,均用于执行上文所提供的对应的方法,其所能达到的有益效果可参考上文对应方法的有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中的附图作简单地介绍。
图1为本申请实施例中筛选出高风险用例的一个示意图。
图2为本申请实施例的测试用例筛选方法的实现方式之一的流程图。
图3为本申请实施例的测试用例筛选方法中,S200的步骤的实现方式之一的流程图。
图4为本申请实施例的测试用例筛选方法中,S300的步骤的实现方式之一的流程图。
图5为本申请实施例的测试用例筛选方法中,S300的步骤的实现方式之二的流程图。
图6为本申请实施例中筛选装置的一种实现方式的结构示意图。
图7为本申请实施例中筛选装置的另一种实现方式的结构示意图。
具体实施方式
为便于理解本申请的技术方案,以下将对本申请涉及到的几个技术术语作简单的介绍。
测试用例的风险,指的是测试用例在执行时的失败率。一个测试用例的风险高,指的是该测试用例在执行时的失败率较高,例如失败率高于某一阈值,具有这样特点的测试用例在本申请中也被称为高风险用例;相应地,一个测试用例的风险低,指的是该测试用例在执行时的失败率较低,例如失败率低于某一阈值。上述阈值的取值可以是任意的,本申请对于阈值的具体数值不作限定。
缺陷,一般是指存在于软件代码中的错误,有时也会被称为“错误”、“BUG”等。通过执行测试用例,可以发现一个软件中的部分或者全部缺陷。能否尽可能多地发现缺陷,能否在有限的时间能尽可能多地发现缺陷,以及,能否在有限的时间内尽可能多地发现相对严重的缺陷,这很大程度上取决于测试用例的设计和筛选。
测试需求一般是指需要测试的内容,例如,测试某个功能是否在软件中有所体现等。
测试的有效性,指的是在一次测试中,能够发现软件缺陷或者覆盖需求的测试用例,在该次测试所执行的全部测试用例中所占的比例。
对于一个软件而言,在测试该软件的过程中需要执行测试用例。一个测试用例可能被执行一次或者多次。一个测试用例每被执行一次,就会生成一条对应的执行记录。这些执行记录的集合,称之为历史执行数据。
执行记录记载了与之对应的测试用例某一次被执行的情况。一般地,执行记录可以包括测试用例标识、执行结果、执行时间,以及执行时长等信息。
需要说明的是,随着测试的进行,测试用例库中的测试用例被执行的次数也随之增加,相应地,一个软件的历史执行数据中所包含的执行记录也会不断增加。例如,在为第N次测试筛选测试用例时,历史执行数据中可以包括前N-1次测试中执行测试用例所生成的全部执行记录。而在为第N+1次测试筛选测试用例时,历史执行数据中不但可以包括前N-1次测试中执行测试用例所生成的执行记录,也可以包括第N次测试中执行测试用例所生成的执行记录,即可以包括前N次测试中执行测试用例所生成的执行记录。
本申请结合了基于测试用例的风险的筛选方法,以及基于软件中被修改的代码的筛选方法这两种类型,提出一种新的测试用例筛选方法。图1为筛选出高风险用例的一个示意图。示例性地,第一测试用例来自测试用例库,包括了用例1至用例5等测试用例;第二测试用例也来自测试用例库,是与被修改的代码对应的测试用例,包括了用例1至用例3等测试用例。以第一测试用例和第二测试用例的并集为筛选的基础(即待选测试用例),根据第一测试用例的预测执行失败率和第二测试用例的关联度,从待选测试用例中筛选出高风险用例,例如用例1、用例3和用例4等,以用于后续的软件测试。
本申请实施例的筛选方法,一方面利用软件在测试时生成的历史执行数据作为机器学习的训练样本,利用机器学习技术来预测测试用例的风险(即预测执行失败率),另一方面获取测试用例与被修改的软件代码之间的关联度,结合这两方面的信息,从而更加精准地筛选出高风险用例。将这些高风险用例用于回归测试,可以尽早发现修改后的软件中的缺陷,促使缺陷发现前移;同时,也可以尽早执行能够覆盖测试需求的测试用例,促使覆盖需求的测试用例前移,进而提升回归测试的有效性。
本申请的筛选方法可以被应用在所有的软件产品的回归测试过程中,尤其适合被应用在版本迭代较快、测试周期较短或者测试资源较少的软件产品的回归测试场景中。
以下将结合图1至图2来对本申请实施例中的方法作进一步介绍。图2为本申请实施例的测试用例筛选方法的实现方式之一的流程图。该测试用例筛选方法,可以包括以下S100至S300步骤。
S100:获取至少一个第一测试用例的预测执行失败率。
本申请实施例中的第一测试用例可以来自测试用例库。上述的至少一个第一测试用例,指的是一个或者多个第一测试用例的集合。在一种实现方式中,可以将测试用例库中所有的测试用例,都作为第一测试用例。
第一测试用例的预测执行失败率,可以通过用例分类器来预测得到。用例分类器在预测之前,需要先利用这些第一测试用例此前被执行时所生成的执行记录来进行训练。
为了便于理解,以下将先介绍用例分类器的训练过程,然后介绍利用其来预测第一测试用例的预测执行失败率的过程。
对于一个特定的分类器模型而言,描述该分类器模型的函数是不变的,而函数中的一些参数是可以调整的。训练,可以理解为是对该分类器模型中的一些参数进行调整的过程。
在本申请实施例中,上述分类器模型可以采用现有的机器学习模型,也可以采用其他被改进后的机器学习模型,本申请对此不作限定。
训练分类器模型需要使用训练样本。在有监督训练的一种实现方式中,训练样本的形式为“训练输入数据,标注数据”。将“训练输入数据”输入到分类器模型中,分类器模型对该“训练输入数据”进行计算,得到“预测数据”。然后,分类器模型根据“预测数据”与“标注数据”之间的差异,调整分类器模型中的参数的取值,以便以后将相同的“训练输入数据”输入到分类器模型中时,分类器模型可以输出与“标注数据”更接近的“预测数据”。使用大量训练样本进行训练之后,分类器模型中的参数相应地经过了一系列调整,此时可以将当前分类器模型中的这些参数确定下来。这样,该分类器模型就被训练好了,即得到了训练好的用例分类器。
在本申请实施例中,训练样本可以采用历史执行数据中的执行记录,其中包含了此前的测试中第一测试用例被执行而生成的执行记录。需要说明的是,训练样本也可能包含其他测试用例被执行而生成的执行记录,本申请对此不作限定。
执行记录可以包括测试用例标识、执行结果、执行时间,以及执行时长等信息。
其中,测试用例标识用于唯一标识一个测试用例,以便通过测试用例标识就可以将不同的测试用例区分开。
执行结果一般可以包括三类:成功,失败,以及不明确。对于一个测试用例而言,如果该测试用例被执行完毕之后所得到的实际结果与预设的预期结果一致,则其对应的执行结果为成功;如果实际结果与预期结果不一致,则其对应的执行结果为失败。执行结果还可能存在不明确的情况,这可能由多种不同的原因造成,例如“没有执行完毕”、“执行环境导致的阻塞”等。
执行时间可以包括该测试用例执行的开始时间点和结束时间点。
执行时长指的是执行该测试用例所耗费的时间。在一种实现方式中,执行时长可以由前述的结束时间点与开始时间点的差值来确定。
可选地,执行记录还可以包括执行环境。执行环境是指在软件测试过程中执行测试用例时所必需的计算机硬件、软件、网络设备等的总称。例如,执行环境可以包括操作系统、硬件配置信息等。
表1示出了历史执行数据中包括的几个执行记录的示例。
表1历史执行数据局部示例
如前所述,训练样本的形式为“训练输入数据,标注数据”。在本申请实施例中,可以将测试用例标识和执行时长等信息,作为训练样本中的“训练输入数据”,将执行结果作为训练样本中的“标注数据”。其中,采用执行时间作为“训练输入数据”之一,主要是考虑到测试用例的执行时长可能与执行结果相关。例如,在不同次的测试中执行同一个测试用例,如果其执行时长非常接近,甚至相同,则其执行结果很可能相同。
在训练分类器模型的一种实现方式中,可以按照执行记录中的执行时间,将历史执行数据中的执行记录输入到分类器模型中,进行训练。此时,训练用例分类器所使用的执行记录中,至少需要包括测试用例标识、执行时长和执行时间。
可选地,执行时间可以包括测试用例执行的开始时间点和结束时间点,在本申请实施例中可以统一以其中任一个时间点为准,来输入执行记录。可选地,按照执行时间的先后顺序输入训练样本,可以按照执行时间由近至远的顺序,也可以按照由远至近的顺序,本申请对此不作限定。
例如,在一个示例中,可以将作为训练样本的执行记录,按照各自对应的结束时间点的先后顺序,按照距离当前时间点由近至远的顺序,即最晚的时间点至最远的时间点的顺序,逐条输入至分类器中。
可选地,当执行记录中包括执行环境时,也可以将执行环境作为训练样本中的“训练输入数据”之一。这主要是考虑到测试用例的执行环境可能也与执行结果相关。例如,在不同次的测试中执行同一个测试用例,如果其执行环境相同,并且其执行时长非常接近,则其执行结果很可能相同。将执行环境增加到“训练输入数据”中,可以进一步提升分类器的训练效果,提升分类器的预测准确率。
在训练阶段,首先需要获取历史执行数据。然后,利用历史执行数据训练分类器,得到用例分类器。即,以历史执行数据中的执行记录为训练样本,将其输入一个预先设计好的分类器模型进行训练,以得到用例分类器。
可选地,在训练的一种实现方式中,可以先对历史执行数据进行数据清洗,以过滤掉其中一些容易对训练产生干扰的执行记录,得到清洗后的数据。再将清洗后的数据中的执行记录,输入到分类器中进行训练,从而提升训练效果,进而提升分类器的预测准确率。
在数据清洗的一种实现方式中,可以根据执行记录中的执行结果清洗获取到的历史执行数据,得到清洗后数据。例如,执行结果包括“成功”,“失败”,以及“不明确”三类,如表1的例子所示。将执行结果为“不明确”的执行记录过滤掉,只保留执行结果为“成功”或“失败”的执行记录,即将Z1至Z6这6条执行记录中的Z6过滤掉,保留Z1至Z5这5条执行记录,将其作为训练分类器的训练样本。根据执行结果来清洗历史执行数据,可以避免执行结果不明确的执行记录对训练产生干扰,影响分类器的预测准确率。
在数据清洗的另一种实现方式中,当执行记录包括失败原因时,可以根据执行记录中的失败原因清洗历史执行数据,得到清洗后数据。
执行记录可以包括失败原因,当某一条执行记录中的执行结果为“失败”时,其对应的失败原因用于描述该条执行记录对应的测试用例执行失败的原因,例如“执行环境的原因导致的失败”、“非产品问题导致的失败”等。当某一条执行记录中的执行结果为“成功”时,其对应的失败原因可以为空。
除了软件中的缺陷可能会导致执行失败以外,其他一些与软件缺陷无关的因素也可能会导致执行失败,例如前述的“非产品问题导致的失败”,更具体地例如“网络阻塞导致的失败”等。如果将这些执行结果为“失败”,但与软件缺陷没有关联的执行记录也作为训练样本,可能会对训练产生干扰,影响分类器的预测准确率。为此,在清洗历史执行数据时,可以将失败原因中的一个或者多个原因作为过滤的条件,以此来过滤掉这些与软件缺陷没有关联的执行记录。
在数据清洗的又一种实现方式中,还可以统计历史执行数据中每一个测试用例对应的执行记录的数量,将其记录为测试用例对应的执行次数。然后,根据执行次数清洗历史执行数据,得到清洗后数据。例如,如果一个测试用例的执行次数过少,小于一定的次数阈值,则在数据清洗的时候,可以将该测试用例对应的执行记录都过滤掉。这主要是由于这些执行次数过少的测试用例对应的执行记录,其置信度相对较低,将其过滤可以避免这些执行记录对训练产生干扰,影响分类器的训练效果。
需要说明的是,上述清洗数据的实现方式,以及上述训练分类器的实现方式,均可以相互结合。
对于训练好的用例分类器,将本次需要筛选的至少一个第一测试用例输入到该用例分类器中,用例分类器会预测每一个第一测试用例在下一次被执行时对应的失败概率,即预测执行失败率。
例如,第一测试用例包括用例1、用例2和用例3等,将其输入用例分类器,可以得到每一个第一测试用例对应的预测执行失败率,如下表2所示。可选地,用例分类器还可以输出每一个第一测试用例的预测执行结果。当预测执行失败率低于一定阈值(例如50%)时,预测执行结果为“成功”,而当预测执行失败率高于一定阈值时,预测执行结果为“失败”,如下表2所示。
表2用例分类器输出结果示例
第一测试用例标识 | 预测执行失败率 | 预测执行结果 |
用例1 | 30% | 成功 |
用例2 | 7% | 成功 |
用例3 | 45% | 成功 |
用例4 | 90% | 失败 |
用例5 | 30% | 成功 |
…… | …… | …… |
需要说明的是,当后续筛选出高风险用例之后,计算机可以执行这些高风险用例来测试软件,并生成对应的执行记录。这些新生成的执行记录,可以被更新到历史执行数据中,再用于训练用例分类器,以便在下一次筛选测试用例的时候使用新训练的用例分类器来预测待筛选的测试用例的预测执行失败率。
S200:获取至少一个第二测试用例的关联度。
本申请实施例中的第二测试用例是被修改的代码所对应的测试用例,其也可以来自测试用例库。上述的至少一个第二测试用例,指的是一个或者多个第二测试用例的集合。
需要说明的是,第二测试用例的集合,可以和前述第一测试用例的集合完全相同、部分相同,或者完全不相同,本申请对此不作限定。
在一种实现方式中,可以将测试用例库中所有的被修改的代码对应的测试用例,都作为第二测试用例。当将测试用例库中所有的测试用例都作为第一测试用例时,第二测试用例的集合是第一测试用例的集合的一个子集。
关联度用于表征第二测试用例与被修改的软件代码之间的关联程度。在一种表征方式中,关联度的取值越大,则表示二者的关联程度越紧密。
在现有技术中,一般需要对测试用例库中的所有的测试用例进行覆盖分析,来确定每个代码行与测试用例之间的映射关系。然后,通过本次被修改的代码以及前述的映射关系,来确定出本次回归测试所需要采用的,与被修改的代码具有映射关系的测试用例。在该方法中,通过覆盖分析仅仅得到了每个代码行与测试用例之间的映射关系,一方面并不能准确地反映出测试用例的风险,另一方面也不能体现出代码行与测试用例之间的关联程度是否紧密。
为此,在本申请实施例中采用关联度来表征。关联度在体现出第二测试用例与被修改的软件代码之间的对应关系的同时,也能够表示出二者之间的关联紧密程度。这与测试用例的风险相关,也与测试用例是否能够覆盖测试需求相关。因此,将关联度引入进来用于筛选高风险用例,有利于更加精准地筛选出高风险用例,有利于提高后续测试的有效性。
在获取第二测试用例对应的关联度的一种实现方式中,可以通过需求单/问题单来确定测试用例对应的关联度。请参见图3,图3为本申请实施例的测试用例筛选方法中,S200的步骤的实现方式之一的流程图。该实现方式可以包括以下S201至S203的步骤。
S201:获取与被修改的软件代码对应的需求单/问题单。
需求单记录了软件的设计人员对开发人员所提出的技术上的需求。问题单记录了软件使用人员在使用软件过程中所发现的问题。
开发人员会根据需求单所提出的需求或者问题单所提出的问题来修改软件的代码。在修改之后,开发人员一般会填写修改记录。修改记录中记录了被修改的代码,包括被修改的代码的位置和内容等,修改记录中还会记录与被修改的代码对应的需求单或者问题单。基于此,从修改记录中可以获取到本次被修改的软件代码对应的需求单/问题单。
需要说明的是,在软件开发生命周期中,一个软件可能被修改很多次,每一次修改都可能需要进行一次或者多次回归测试。本实施例中的被修改的软件代码,仅仅是指本次被修改的软件代码,而不是指软件被开发以来所有的被修改的软件代码。
还需要说明的是,被修改的代码可以通过多种方式来标识,例如代码的位置编号,或者代码的模块编号等。需求单可以通过多种方式来唯一标识,例如需求单号等。类似地,问题单可以通过多种方式来唯一标识,例如问题单号等。基于此,在本申请实施例中,需求单/问题单与被修改的软件代码之间的映射关系,可以通过需求单号/问题单号与软件代码的标识之间的映射关系来表示,如表3所示。
表3被修改的软件代码与需求单/问题单之间的映射关系示例
S202:获取与所述需求单/问题单对应的至少一个第二测试用例。
软件测试人员一般会针对需求单或者问题单去测试用例库中寻找对应的测试用例,或者设计与之对应的新的测试用例,或者修改测试用例库中原本的测试用例,使修改后的测试用例与需求单或者问题单对应,从而构建需求单/问题单与测试用例之间的映射关系。基于此,从中可以获取到本次修改所涉及的需求单/问题单(即被修改的软件代码对应的需求单/问题单)以及其对应的全部第二测试用例之间的映射关系,从而确定被修改的软件代码所对应的第二测试用例。
需要说明的是,如前所述,需求单可以通过多种方式来唯一标识,例如需求单号等,问题单也可以通过多种方式来唯一标识,例如问题单号等,测试用例也可以通过测试用例标识来唯一标识,例如测试用例编号等。基于此,在本申请实施例中,需求单/问题单与测试用例之间的映射关系,可以通过需求单号/问题单号与测试用例标识之间的映射关系来表示,如表4所示。
表4需求单/问题单与测试用例之间的映射关系示例
S203:将每一个所述第二测试用例对应的需求单/问题单的数量,确定为所述第二测试用例的关联度。
转换需求单/问题单与第二测试用例之间映射关系的表示方式,将每一个需求单/问题单会对应一个或者多个第二测试用例的映射关系,转换为每一个第二测试用例对应一个或者多个需求单/问题单。然后,统计一个第二测试用例对应的需求单/问题单的数量,将该数量确定为该第二测试用例的关联度。
例如,在表5所示的例子中,用例1对应3个需求单号/问题单号,则其关联度为3。其他用例的关联度的确定过程与此类似。
表5关联度示例
需要说明的是,随着软件开发人员提交更多新的修改记录,代码和需求单/问题单的对应关系可能会发生变化。类似地,随着软件测试人员针对需求单/问题单而更新测试用例库,需求单/问题单与测试用例之间的映射关系也可能发生变化。因此,在不同次的筛选中所获取到的关联度可能存在差异,进而导致筛选结果也可能存在差异。
S300:根据所述至少一个第一测试用例的预测执行失败率,以及所述至少一个第二测试用例的关联度,从至少一个待选测试用例中筛选出高风险用例。
上述的至少一个待选测试用例,是指所述至少一个第一测试用例和所述至少一个第二测试用例的并集。如S100的步骤中所述,第二测试用例的集合,可以和前述第一测试用例的集合完全相同、部分相同,或者完全不相同。基于此,在筛选的时候,可以将二者中相同的测试用例合并,取二者的并集,形成一个完整的待选测试用例的集合。然后从该待选测试用例的集合去筛选出高风险用例。
在筛选高风险用例的一种实现方式中,可以以预测执行失败率和关联度作为排序依据,对所有的待选测试用例进行排序,然后根据排序结果,筛选出高风险用例。该实现方式与后续的另一种实现方式相比,由于不需要设定权重值,故而更加容易被使用。
请参见图4,图4为本申请实施例的测试用例筛选方法中,S300的步骤的实现方式之一的流程图。该实现方式可以包括以下S311至S312的步骤。
S311:以所述预测执行失败率和所述关联度为排序依据,对所述至少一个待选测试用例排序。
上述的排序依据,也可以理解为是排序时所依照的关键词。待选测试用例的预测执行失败率、关联度均可以被作为一个排序依据。
需要说明的是,在排序时,可以按照预测执行失败率或关联度的升序进行排序,也可以按照降序进行排序,本申请对此不作限定。在排序时,不同排序依据的优先级可以不同,预测执行失败率的优先级可以高于关联度的优先级,也可以低于关联度的优先级,本申请对此也不作限定。根据应用场景的不同,可以选择不同的排序方式,以及不同的排序依据的优先级。
例如,沿用表2的预测执行失败率和表5的关联度的例子,假设排序时预测执行失败率的优先级高于关联度的优先级,按照预测执行失败率和关联度的降序排序,则排序结果如表6所示。
表6排序结果示例
序号 | 待选测试用例标识 | 预测执行失败率 | 关联度 |
1 | 用例4 | 90% | —— |
2 | 用例3 | 45% | 2 |
3 | 用例1 | 30% | 3 |
4 | 用例5 | 30% | —— |
5 | 用例2 | 7% | 1 |
…… | …… | …… | …… |
S312:从排序结果中筛选出预设数量个所述预测执行失败率或者所述关联度最高的高风险用例。
上述预设数量可以是人工预设的,也可以是计算机根据其他信息来设定的,本申请对于预设数量的预设方式,以及预设数量的具体取值均不作限定。
在排序时,当预测执行失败率的优先级高于关联度时,可以从排序结果中筛选出预设数量个预测执行失败率最高的待选测试用例;当关联度的优先级高于预测执行失败率时,可以从排序结果中筛选出预设数量个关联度最高的待选测试用例。
例如,沿用表6的例子,假设将排序最靠前的3个待选测试用例确定为高风险用例,则筛选出的高风险用例为:用例4,用例3,用例1。
在筛选高风险用例的另一种实现方式中,可以根据预测执行失败率和关联度的权重,来评估每个待选测试用例对应的风险,从而筛选出高风险用例。
请参见图5,图5为本申请实施例的测试用例筛选方法中,S300的步骤的实现方式之二的流程图。该实现方式可以包括以下S321至S323的步骤。
S321:确定所述预测执行失败率的权重和所述关联度的权重。
上述预测执行失败率的权重和关联度的权重可以根据不同的应用场景来确定。在不同的应用场景中,将预测执行失败率的权重和关联度的权重确定为不同的取值,有助于更加精准地筛选出高风险用例,进而有助于提高测试的有效性。
预测执行失败率的权重w1和关联度的权重w2均可以取[0%,100%]的区间内的任意数值,并且w1+w2=100%。
在一种实现方式中,用户可以手动设置二者的权重的取值,从而使计算机直接根据用户设置的取值来确定二者的权重。
S322:利用所述预测执行失败率的权重和所述关联度的权重,计算每一个所述待选测试用例对应的风险评估值。
在计算待选测试用例的风险评估值的一种实现方式中,对于任一个待选测试用例而言,其对应的风险评估值可以由该待选测试用例的预测执行失败率和关联度的权重加和得到。即,
Ri=Fi×w1+Ci×w2;其中,
Ri表示所述至少一个待选测试用例中的第i个待选测试用例的风险评估值;
Fi表示所述至少一个待选测试用例中的第i个待选测试用例的预测执行失败率;
Ci表示所述至少一个待选测试用例中的第i个待选测试用例的关联度。
需要说明的是,对于任一个待选测试用例而言,如果未获取到该待选测试用例的预测执行失败率Fi,则取Fi=0,以此计算该待选测试用例的Ri。类似地,对于任一个待选测试用例而言,如果未获取到该待选测试用例的关联度Ci,则取Ci=0,以此计算该待选测试用例的Ri。
例如,沿用表2的预测执行失败率和表5的关联度的例子,假设w1取90%,w2取10%,则计算出的各个待选测试用例的风险评估值如表7所示。
表7风险评估值示例
S323:将风险评估值高于预设的第一阈值的所述待选测试用例,确定为高风险用例。
上述预设的第一阈值可以是人工预设的,也可以是计算机根据其他信息来设定的,本申请对于预设的第一阈值的预设方式,以及预设的第一阈值的具体取值均不作限定。
例如,沿用以表7的风险评估值的例子,假设预设第一阈值为0.55,则从表7所示的待选测试用例中筛选出的高风险用例为:用例1,用例3,用例4。
需要说明的是,当应用于某些特定应用场景中时,也可以单独利用第一测试用例的预测执行失败率或者第二测试用例的关联度来筛选高风险用例。比如,在一个示例中,可以将预测执行失败率超过预设的第二阈值的第一测试用例,确定为高风险用例。又比如,在另一个示例中,可以将关联度高于预设的第三阈值的第二测试用例,确定为高风险用例。
还需要说明的是,以上S100至S300的步骤仅仅描述了一次测试用例筛选的步骤。在软件的回归测试过程中,可能需要进行多次测试,每一次筛选测试用例都可以重新执行上述的筛选方法。由于训练用例分类器的训练样本(即历史执行数据)会被更新,测试用例的关联度也可能被更新,测试用例库中的测试用例也可能被更新,因此,在不同次的筛选中所得到的筛选结果也可能存在差异。
本申请实施例中的方法结合了基于测试用例的风险的筛选方法,以及基于软件中被修改的代码的筛选方法这两种类型,一方面利用机器学习技术来预测测试用例的风险,另一方面获取测试用例与软件代码之间的关联度。预测执行失败率与测试用例的风险相关,关联度也与测试用例的风险相关,同时还与测试用例的需求覆盖相关。因此,结合这两方面的信息,可以更加精准地筛选出高风险用例,促使缺陷发现前移,促使覆盖需求的测试用例前移,进而提高回归测试的有效性。
现有技术中的基于每个代码行与测试用例之间的映射关系来筛选的方法,需要软件源代码作为输入信息,是一种白盒测试方法。该方法需要公开软件的源代码,对软件的信息安全造成风险。并且,由于实现该方法需要对所有测试用例进行覆盖分析,故而存在实施成本较高的问题。现有技术中的基于每个测试用例所发现的缺陷,以及缺陷的严重等级来评估测试用例的风险的方法,也是一种白盒测试方法,同样存在上述的问题。
而本申请实施例中的方法,是一种黑盒测试方法,无需使用产品的源码作为输入,有利于保障软件的信息安全。同时,该方法无需对所有测试用例进行覆盖分析,无需使用到执行每个测试用例所发现的缺陷,以及缺陷的严重等级,所使用到的用例分类器在训练的时候,也无需使用测试用例的具体内容,仅仅使用测试用例的历史执行数据即可,从而大大降低了实施成本。
此外,在现有技术中,无论是做覆盖分析,还是采用测试用例的内容来训练用例分类器,都需要产品代码的信息或者测试用例的内容,耗费较长时间。而在本申请实施例中,由于无需使用测试用例的具体内容,当获取到被更新的历史执行数据之后,用其来训练用例分类器所需的时间较短。基于此,本申请实施例所获取的第一测试用例的预测执行失败率实时性更好。同时,采用本申请实施例的方法获取的第二测试用例的关联度实时性也较好。通常获得覆盖分析的结果所需要的时间较长,而本申请实施例中的历史执行数据和关联度都可以实时更新,这使得第一测试用例的预测执行失败率和第二测试用例的关联度可这两个参数可以实现分钟级更新,进而也提升了实现本申请实施例中的筛选方法的时效性。
前述实施例对本申请提供的筛选方法进行了介绍。本领域技术人员应该很容易意识到,结合前述实施例中描述的步骤,本申请中的筛选方法不仅能够以硬件或计算机软件的形式来实现,还可以以硬件和计算机软件结合的形式来实现。某个功能究竟以何种形式来实现,取决于技术方案的特定应用和设计约束条件。
本实施例提供一种测试用例的筛选装置。在筛选装置的一种实现方式中,可以对该装置进行功能模块的划分。在采用对应各个功能划分各个功能模块的情况下,图6示出了本申请中筛选装置的一种实现方式的结构示意图。该筛选装置400包括获取模块401和处理模块402;其中,
所述获取模块401用于获取至少一个第一测试用例的预测执行失败率;以及,获取至少一个第二测试用例的关联度;其中,所述预测执行失败率由用例分类器对所述至少一个第一测试用例进行预测得到,所述用例分类器为利用历史执行数据训练得到的分类器,所述历史执行数据包括执行所述至少一个第一测试用例而生成的至少一条执行记录;所述第二测试用例为被修改的软件代码所对应的测试用例,所述关联度用于表征所述第二测试用例与对应的所述被修改的软件代码之间的关联程度。
所述处理模块402用于根据所述至少一个第一测试用例的预测执行失败率,以及所述至少一个第二测试用例的关联度,从至少一个待选测试用例中筛选出高风险用例;其中,所述至少一个待选测试用例为所述至少一个第一测试用例和所述至少一个第二测试用例的并集。可选地,所述获取模块401还用于:获取所述历史执行数据。
所述处理模块402还用于:利用所述历史执行数据训练分类器,得到用例分类器;将所述至少一个第一测试用例输入所述用例分类器,得到所述至少一个第一测试用例各自的所述预测执行失败率。
可选地,所述执行记录包括测试用例标识,与所述测试用例标识对应的执行结果、执行时间和执行时长。
可选地,所述处理模块402还用于:根据所述执行记录中的执行结果清洗所述历史执行数据,得到清洗后数据;将所述清洗后数据中的执行记录输入至所述分类器中,得到所述用例分类器。
可选地,所述执行记录还包括失败原因;所述处理模块402还用于:根据所述执行结果和所述失败原因清洗所述历史执行数据,得到清洗后数据。
可选地,所述处理模块402还用于:将所述历史执行数据中每一个所述第一测试用例各自对应的执行记录的数量,确定为每一个所述第一测试用例各自对应的执行次数;以及,根据所述执行结果和所述执行次数清洗所述历史执行数据,得到清洗后数据。
可选地,所述处理模块402还用于:将所述清洗后数据中的执行记录,按照所述执行记录中的执行时间输入至所述分类器中,得到所述用例分类器。
可选地,所述获取模块401还用于:获取与被修改的软件代码对应的需求单/问题单;获取与所述需求单/问题单对应的至少一个第二测试用例。
所述处理模块402还用于:将每一个所述第二测试用例对应的需求单/问题单的数量,确定为所述第二测试用例的关联度。
可选地,所述处理模块402还用于:以所述预测执行失败率和所述关联度为排序依据,对所述至少一个待选测试用例排序;从排序结果中筛选出预设数量个所述预测执行失败率或者所述关联度最高的高风险用例。
可选地,所述处理模块402还用于:确定所述预测执行失败率的权重和所述关联度的权重;利用所述预测执行失败率的权重和所述关联度的权重,计算每一个所述待选测试用例对应的风险评估值;以及,将风险评估值高于预设的第一阈值的所述待选测试用例,确定为高风险用例。
可以理解的是,本实施例中对筛选装置的功能模块的划分是示意性的,仅仅为一种逻辑功能划分,在实际实现时可以采用另外的划分方式。例如,获取模块401的功能可以由总线接口或者收发器实现,处理模块402的功能可以由处理器实现。
在筛选装置的另一种实现方式中,各独立运行的功能实体可以集成在一个硬件实体中,例如服务器、芯片等。图7示出了本申请中筛选装置的另一种实现方式的结构示意图。图7从独立功能实体的角度对本申请的筛选装置进行介绍。该筛选装置500可以包括至少一个存储器501,以及至少一个处理器502。
所述至少一个存储器501存储有一个或多个计算机程序或指令。存储器501可以包括易失性存储器(volatile memory),例如随机存取内存(random access memory,RAM);还可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器501还可以包括上述种类的存储器的组合。所述存储器501中可以存储计算机可执行程序或指令。
处理器502通过执行存储在存储器501中的指令,从而可以实现筛选装置的功能或者数据处理。例如,处理器502通过执行存储器501中存储的程序或指令,使得所述筛选装置500实现前述任一种筛选方法的部分或者全部步骤。示例性地,前述筛选装置400中的处理模块402的功能,可以由处理器502实现。
上述处理器502可以包括一个或多个处理单元,例如:处理器502可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。所述处理器502还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,简称GAL)或其任意组合。
上述筛选装置还可以包括收发器503,收发器503可以用于接收筛选装置外部的数据。例如,当第一测试用例的预测执行失败率或者第二测试用例的关联度存储在筛选装置外部时,可以通过收发器503来接收这些数据。示例性地,前述筛选装置400中的获取模块401的功能,可以由收发器503实现。
本实施例还提供一种计算机可读存储介质。该计算机可读存储介质用于存储计算机程序或指令,当所述计算机程序或指令在计算机上运行时,使得所述计算机执行前述任一种筛选方法的部分或全部步骤。
这里的可读存储介质可为磁碟、光盘、DVD、USB、只读存储记忆体(ROM)或随机存储记忆体(RAM)等,本申请对具体的存储介质形式不作限定。
上述实施例的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如DVD)或者半导体介质(例如固态硬盘(solid statedisk,SSD))等。
应理解,在本申请的各种实施例中,各步骤的执行顺序应以其功能和内在逻辑确定,各步骤序号的大小并不意味着执行顺序的先后,不对实施例的实施过程构成限定。
除非另外说明,本说明书中的“多个”,指的是两个或者两个以上。在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解,“第一”、“第二”等字样并不对数量和执行次序构成限定,并且“第一”、“第二”等字样也并不限定一定不同。
还应理解,本说明书中各个实施例中的实现方式,只要逻辑上不矛盾,均可以相互结合。各个实施例之间相同相似的部分互相参见即可。尤其,对于筛选装置、计算机可读存储介质和计算机程序产品的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。以上的实施方式并不构成对本申请保护范围的限定。
Claims (13)
1.一种测试用例筛选方法,其特征在于,包括:
获取至少一个第一测试用例的预测执行失败率;其中,所述预测执行失败率由用例分类器对所述至少一个第一测试用例进行预测得到,所述用例分类器为利用历史执行数据训练得到的分类器,所述历史执行数据包括执行所述至少一个第一测试用例而生成的至少一条执行记录;
获取至少一个第二测试用例的关联度;其中,所述第二测试用例为被修改的软件代码所对应的测试用例,所述关联度用于表征所述第二测试用例与对应的所述被修改的软件代码之间的关联程度,所述关联度的取值越大表示所述第二测试用例与所述被修改的软件代码之间的关联程度越紧密;
根据所述至少一个第一测试用例的预测执行失败率,以及所述至少一个第二测试用例的关联度,从至少一个待选测试用例中筛选出高风险用例;其中,所述至少一个待选测试用例为所述至少一个第一测试用例和所述至少一个第二测试用例的并集。
2.根据权利要求1所述的测试用例筛选方法,其特征在于,获取至少一个第一测试用例的预测执行失败率,包括:
获取所述历史执行数据;
利用所述历史执行数据训练分类器,得到用例分类器;
将所述至少一个第一测试用例输入所述用例分类器,得到所述至少一个第一测试用例各自的所述预测执行失败率。
3.根据权利要求1或2所述的测试用例筛选方法,其特征在于,所述执行记录包括测试用例标识,与所述测试用例标识对应的执行结果、执行时间和执行时长。
4.根据权利要求2所述的测试用例筛选方法,其特征在于,利用所述历史执行数据训练分类器,得到用例分类器,包括:
根据所述执行记录中的执行结果清洗所述历史执行数据,得到清洗后数据;
将所述清洗后数据中的执行记录输入至所述分类器中,得到所述用例分类器。
5.根据权利要求4所述的测试用例筛选方法,其特征在于,所述执行记录还包括失败原因;
根据所述执行记录中的执行结果清洗所述历史执行数据,得到清洗后数据,包括:
根据所述执行结果和所述失败原因清洗所述历史执行数据,得到清洗后数据。
6.根据权利要求4所述的测试用例筛选方法,其特征在于,所述方法还包括:
将所述历史执行数据中每一个所述第一测试用例各自对应的执行记录的数量,确定为每一个所述第一测试用例各自对应的执行次数;
根据所述执行记录中的执行结果清洗所述历史执行数据,得到清洗后数据,包括:
根据所述执行结果和所述执行次数清洗所述历史执行数据,得到清洗后数据。
7.根据权利要求4所述的测试用例筛选方法,其特征在于,将所述清洗后数据中的执行记录输入至所述分类器中,得到所述用例分类器,包括:
将所述清洗后数据中的执行记录,按照所述执行记录中的执行时间输入至所述分类器中,得到所述用例分类器。
8.根据权利要求1所述的测试用例筛选方法,其特征在于,获取至少一个第二测试用例的关联度,包括:
获取与被修改的软件代码对应的需求单/问题单;
获取与所述需求单/问题单对应的至少一个第二测试用例;
将每一个所述第二测试用例对应的需求单/问题单的数量,确定为所述第二测试用例的关联度。
9.根据权利要求1所述的测试用例筛选方法,其特征在于,根据所述至少一个第一测试用例的预测执行失败率,以及所述至少一个第二测试用例的关联度,从至少一个待选测试用例中筛选出高风险用例,包括:
以所述预测执行失败率和所述关联度为排序依据,对所述至少一个待选测试用例排序;
从排序结果中筛选出预设数量个所述预测执行失败率或者所述关联度最高的高风险用例。
10.根据权利要求1所述的测试用例筛选方法,其特征在于,根据所述至少一个第一测试用例的预测执行失败率,以及所述至少一个第二测试用例的关联度,从至少一个待选测试用例中筛选出高风险用例,包括:
确定所述预测执行失败率的权重和所述关联度的权重;
利用所述预测执行失败率的权重和所述关联度的权重,计算每一个所述待选测试用例对应的风险评估值;
将风险评估值高于预设的第一阈值的所述待选测试用例,确定为高风险用例。
11.一种测试用例筛选装置,其特征在于,包括获取模块和处理模块;
所述获取模块用于获取至少一个第一测试用例的预测执行失败率;以及,获取至少一个第二测试用例的关联度;其中,所述预测执行失败率由用例分类器对所述至少一个第一测试用例进行预测得到,所述用例分类器为利用历史执行数据训练得到的分类器,所述历史执行数据包括执行所述至少一个第一测试用例而生成的至少一条执行记录;所述第二测试用例为被修改的软件代码所对应的测试用例,所述关联度用于表征所述第二测试用例与对应的所述被修改的软件代码之间的关联程度,所述关联度的取值越大表示所述第二测试用例与所述被修改的软件代码之间的关联程度越紧密;
所述处理模块用于根据所述至少一个第一测试用例的预测执行失败率,以及所述至少一个第二测试用例的关联度,从至少一个待选测试用例中筛选出高风险用例;其中,所述至少一个待选测试用例为所述至少一个第一测试用例和所述至少一个第二测试用例的并集。
12.一种测试用例筛选装置,其特征在于,包括:至少一个存储器,以及至少一个处理器;所述至少一个存储器存储有一个或多个指令,当所述一个或多个所述指令被所述至少一个处理器执行时,使得所述装置实现权利要求1-10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机存储介质中包括指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-10任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010037435.9A CN111274126B (zh) | 2020-01-14 | 2020-01-14 | 测试用例筛选方法、装置及介质 |
PCT/CN2020/115580 WO2021143175A1 (zh) | 2020-01-14 | 2020-09-16 | 测试用例筛选方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010037435.9A CN111274126B (zh) | 2020-01-14 | 2020-01-14 | 测试用例筛选方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111274126A CN111274126A (zh) | 2020-06-12 |
CN111274126B true CN111274126B (zh) | 2022-10-04 |
Family
ID=71001849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010037435.9A Active CN111274126B (zh) | 2020-01-14 | 2020-01-14 | 测试用例筛选方法、装置及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111274126B (zh) |
WO (1) | WO2021143175A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111274126B (zh) * | 2020-01-14 | 2022-10-04 | 华为云计算技术有限公司 | 测试用例筛选方法、装置及介质 |
CN111897722B (zh) * | 2020-07-15 | 2022-11-22 | 重庆紫光华山智安科技有限公司 | 自动化测试用例处理方法、装置、服务器及存储介质 |
CN112363928B (zh) * | 2020-11-10 | 2023-08-22 | 网易(杭州)网络有限公司 | 测试用例的处理方法、装置、处理器及电子装置 |
CN113064824B (zh) * | 2021-03-31 | 2022-12-02 | 重庆紫光华山智安科技有限公司 | 结果分析方法和装置、电子设备及存储介质 |
CN112988606B (zh) * | 2021-05-11 | 2021-07-23 | 成都爱瑞无线科技有限公司 | 测试用例生成方法、装置、设备及存储介质 |
CN113296836B (zh) * | 2021-06-08 | 2022-07-22 | 北京百度网讯科技有限公司 | 训练模型的方法、测试方法、装置、电子设备及存储介质 |
CN113434436B (zh) * | 2021-07-30 | 2022-12-16 | 拉扎斯网络科技(上海)有限公司 | 测试用例的生成方法、装置、电子设备及存储介质 |
CN113672506B (zh) * | 2021-08-06 | 2023-06-13 | 中国科学院软件研究所 | 基于机器学习的动态比例测试用例排序选择方法及系统 |
CN113868122B (zh) * | 2021-09-10 | 2023-11-14 | 苏州浪潮智能科技有限公司 | 一种用于回归测试的测试用例筛选方法、系统及装置 |
CN113886256B (zh) * | 2021-10-14 | 2023-10-10 | 广州九尾信息科技有限公司 | 一种软件质量监控训练模型的方法 |
CN114168472A (zh) * | 2021-12-09 | 2022-03-11 | 惠州Tcl移动通信有限公司 | 用例执行方法、装置、电子设备及计算机可读存储介质 |
CN114564388A (zh) * | 2022-02-23 | 2022-05-31 | 中国农业银行股份有限公司 | 一种程序测试方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489321A (zh) * | 2019-07-08 | 2019-11-22 | 平安科技(深圳)有限公司 | 测试用例筛选方法、装置、计算机设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103560829B (zh) * | 2013-10-31 | 2017-05-24 | 上海斐讯数据通信技术有限公司 | 一种uni端口的自动化测试方法及系统 |
CN105453050A (zh) * | 2014-07-30 | 2016-03-30 | 株式会社日立制作所 | 开发辅助系统 |
CN108255653B (zh) * | 2018-01-02 | 2021-05-04 | 深圳壹账通智能科技有限公司 | 一种产品的测试方法及其终端 |
US20190294531A1 (en) * | 2018-03-26 | 2019-09-26 | Ca, Inc. | Automated software deployment and testing based on code modification and test failure correlation |
CN110147321B (zh) * | 2019-04-19 | 2020-11-24 | 北京航空航天大学 | 一种基于软件网络的缺陷高风险模块的识别方法 |
CN111274126B (zh) * | 2020-01-14 | 2022-10-04 | 华为云计算技术有限公司 | 测试用例筛选方法、装置及介质 |
-
2020
- 2020-01-14 CN CN202010037435.9A patent/CN111274126B/zh active Active
- 2020-09-16 WO PCT/CN2020/115580 patent/WO2021143175A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489321A (zh) * | 2019-07-08 | 2019-11-22 | 平安科技(深圳)有限公司 | 测试用例筛选方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
基于缺陷相似度与再分配图的软件缺陷分配方法;史高翔;《计算机科学》;20161130;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111274126A (zh) | 2020-06-12 |
WO2021143175A1 (zh) | 2021-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111274126B (zh) | 测试用例筛选方法、装置及介质 | |
CN109144882B (zh) | 一种基于程序不变量的软件故障定位方法及装置 | |
JP6217212B2 (ja) | テストプログラム、テスト方法及びテスト装置 | |
Rajbahadur et al. | The impact of using regression models to build defect classifiers | |
US9619373B2 (en) | Method and apparatus to semantically connect independent build and test processes | |
EP3506104B1 (en) | Coverage test support device and coverage test support method | |
US20130111267A1 (en) | Optimizing regression testing based on code coverage analysis | |
CN108268373A (zh) | 自动化测试用例管理方法、装置、设备及存储介质 | |
CN112199293A (zh) | 软件质量评价方法、装置、终端设备及存储介质 | |
WO2019055378A1 (en) | METHOD AND APPARATUS FOR FINDING LONG PROCESSES IN A CODE | |
CN115098292B (zh) | 应用程序崩溃根原因识别方法、装置及电子设备 | |
CN114491566B (zh) | 一种基于代码相似性的模糊测试方法、装置及存储介质 | |
JP2020102209A (ja) | ソフトウェアプログラム不良位置の識別 | |
Yang et al. | Vuldigger: A just-in-time and cost-aware tool for digging vulnerability-contributing changes | |
US20050262399A1 (en) | Aggregating and prioritizing failure signatures by a parsing program | |
Bodhe et al. | Reduction of diagnostic fail data volume and tester time using a dynamic N-cover algorithm | |
CN114443483A (zh) | 人工智能系统的测试方法、装置、电子设备及介质 | |
CN112199295B (zh) | 一种基于频谱的深度神经网络缺陷定位方法及系统 | |
US10546080B1 (en) | Method and system for identifying potential causes of failure in simulation runs using machine learning | |
CN108804308B (zh) | 新版本程序缺陷检测方法及装置 | |
CN116701222A (zh) | 基于特征加权迁移学习的跨项目软件缺陷预测方法及系统 | |
CN108763092B (zh) | 一种基于交叉验证的代码缺陷检测方法及装置 | |
CN114355171B (zh) | 一种可重构芯片性能瓶颈检测平台、检测方法及电子设备 | |
Poulos et al. | Exemplar-based failure triage for regression design debugging | |
CN108959089A (zh) | 一种测试用例生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220210 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |