优先级模型训练方法及确定测试用例优先级的方法和装置与流程

文档序号:14656757发布日期:2018-06-12 05:32阅读:380来源:国知局

本发明涉及应用程序测试领域,更具体地涉及一种优先级模型训练方法及确定测试用例优先级的方法和装置。



背景技术:

在对移动app(应用程序)进行回归测试时,一个被修改的系统通常需要使用很多现有的测试用例对其进行重新测试。由于测试用例的数量非常巨大,因此测试者在回归测试的过程中想要尽早地发现被修改过的系统是否存在错误。测试优先级排序技术试图对现有的测试用例库进行重新排序,以此来尽早地发现系统中存在的错误。

传统的方法中,测试者仅仅考虑app升级的时候如何进行回归测试,但是他们很少考虑当平台升级的时候,如何测试app的兼容性。此外,回归测试用例库中,如何生成大量的测试用例,这也是一个极大的挑战。当前,当测试者进行回归测试的时候,他们对如何选出高优先级的测试用例是极其困难的。测试者通常从用例库中随机选出测试用例对app进行回归测试,于是,这些测试用例通常并不能发现任何重要的bug(错误)信息。

目前,已经提出来一些测试优先级的方法,但是效果并不是很好。当前的大多数方法都是基于白盒,并且关注代码覆盖率和功能覆盖率等。此外,这些方法需要访问源代码,但是在大多数情况下,测试人员的资源有限,只能进行黑盒测试。

因此,需要一种基于移动app平台的测试用例优先级排序方法,能够在移动平台上选出高优先级的测试用例对app进行回归测试和兼容性测试,从而在平台升级的时候,可以尽早地发现重要的bug信息。



技术实现要素:

在下文中给出关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。

本发明的一个主要目的在于,提供了一种优先级模型训练方法,包括:将应用程序的测试用例中的用于训练的每个测试用例分别转换为操作序列;对于操作序列中的每个操作,基于操作的重要性分数、操作与平台API之间的关联度分数和操作与设备API之间的关联度分数以及相应的权重来计算该操作的优先级分数;以及对应用程序的测试结果中的错误进行分析,根据错误是由操作的重要性、平台API和设备API中的哪个引起的而对相应的权重进行调整。

根据本发明的一个方面,提供一种确定测试用例的优先级的方法,包括:将每个测试用例分别转换为操作序列;对操作序列中的每个操作进行分类,其中,当两个操作的控件类型和动作类型是相同的,则将该两个操作分为同一种类;对于每个操作,确定该操作是否被训练过,如果该操作被训练过,则利用训练得到的操作的优先级模型来计算该操作的优先级分数,如果该操作未被训练过,则基于与该操作种类相同的、被训练过的所有操作的优先级分数来计算该操作的优先级分数;以及基于测试用例所包括的所有操作的优先级分数来计算测试用例的优先级分数。

根据本发明的另一个方面,提供一种用于确定应用程序的测试用例的优先级的装置,包括:操作序列转换单元,被配置为将每个测试用例分别转换为操作序列;分类单元,被配置为对操作序列中的每个操作进行分类,其中,当两个操作的控件类型和动作类型是相同的,则将该两个操作分为同一种类;操作优先级分数计算单元,被配置为对于每个操作,确定该操作是否被训练过,如果该操作被训练过,则利用的训练方法得到的操作的优先级模型来计算该操作的优先级分数,如果该操作未被训练过,则基于与该操作种类相同的、被训练过的所有操作的优先级分数来计算该操作的优先级分数;以及测试用例优先级分数计算单元,被配置为基于测试用例所包括的所有操作的优先级分数来计算测试用例的优先级分数

另外,本发明的实施例还提供了用于实现上述方法的计算机程序。

此外,本发明的实施例还提供了至少计算机可读介质形式的计算机程序产品,其上记录有用于实现上述方法的计算机程序代码。

通过以下结合附图对本发明的最佳实施例的详细说明,本发明的这些以及其他优点将更加明显。

附图说明

参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。附图中的部件只是为了示出本发明的原理。在附图中,相同的或类似的技术特征或部件将采用相同或类似的附图标记来表示。

图1示出了根据本发明的训练操作的优先级排序模型以及对测试用例进行优先级排序的总体系统框图;

图2是根据本发明的一个实施例定义的测试用例优先级排序的示意图;

图3是测试用例的生成过程的示意图;

图4示出了基于操作的特征来训练操作的优先级模型的过程的示意图;

图5示出了根据本发明的一个实施例的操作的优先级模型训练方法500的示例性过程的流程图;

图6示出了根据本发明的一个实施例的操作的优先级模型训练装置600的示例性配置的框图;

图7示出了确定测试用例的优先级的过程的整体示意图;

图8示出了根据本发明的一个实施例的确定测试用例的优先级的方法800的示例性过程的流程图;

图9是示出根据本发明的一个实施例的用于确定测试用例优先级的装置900的示例性配置的框图;以及

图10是示出可以用于实施本发明的确定测试用例的优先级的方法和装置的计算设备的示例性结构图。

具体实施方式

下面参照附图来说明本发明的实施例。在本发明的一个附图或一种实施方式中描述的元素和特征可以与一个或更多个其它附图或实施方式中示出的元素和特征相结合。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。

传统的方法中,当测试者想要进行回归测试的时候,他们仅仅从用例库中随机选出若干测试用例,并进行测试,但是测试效率是非常低下的。他们通常很难发现bug信息。此外,检测出来的bug也通常不是特别重要的,特别严重的bug无法被检测出,而且花费的时间成本也很高。此外,现有的方法关注于app版本升级的回归测试,而很少关注平台版本升级的回归测试。

本发明提出了一种新的基于移动app平台的测试用例优先级排序方法。使用大量的现有测试用例作为训练样本,然后将每个测试用例定义成操作序列。在移动平台上运行所有的用例样本库,以此来训练操作的优先级模型。还可以通过每个测试用例的运行结果来改进操作的优先级模型。训练模型结束后,当app平台升级的时候,基于模型对现有的测试用例库进行优先级排序。最后,在移动平台上选出高优先级的测试用例对app进行回归测试和兼容性测试。使用本发明提供的方法,在平台进行升级的时候,可以尽早地发现重要的bug信息。

本发明使用现有的测试用例库来训练测试用例优先级排序模型,因此可以在移动平台升级的时候,对用例库进行优先级的预测计算。测试用例库可以由sdk自动生成或者通过平台管理员手动生成,然后将每个测试用例转化成操作序列,接着,执行测试用例,基于优先级模型计算每个操作的优先级分数。此外,还可以使用测试执行结果来改进优先级模型。

下面结合附图详细说明根据本发明的实施例的图像处理方法和装置。

图1示出了根据本发明的一个实施例的训练操作的优先级排序模型以及对测试用例进行优先级排序的总体系统框图。

图1上部的方框中是对操作优先级排序模型进行训练的过程的框图,下部的方框中是利用操作的优先级模型对测试用例进行优先级排序的过程的框图。下面将对操作的优先级排序模型的训练过程和利用操作的优先级模型对测试用例进行优先级排序的过程分别结合附图进行详细说明。

首先参照附图2-5说明对操作的优先级模型进行训练的方法。

图2是根据本发明的一个实施例定义的测试用例优先级排序的示意图。

当移动平台升级的时候,期望对测试用例列表进行排序。移动平台可以被认为是app运行的容器,例如,浏览器可以作为web app运行的平台,android系统可以作为原生app运行的平台。当平台升级或者设备发生改变的时候,平台信息和设备信息也会发生改变,但是平台上运行的app不会发生改变。测试用例的基本目标是app,但是根据本发明的方法将平台信息和设备信息作为测试用例的一部分,即将测试用例定义为由app测试脚本、平台信息和设备信息组合而成。然后,使用一个训练好的操作的优先级模型,并结合app信息、平台信息和设备信息,对现有测试用例库进行排序。

在详细说明测试用例的定义之前,首先要定义操作如下:

opeation=(pageID,controlType,controlText,action,kind,app,platformVersion) (1)

对于每个测试用例,存在一个对应的操作序列,将此序列定义成测试用例:

TestCase=(op1,op2,...opn) (2)

测试用例就是所有操作的不同组合序列。例如,一个用于描述登录过程的测试用例可以表示如下:

login TestCase=(op2:input user name,op3:input password,op4:click login button)。

图3是测试用例的生成过程的示意图。如图3所示,在移动平台上部署了一个日志记录SDK(软件开发工具包)插件,使用SDK记录用户实际使用app过程中的所有操作。然后将记录的操作序列自动地转换成测试用例。此外,平台管理员也可以基于各种操作的组合手动地编写测试用例,并保存在数据库中。可以使用这些测试用例作为训练样本。

对于每一个操作,分析出其被使用过的次数。对于每个app,都存在一个对应的操作遍历树,代表着该app拥有的所有的操作。每个测试用例都是由遍历树中的若干操作节点所组成。例如,在图3中,op2、op3和op4组合成一个测试用例。

图4示出了基于操作的特征来训练操作的优先级模型的过程的系统框图。

简单来说,图4示出的操作的优先级模型的训练过程包括:从测试用例库中选取用于训练的测试用例,将其分为op1、op2和opn,然后对操作进行分类,基于操作的重要性、平台API和设备API以及相应的权重可以计算操作的优先级分数。根据引起错误的特征,可以对各个特征权重进行调整。

图5示出了根据本发明的一个实施例的操作的优先级模型训练方法500的示例性过程的流程图。下面参照图5来具体说明操作优先级模型的训练过程。

在步骤S502中,将应用程序的测试用例中的用于训练的每个测试用例分别转换为操作序列。

可选地,可以先将所有的操作进行分类,再对经分类的操作计算其优先级分数。当两个操作的控件类型和动作类型是相同的,则可以认为这两个操作属于同一种类。

在步骤S504中,对于操作序列中的每个操作,基于操作的重要性分数、操作与平台API之间的关联度分数和操作与设备API之间的关联度分数以及相应的权重来计算该操作的优先级分数。

例如,可以使用下面的式(3)来计算操作的优先级分数。

prioirtyScoreop=importanceScore*weight1+platformApiScore*weight2+deviceApiScore*weight3 (3)

其中,prioirtyScoreop为操作的优先级分数,importanceScore为操作的重要性分数,platformApiScore为操作与平台API之间的关联度分数,deviceApiScore为操作与设备API之间的关联度分数,weight1、weight2和weight3分别为相应的权重。在一个示例中,可以将各个权重的预设值设为:weight1=0.9,weight2=0.05,weight3=0.05。

具体地,操作的重要性分数可以基于使用次数分数、控件类型分数和动作类型分数以及其相应的权重来计算。例如,可以利用下面的式(4)来计算操作的重要性分数:

importanceScore=useTimesRateScore*θ1+controlTypeScore*θ2+actionTypeScore*(1-θ1-θ2) (4)

其中,userTimesRateScore为使用次数分数,controlTypeScore为控件类型分数,actionTypeScore为动作类型分数,θ1、θ2和(1-θ1-θ2)分别为相应的权重。

操作与平台API之间的关联度分数可以基于该操作调用的平台API的个数与平台上的API的总个数之比进行计算。例如,可以利用下面的式(5)来计算操作与平台API之间的关联度分数:

其中,count(platformApiop)为操作调用的平台API的个数,totalcount(platformApiop)为平台上的API的总个数。

操作与设备API之间的关联度分数可以基于该操作调用的设备API的个数与设备上的API的总个数之比进行计算。例如,可以利用下面的式(6)来计算操作与设备API之间的关联度分数:

其中,count(deviceApiop)为操作调用的设备API的个数,totalcount(deviceApiop)为设备上的API的总个数。

接下来,在步骤S506中,对应用程序的测试结果中的错误进行分析,根据错误是由操作的重要性、平台API和设备API中的哪个引起的而对相应的权重进行调整。

简单来说,要基于测试结果和错误原因来调整权重weight1、weight2和weight3。

首先,针对操作的重要性分数、操作与平台API之间的关联度分数和操作与设备API之间的关联度分数分别计算其权重增量。

若测试错误是由操作引发的,则可以将针对操作的重要性的权重增量increment1定义为该操作的使用次数与测试用例中所有操作的使用次数的总数之比,即该操作的使用率useTimesRate,如下面的式(7)所表示:

increment1=uSeTimeSRate (7)

若测试错误是由于平台API发生改变引起的,则将针对平台API的权重增量increment2定义为引起错误的平台API的数量count(platformApierror)与平台API的总数totalcount(platformApi)之比,如下面的式(8)所表示:

若测试错误是由于设备API发生改变引起的,则将针对设备API的权重增量increment3定义为引起错误的设备API的数量count(deviceApierror)与设备API的总数totalcount(deviceApi)之比,如下面的式(9)所表示:

然后,基于各个权重增量对相应的权重进行调整。

例如,可以利用下面的式(10)来重新调整每个特征的权重,并且对这些权重重新进行归一化。

其中,k是引起app测试错误的权重的标号,该式(10)表示对引起app测试错误的操作的重要性、平台API和设备API中的相应一个(即i=k)的权重进行调整,并对所有的权重重新进行归一化。

通过以上步骤S502-S506,就可以训练得到操作的优先级模型。

下面参照图6说明根据本发明的一个实施例的操作的优先级模型训练装置600的示例性配置。

如图6所示,操作的优先级模型训练装置600包括操作序列转换单元602、操作优先级分数计算单元604和权重调整单元606。

操作序列转换单元602被配置为将应用程序的测试用例中的用于训练的每个测试用例分别转换为操作序列。

操作优先级分数计算单元604被配置为对于操作序列中的每个操作,基于操作的重要性分数、操作与平台API之间的关联度分数和操作与设备API之间的关联度分数以及相应的权重来计算该操作的优先级分数。

权重调整单元606被配置为对应用程序的测试结果中的错误进行分析,根据错误是由操作的重要性、平台API和设备API中的哪个引起的而对相应的权重进行调整。

关于操作的优先级模型训练装置600的各个部分的操作和功能的细节可以参照结合图2-5描述的本发明的操作的优先级模型训练方法的实施例,这里不再详细描述。

图7示出了确定测试用例的优先级的过程的整体示意图。

简单来说,图7示出的确定测试用例的优先级的过程包括:将测试用例转换为操作列表,对每个操作进行分类,利用操作的优先级模型计算操作优先级分数,基于操作的优先级分数、测试用例覆盖率、测试用例错误检测率以及应用程序复杂度来计算测试用例的优先级分数。

图8示出了根据本发明的一个实施例的确定测试用例的优先级的方法800的示例性过程的流程图。下面参照图8来具体说明确定测试用例的优先级的过程。

在图8中,步骤S802中,将每个测试用例分别转换为操作序列。

接着,在步骤S804中,对操作序列中的每个操作进行分类。其中,当两个操作的控件类型和动作类型是相同的,则将该两个操作分为同一种类。

在步骤S806中,对于每个操作,确定该操作是否被训练过:

如果该操作被训练过,则利用通过上述训练得到的操作优先级模型来计算该操作的优先级分数;

如果该操作未被训练过,则基于与该操作种类相同的、被训练过的所有操作的优先级分数来计算该操作的优先级分数。

例如,可以计算与该操作种类相同的、被训练过的所有操作的优先级分数的平均值作为该操作的优先级分数。

最后,步骤S808中,基于测试用例所包括的所有操作的优先级分数来计算测试用例的优先级分数。

例如,可以通过下面的式(11)来计算测试用例的优先级分数:

在一个示例中,计算测试用例的优先级分数除了基于操作的优先级分数以外,还基于测试用例覆盖率、测试用例错误检测率以及应用程序复杂度来计算。

测试用例覆盖率和测试用例错误检测率是通过对应用程序的测试结果进行分析得到的。例如,可以用该测试用例包括的操作的数量与应用程序包括的总操作数的比值来计算该测试用例的测试用例覆盖率;以及用在该测试用例中测得的错误的数量与测出的总错误数的比值来计算该测试用例的测试用例错误检测率。

应用程序复杂度可以基于操作的数目、平台API的数目和设备API的数目以及相应的权重来计算。

具体地,预先将操作的数目分成若干等级,然后每个等级有一个对应的分数。例如,假设操作数目的范围是0-100,则分数为25,若数目范围是100-200,则分数为50,以此类推。App调用的平台API数目和设备API的数目也有对应的分数,计算方式和计算操作数目的分数相同。通过这3个特征的分数,就可以计算出APP的复杂程度。

例如可以利用下面的式(12)来计算应用程序复杂度app Complexity:

app Complexity=Score1(operationNum)*θ1+Score2(platformApiNum)*θ2+Score3(deviceApiNum)*(1-θ1-θ2) (12)

在考虑测试用例覆盖率、测试用例错误检测率以及应用程序复杂度的情况下,可以利用下面的式(13)为每个测试用例计算优先级分数:

priorityScoreTestCase=operationPriority*α+coverageRate*β+bugDetectionRate*γ+appcomplexity*(1-α-β-γ) (13)

其中,PriorityScoreTestCase为测试用例的优先级分数,operationPriority为操作的优先级分数,coverateRate为测试用例覆盖率,bugdetectionRate为测试用例错误检测率,appcomplexity为应用程序复杂度。α、β、γ为相应的系数,可以根据实际情况来设定。

通过以上步骤S802-S808就可以确定测试用例的优先级分数。

在实际应用中,在对平台或者设备进行升级之后,可以基于测试用例优先级分数,按照降序的方式对所有的测试用例进行重新排序,选择优先级分数较高的测试用例对应用程序进行测试。

通过一些实验,发现根据本发明的方法能够比现有的随机排序方法更快地发现bug,并且发现的bug重要度也比较高。

此外,当使用排序好的测试用例进行回归测试的时候,那些测试结果可以进一步用于改进图4的操作的优先级模型。

下面参照图9说明根据本发明的一个实施例的用于确定测试用例优先级的装置900的示例性配置。

如图9所示,用于确定测试用例优先级的装置900包括操作序列转换单元902、分类单元904、操作优先级分数计算单元906和测试用例优先级分数计算单元908。

操作序列转换单元902被配置为将每个测试用例分别转换为操作序列。

分类单元904被配置为对操作序列中的每个操作进行分类,其中,当两个操作的控件类型和动作类型是相同的,则将该两个操作分为同一种类。

操作优先级分数计算单元906被配置为对于每个操作,确定该操作是否被训练过,如果该操作被训练过,则利用根据上述的训练装置得到的操作的优先级模型来计算该操作的优先级分数,如果该操作未被训练过,则基于与该操作种类相同的、被训练过的所有操作的优先级分数来计算该操作的优先级分数。

其中,操作优先级分数计算单元906进一步被配置为基于测试用例覆盖率、测试用例错误检测率以及应用程序复杂度来计算计算测试用例的优先级分数。

其中,应用程序复杂度基于操作的数目、平台API的数目和设备API的数目以及相应的权重来计算。

测试用例优先级分数计算单元908被配置为基于测试用例所包括的所有操作的优先级分数来计算测试用例的优先级分数。

其中,测试用例覆盖率和测试用例错误检测率是通过对应用程序的测试结果进行分析得到的,其中,

用测试用例包括的操作的数量与应用程序包括的总操作数的比值来计算该测试用例的测试用例覆盖率;以及

用在测试用例中测得的错误的数量与测出的总错误数的比值来计算该测试用例的测试用例错误检测率。

在一个示例中,用于确定测试用例优先级的装置900还包括测试单元(图中未示出),被配置为在对平台或者设备进行升级之后,选择优先级分数较高的测试用例对应用程序进行测试。

关于用于确定测试用例优先级的装置900的各个部分的操作和功能的细节可以参照结合图7-8描述的本发明的确定测试用例优先级的方法800的实施例,这里不再详细描述。

在此需要说明的是,图6和图9所示的装置及其组成单元的结构仅仅是示例性的,本领域技术人员可以根据需要对图6和图9所示的结构框图进行修改。

本发明提供的方法对操作的优先级模型进行训练,使用训练过的操作优先级计算模型来计算操作的优先级分数,基于操作的优先级分数、测试用例覆盖率、测试用例错误检测率以及app复杂程度等信息来对测试用例计算优先级分数并进行排序,然后,选出高优先级的测试用例在移动平台上进行回归测试,最后,使用测试结果可以再改进操作优先级排序模型。根据本发明的方法可以有效快速地发现严重的错误信息。此外,本发明还关注于平台升级的回归测试。

以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。

因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。

在通过软件和/或固件实现本发明的实施例的情况下,从存储介质或网络向具有专用硬件结构的计算机,例如图10所示的通用计算机1000安装构成该软件的程序,该计算机在安装有各种程序时,能够执行各种功能等等。

在图10中,中央处理单元(CPU)1001根据只读存储器(ROM)1002中存储的程序或从存储部分1008加载到随机存取存储器(RAM)1003的程序执行各种处理。在RAM 1003中,也根据需要存储当CPU 1001执行各种处理等等时所需的数据。CPU 1001、ROM 1002和RAM 1003经由总线1004彼此链路。输入/输出接口1005也链路到总线1004。

下述部件链路到输入/输出接口1005:输入部分1006(包括键盘、鼠标等等)、输出部分1007(包括显示器,比如阴极射线管(CRT)、液晶显示器(LCD)等,和扬声器等)、存储部分1008(包括硬盘等)、通信部分1009(包括网络接口卡比如LAN卡、调制解调器等)。通信部分1009经由网络比如因特网执行通信处理。根据需要,驱动器1010也可链路到输入/输出接口1005。可拆卸介质1011比如磁盘、光盘、磁光盘、半导体存储器等等根据需要被安装在驱动器1010上,使得从中读出的计算机程序根据需要被安装到存储部分1008中。

在通过软件实现上述系列处理的情况下,从网络比如因特网或存储介质比如可拆卸介质1011安装构成软件的程序。

本领域的技术人员应当理解,这种存储介质不局限于图10所示的其中存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质1011。可拆卸介质1011的例子包含磁盘(包含软盘(注册商标))、光盘(包含光盘只读存储器(CD-ROM)和数字通用盘(DVD))、磁光盘(包含迷你盘(MD)(注册商标))和半导体存储器。或者,存储介质可以是ROM 1002、存储部分1008中包含的硬盘等等,其中存有程序,并且与包含它们的设备一起被分发给用户。

本发明还提出一种存储有机器可读取的指令代码的程序产品。指令代码由机器读取并执行时,可执行上述根据本发明实施例的方法。

相应地,用于承载上述存储有机器可读取的指令代码的程序产品的存储介质也包括在本发明的公开中。存储介质包括但不限于软盘、光盘、磁光盘、存储卡、存储棒等。

本领域的普通技术人员应理解,在此所例举的是示例性的,本发明并不局限于此。

在本说明书中,“第一”、“第二”以及“第N个”等表述是为了将所描述的特征在文字上区分开,以清楚地描述本发明。因此,不应将其视为具有任何限定性的含义。

作为一个示例,上述方法的各个步骤以及上述设备的各个组成模块和/或单元可以实施为软件、固件、硬件或其组合,并作为相应设备中的一部分。上述装置中各个组成模块、单元通过软件、固件、硬件或其组合的方式进行配置时可使用的具体手段或方式为本领域技术人员所熟知,在此不再赘述。

作为一个示例,在通过软件或固件实现的情况下,可以从存储介质或网络向具有专用硬件结构的计算机(例如图10所示的通用计算机1000)安装构成该软件的程序,该计算机在安装有各种程序时,能够执行各种功能等。

在上面对本发明具体实施例的描述中,针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其他实施方式中使用,与其他实施方式中的特征相组合,或替代其他实施方式中的特征。

应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其他特征、要素、步骤或组件的存在或附加。

此外,本发明的方法不限于按照说明书中描述的时间顺序来执行,也可以按照其他的时间顺序地、并行地或独立地执行。因此,本说明书中描述的方法的执行顺序不对本发明的技术范围构成限制。

本发明及其优点,但是应当理解在不超出由所附的权利要求所限定的本发明的精神和范围的情况下可以进行各种改变、替代和变换。而且,本发明的范围不仅限于说明书所描述的过程、设备、手段、方法和步骤的具体实施例。本领域内的普通技术人员从本发明的公开内容将容易理解,根据本发明可以使用执行与在此的相应实施例基本相同的功能或者获得与其基本相同的结果的、现有和将来要被开发的过程、设备、手段、方法或者步骤。因此,所附的权利要求旨在在它们的范围内包括这样的过程、设备、手段、方法或者步骤。

基于以上的说明,可知公开至少公开了以下技术方案:

1、一种优先级模型训练方法,所述方法包括:

将应用程序的测试用例中的用于训练的每个测试用例分别转换为操作序列;

对于所述操作序列中的每个操作,基于操作的重要性分数、操作与平台API之间的关联度分数和操作与设备API之间的关联度分数以及相应的权重来计算该操作的优先级分数;以及

对应用程序的测试结果中的错误进行分析,根据错误是由操作的重要性、平台API和设备API中的哪个引起的而对相应的权重进行调整。

2、根据附记1所述的方法,其中,对相应的权重进行调整包括:

当错误由操作引起,则将针对操作的重要性的权重增量定义为该操作的使用次数与测试用例中所有操作的使用次数的总数之比;

当错误由平台API的改变引起,则将针对平台API的权重增量定义为引起错误的平台API的数量与平台API的总数之比;

当错误由设备API的改变引起,则将针对设备API的权重增量定义为引起错误的设备API的数量与设备API的总数之比;以及

基于各个权重增量对相应的权重进行调整。

3、根据附记1所述的方法,其中,

所述操作的重要性分数基于使用次数分数、控件类型分数和动作类型分数以及其相应的权重来计算;

所述操作与平台API之间的关联度分数基于该操作调用的平台API的个数与平台上的API的总个数之比进行计算;以及

所述操作与设备API之间的关联度分数基于该操作调用的设备API的个数与设备上的API的总个数之比进行计算。

4、根据附记1所述的方法,其中,将每个测试用例分别转换为操作序列步骤之后还包括:

对每个操作进行分类,对经分类的操作计算其优先级分数,其中,当两个操作的控件类型和动作类型是相同的,则将该两个操作分为同一种类。

5、一种确定测试用例的优先级的方法,包括:

将每个测试用例分别转换为操作序列;

对所述操作序列中的每个操作进行分类,其中,当两个操作的控件类型和动作类型是相同的,则将该两个操作分为同一种类;

对于每个操作,确定该操作是否被训练过,

如果该操作被训练过,则利用根据附记1-4所述的训练方法得到的操作的优先级模型来计算该操作的优先级分数,

如果该操作未被训练过,则基于与该操作种类相同的、被训练过的所有操作的优先级分数来计算该操作的优先级分数;以及

基于测试用例所包括的所有操作的优先级分数来计算测试用例的优先级分数。

6、根据附记5所述的方法,其中,

计算测试用例的优先级分数还基于测试用例覆盖率、测试用例错误检测率以及应用程序复杂度来计算。

7、根据附记6所述的方法,其中,

所述应用程序复杂度基于操作的数目、平台API的数目和设备API的数目以及相应的权重来计算。

8、根据附记6所述的方法,其中,

所述测试用例覆盖率和所述测试用例错误检测率是通过对应用程序的测试结果进行分析得到的,其中,

用测试用例包括的操作的数量与应用程序包括的总操作数的比值来计算该测试用例的测试用例覆盖率;以及

用在测试用例中测得的错误的数量与测出的总错误数的比值来计算该测试用例的测试用例错误检测率。

9、根据附记6所述的方法,还包括:在对平台或者设备进行升级之后,选择优先级分数较高的测试用例对应用程序进行测试。

10、一种用于确定测试用例优先级的装置,包括:

操作序列转换单元,被配置为将每个测试用例分别转换为操作序列;

分类单元,被配置为对所述操作序列中的每个操作进行分类,其中,当两个操作的控件类型和动作类型是相同的,则将该两个操作分为同一种类;

操作优先级分数计算单元,被配置为对于每个操作,确定该操作是否被训练过,

如果该操作被训练过,则利用根据所述训练方法得到的操作的优先级模型来计算该操作的优先级分数,

如果该操作未被训练过,则基于与该操作种类相同的、被训练过的所有操作的优先级分数来计算该操作的优先级分数;以及

测试用例优先级分数计算单元,被配置为基于测试用例所包括的所有操作的优先级分数来计算测试用例的优先级分数。

11、根据附记10所述的装置,其中,

所述操作优先级分数计算单元进一步被配置为基于测试用例覆盖率、测试用例错误检测率以及应用程序复杂度来计算计算所述测试用例的优先级分数。

12、根据附记11所述的装置,其中,

所述应用程序复杂度基于操作的数目、平台API的数目和设备API的数目以及相应的权重来计算。

13、根据附记11所述的装置,其中,

所述测试用例覆盖率和所述测试用例错误检测率是通过对应用程序的测试结果进行分析得到的,其中,

用测试用例包括的操作的数量与应用程序包括的总操作数的比值来计算该测试用例的测试用例覆盖率;以及

用在测试用例中测得的错误的数量与测出的总错误数的比值来计算该测试用例的测试用例错误检测率。

14、根据附记11所述的装置,还包括测试单元,被配置为在对平台或者设备进行升级之后,选择优先级分数较高的测试用例对应用程序进行测试。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1