一种接口测试用例生成方法及装置与流程

文档序号:21592418发布日期:2020-07-24 16:40阅读:167来源:国知局
一种接口测试用例生成方法及装置与流程

本发明属于软件测试技术领域,尤其涉及一种接口测试用例生成方法及装置。



背景技术:

接口测试是对软件需求规格说明中的接口需求逐项进行的测试,可以发现软件中存在的功能性、容错性和互操作性等方面的问题,是软件测试中经常采用的一种基本测试类型。接口测试一般要按照接口协议进行正常、异常和边界值等情况的测试。

接口协议一般要描述数据帧的组成,如帧头、长度、1…n个有效数据、校验等多个字段,并会对每个字段的数据类型、取值范围及字段之间的约束关系进行定义。在接口测试过程中,测试人员需要依据测试规程,针对接口协议中的每个字段取正常、异常及边界等多个数值,组合各字段的测试数据形成可执行的测试用例。

目前的测试用例生成方式由测试人员依据接口协议组合各个字段的测试数据生成测试用例,不同测试人员得到的测试用例差异很大,所设计的测试用例数量往往会受到人为因素的限制,难以保证测试的充分性,且很难保证测试结果一致性。此外,接口数据的输入参数多,测试用例存在组合爆炸问题,导致测试占用的资源非常多。



技术实现要素:

有鉴于此,本发明的目的在于提供一种接口测试用例生成方法及装置,在确保有效测试覆盖的前提下,解决传统的接口测试用例数量多、占用开销大的问题,具体的技术方案如下:

一方面,本申请提供了一种接口测试用例生成方法,包括:

从待测试接口的接口协议中提取输入参数;

依据所述接口协议确定各个输入参数的正常测试数据子集和异常测试数据子集,所述正常测试数据子集是使接口功能正常的参数取值,所述异常测试数据子集是使接口功能异常的参数取值;

各个输入参数分别从对应的正常测试数据子集中取值,并基于正交阵列法将各个输入参数的取值进行组合,得到正常测试用例集;

各个输入参数中的任一个从对应的异常测试数据子集中取值,且其它的输入参数均从对应的正常测试数据子集中取值,得到异常测试用例集。

可选地,所述输入参数包括独立参数和具有依赖关系的关联参数;

依据所述接口协议确定各个输入参数的正常测试数据子集和异常测试数据子集,包括:

从所述接口协议中提取所述待测试接口的各个输入参数的数据属性信息,所述数据属性信息包括数据类型和取值范围;

根据各个输入参数的数据属性信息确定每个输入参数对应的等价类;所述等价类包括正常等价类和异常等价类;

确定每个输入参数对应的各个等价类的一组典型值,得到各个输入参数对应的正常等价类数据集和异常等价类数据集;

依据各个关联参数从对应的正常等价类数据集中取值,且各个关联参数的取值满足各个关联参数的约束关系,得到满足约束关系的测试数据子集;

基于独立参数对应的正常等价类数据集和所述满足约束关系的测试数据子集,得到所述正常测试数据子集;

依据各个关联参数从对应的正常等价类数据集中取值,且各个关联参数的取值不满足各个关联参数的约束关系,得到不满足约束关系的测试数据子集;

基于任一参数对应的异常等价类数据集,以及,各个独立参数对应的正常等价类数据集和所述不满足约束关系的测试数据子集,得到所述异常测试数据子集。

可选地,所述输入参数包括独立参数和关联参数;

所述各个输入参数分别取对应的正常测试数据子集中的数据,并基于正交阵列法将各个输入参数的取值进行组合得到正常测试用例集,包括:

各个独立参数的取值从对应的正常等价类数据集中确定,得到正常取值的独立参数,且各个关联参数的取值从对应的满足约束关系的测试数据子集中确定,得到正常取值的关联参数;

采用正交阵列法组合各个正常取值的独立参数及各个正常取值的关联参数,生成两两覆盖的正常测试用例集。

可选地,所述接口参数中存在多个约束条件;

所述各个输入参数分别取对应的正常测试数据子集中的数据,并基于正交阵列法将各个输入参数的取值进行组合得到正常测试用例集,还包括:

将各个约束条件下的正常测试用例集取并集得到所述待测试接口的全部正常测试用例集。

可选地,所述输入参数包括独立参数和关联参数;

所述各个输入参数中的任一个从对应的异常测试数据子集中取值,且其它的输入参数均从对应的正常测试数据子集中取值,得到异常测试用例集,包括:

任一个独立参数从异常测试数据子集中取值,且其它参数取正常测试数据子集中的正常默认值,得到一个异常测试用例,并将全部独立参数依次取异常值时生成的异常测试用例取并集,得到单缺陷覆盖的第一类异常测试用例集;

各个独立参数的取值均为对应的正常默认值,且各个关联参数从不满足约束条件的测试数据子集中取值,得到第二类异常测试用例集;

将第一类异常测试用例集和第二类异常测试用例集取并集,得到所述异常测试用例集。

可选地,所述输入参数中存在多个约束条件;

所述将第一类异常测试用例集和第二类异常测试用例集取并集,得到所述异常测试用例集,包括:

将第一类异常测试用例集,以及各个约束条件对应的第二类异常测试用例集取并集,得到所述异常测试用例集。

可选地,所述输入参数只包括独立参数;

各个输入参数中的任一个从对应的异常测试数据子集中取值,且其它的输入参数均从对应的正常测试数据子集中取值,基于基本选择法将各个输入参数的取值进行组合得到异常测试用例集,包括:

任一独立参数从对应的异常测试数据子集中取值,且其它的输入参数均取各自对应的正常测试数据子集中的正常默认值,得到一个异常测试用例;

将每一个独立参数取异常数时对应的异常测试用例组合得到所述待测试接口对应的异常测试用例集。

另一方面,本申请还提供了一种接口测试用例生成装置,包括:

参数提取模块,用于从待测试接口的接口协议中提取输入参数;

测试数据子集确定模块,用于依据所述接口协议确定各个输入参数的正常测试数据子集和异常测试数据子集,所述正常测试数据子集是使接口功能正常的参数取值,所述异常测试数据子集是使接口功能异常的参数取值;

正常测试用例生成模块,用于各个输入参数分别从对应的正常测试数据子集中取值,并基于正交阵列法将各个输入参数的取值进行组合,得到正常测试用例集;

异常测试用例生成模块,用于将各个输入参数中的任一个从对应的异常测试数据子集中取值,且其它的输入参数均从对应的正常测试数据子集中取值,得到异常测试用例集。

可选地,所述输入参数包括独立参数和具有依赖关系的关联参数;所述测试数据子集确定模块,具体用于:

从所述接口协议中提取所述待测试接口的各个输入参数的数据属性信息,所述数据属性信息包括数据类型和取值范围;

根据各个输入参数的数据属性信息确定每个输入参数对应的等价类;所述等价类包括正常等价类和异常等价类;

确定每个输入参数对应的各个等价类的一组典型值,得到各个输入参数对应的正常等价类数据集和异常等价类数据集;

依据各个关联参数从对应的正常等价类数据集中取值,且各个关联参数的取值满足各个关联参数的约束关系,得到满足约束关系的测试数据子集;

基于独立参数对应的正常等价类数据集和所述满足约束关系的测试数据子集,得到所述正常测试数据子集;

依据各个关联参数从对应的正常等价类数据集中取值,且各个关联参数的取值不满足各个关联参数的约束关系,得到不满足约束关系的测试数据子集;

基于任一参数对应的异常等价类数据集,以及,各个独立参数对应的正常等价类数据集和所述不满足约束关系的测试数据子集,得到所述异常测试数据子集。

可选地,所述输入参数包括独立参数和关联参数;所述正常测试用例生成模块具体用于:

各个独立参数的取值从对应的正常等价类数据集中确定,得到正常取值的独立参数,且各个关联参数的取值从对应的满足约束关系的测试数据子集中确定,得到正常取值的关联参数;

采用正交阵列法组合各个正常取值的独立参数及各个正常取值的关联参数,生成两两覆盖的正常测试用例集。

可选地,所述输入参数包括独立参数和关联参数,所述异常测试用例生成模块具体用于:

任一个独立参数从异常测试数据子集中取值,且其它参数取正常测试数据子集中的正常默认值,得到一个异常测试用例,并将全部独立参数依次取异常值时生成的异常测试用例取并集,得到单缺陷覆盖的第一类异常测试用例集;

各个独立参数的取值均为对应的正常默认值,且各个关联参数从不满足约束条件的测试数据子集中取值,得到第二类异常测试用例集;

将第一类异常测试用例集和第二类异常测试用例集取并集,得到所述异常测试用例集。

本申请提供的接口测试用例生成方法,从接口协议中提取输入参数,并确定各个参数的正常测试数据子集和异常测试数据子集。各个输入参数从正常测试数据子集中取值,并利用正交阵列法对各个参数的取值进行组合,从而生成正常测试用例集;各个输入参数中的任一个参数从异常测试数据子集中取值,同时,其它参数均从正常测试数据子集中取值,然后,基于基本选择法将各个参数的取值进行组合得到异常测试用例集。本方案针对不同的参数输入域采用不同的组合策略,针对正常测试数据采用正交阵列法生成两两覆盖的正常测试用例集,从而实现使用较少的资源极大限度地验证待测试接口的正常。针对异常测试数据采用基本选择法生成单覆盖的异常测试用例集,既能确定异常来源又能避免测试用例数目激增。该方案在取得良好测试覆盖的同时,大幅降低了测试开销,有效提升了接口测试效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种接口测试用例生成方法的流程图;

图2是本申请实施例提供的接口测试用例生成过程示意图;

图3是本申请实施例提供的生成正常测试用例集的示意图;

图4是本申请实施例提供的生成第一类异常测试用例集的示意图;

图5是本申请实施例提供的生成第二类异常测试用例集的示意图;

图6是本申请实施例提供的一种接口测试用例生成装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1和图2,图1示出了本申请实施例提供的一种接口测试用例生成方法的流程图,图2示出了接口测试用例生成过程的示意图。

该方法用于生成能够对接口功能进行测试的测试用例,如图1所示,该方法包括以下步骤:

s110,从待测试接口的接口协议中提取输入参数。

将待测试接口的接口协议的不同字段分别作为接口测试的不同输入参数,即输入参数;然后,分析各个输入参数之间是否存在约束关系r,不存在约束关系的参数称为独立参数(separateparameter,sp);存在约束关系的参数称为关联参数(relevantparameter,rp)。

对于一个接口,其对应的输入参数可能同时包括独立参数和关联参数两种类型,或者,可能只包括独立参数,或者,可能只包括关联参数。

此步骤即图2中从接口协议中提取参数及其约束关系得到独立参数、存在约束关系的关联参数。

s120,依据接口协议确定各个输入参数的正常测试数据子集和异常测试数据子集。

在本申请的一个实施例中,s120的实施过程如下:

依据接口协议,提取该接口各个字段的数据属性信息,如数据类型、取值范围等,据此确定每个参数的正常输入域和异常输入域,并对其进行等价类划分,包括正常等价类和异常等价类。为每个等价类确定一组典型值(即,正常等价类数据集和异常等价类数据集),作为生成测试用例的取值依据。另外,从每个参数对应的典型值中选取一个默认值作为该参数的基本值,以便后续使用基本选择法对参数进行组合时使用,其中,默认值的选取能够体现软件在正常操作或用户使用剖面下各个接口参数的常规取值。

需要说明的是,对于可能存在边界值的参数,需要确定此类参数的边界等价类对应的数据,并将边界等价类对应的数据划分至正常输入域或异常输入域。例如,按照略小于最小值(min-)、最小值(min)、略大于最小值(min+)、略小于最大值(max-)、最大值(max)和略大于最大值(max+)依次设定边界值,并将min-和max+纳入异常等价类数据集中,将min,min+,max-,max纳入正常等价类数据集中。

对于仅包括独立参数的接口而言,各个独立参数均取正常等价数据集即构成正常测试数据子集;各个独立参数中有任一参数取异常数据,其他参数取正常数据即构成异常测试数据子集。

对于包括关联参数的接口而言,当各个关联参数分别从对应的正常等价类数据集中取值,且各个关联参数的取值满足相应的约束关系时,得到满足约束关系的测试数据子集tscrs;当各个关联参数从对应的正常等价类数据集中取值且各关联参数的取值不满足相应的约束关系时,得到不满足约束关系的测试数据子集tscru。

一个接口可能包括多组关联参数,即包括多个约束关系,对应得到多个满足约束关系的测试数据子集及多个不满足约束关系的测试数据子集。满足约束关系的测试数据子集属于正常测试数据子集,不满足约束关系的测试数据子集属于异常测试数据子集。

对于同时包括独立参数和关联参数的接口而言,正常测试数据子集包括各个独立参数的正常等价数据集以及各个关联参数对应的满足约束关系的测试数据子集;异常测试数据子集包括独立参数的异常等价数据集及各个关联参数对应的不满足约束关系的测试数据子集。

利用s120即可确定图2中的独立参数正常等价类数据集和异常等价类数据集,以及,关联参数对应的满足约束关系的测试数据子集及不满足约束关系的测试数据子集。

然后,根据各个参数对应的正常测试数据子集和异常测试数据子集中的数据组合得到测试用例,在本申请的实施例中,测试用例包括面向正常输入数据的测试用例即正常测试用例(s130),以及面向异常输入数据的测试用例即异常测试用例(s140)。

s130,各个输入参数分别取对应的正常测试数据子集中的数据,并基于正交阵列法将各个输入参数的取值进行组合得到正常测试用例集。

其中,正常测试用例中的输入参数的取值均在正常范围内,用于验证接口传输功能是否正常。

正交阵列是一个数值矩阵,每一列代表一个输入参数。该方法通过定义一组输入参数的配对方式的组合,尽可能限制测试用例数目的激增。

对于仅包括独立参数的接口而言,正常测试用例集的产生过程如下:各个独立参数均从正常等价类数据集中取值,针对各个参数的取值采用正交阵列法进行组合得到两两覆盖的正常测试用例集。

对于接口只包括关联参数的场景,各个关联参数从正常等价类数据集中取值,同时各关联参数的取值满足相应的约束关系,然后,采用正交阵列法将各参数的取值进行组合生成正常测试用例集。

对于同时包括独立参数和关联参数的接口,此种场景下,由图2可知,基于独立参数的正常等价类数据集及关联参数的满足约束条件的测试数据子集,利用正交阵列法对各个取值的组合即可得到正常测试用例集。具体的,各个独立参数从正常等价类数据集中取值,且各个关联参数也从正常等价类数据集取值同时满足对应的约束关系;然后,采用正交阵列法将各个参数的取值进行组合生成正常测试用例集。

对于接口中包括多种约束关系的应用场景,按照上述的方式得到每个约束条件的正常测试用例集,并将每个约束条件对应的正常测试用例集取并集,得到该接口的全部正常测试用例集。

例如,输入参数的数量为n个,输入参数用pi表示,则i∈[1,n],假设pj,…,pl为存在约束关系的参数(即,关联参数),其中j<l<n。若要实现接口正常数据处理功能,则要求每个参数的取值均为正常等价类数据集中的数据,而且,pj,…,pl的取值满足相应的约束关系。用fnormal表示接口实现正常功能的操作数,则其对应的逻辑表达式如下:

fnormal=p1normal∩p2normal∩…p(j-1)normal∩tscrs∩p(l+1)normal…∩pnnormal(1)

式1中,p1normal、p2normal、…、pnnormal为n个输入参数的逻辑运算操作数,各个输入参数取正常值时为“真”,取异常值时为“假”;tscrs在关联参数pj,…,pl的取值满足相应的约束关系时为“真”,取值不满足约束条件时为“假”。fnormal为逻辑运算结果,接口能够实现正常功能时为“真”,接口不能实现正常功能时为“假”。

根据所述的输入参数模型构建,每个输入参数pj会有vi个可选取值,选择其中的正常输入值,将tscrs成立时关联参数的取值与其它独立参数的取正常值一起进行正交阵列组合,产生pair-wise的测试覆盖,从而实现利用较小的测试开销较大限度地验证被测件接口的正常功能。

假设pj,…,pl通过不同的参数取值,存在n种约束关系,分别用tscrs-1、tscrs-2、…、tscrs-n表示,针对每种约束关系,均按照式(1)生成测试用例集,将n种情况下生成的测试用例集取并集后,得到最终的正常测试用例集。

其中,正交阵列法可以采用现有的生成工具如pict(pairwiseindependentcombinatorialtesting)工具,进行设计,以提高效率。

s140,任一个输入参数从对应的异常测试数据子集中取值,且其它的输入参数均从对应的正常测试数据子集中取值,基于基本选择法将各个输入参数的取值进行组合得到异常测试用例集。

异常测试用例中的输入参数处于异常范围内,用于验证接口传输功能是否异常。

基本选择法首先要标识出一个基本测试用例,基本测试用例的选择可以采用任意标准,最简单的、最小的,或第一个都可以,具体由测试人员决定或基于某种已存在的运行剖面。从基本测试用例出发,通过每次改变其中一个参数的等价域取值、同时确保其它参数的取值与基本测试用例中相应参数的取值一致,从而创建新的测试用例。

对于接口仅包括独立参数的场景,当任意一个独立参数从异常测试数据子集中取值,且其它参数取正常测试数据子集中的正常默认值,得到一个异常测试用例;所有独立参数依次取异常值时产生的异常测试用例取并集,得到最终的异常测试用例集。

对于接口包括关联参数的场景,此种应用场景下,如图2所示,基于独立参数的异常等价类数据集以及关联参数的不满足约束关系的测试数据子集,利用基本选择法生成异常测试用例集。

其中,异常测试用例集包括两类:1)各个参数依次取异常值时得到的第一类异常测试用例集;2)各个参数均取正常值,但关联参数的取值不满足约束关系时得到的第二类异常测试用例集。

生成第一类异常测试用例集的过程如下:

任一参数的取值为异常等价类数据集中数据,同时其它参数的取值均为正常等价类数据集中的默认值,生成一个第一类异常测试用例;将各个参数分别取异常值时生成的第一类异常测试用例取并集得到第一类异常测试用例集。

例如,仍以n个参数的接口为例,一般而言,若要使接口传输功能异常,仅需其中某一个参数的输入为异常测试数据,无需考虑关联参数间是否满足约束关系。当然,多个异常输入往往更容易产生接口传输功能异常,但为了定位异常来源,一般采用单个测试用例仅包含一个异常参数输入。用fexception表示接口传输功能异常,则逻辑表达式为:

fexception=p1exception∪p2exception∪…∪pnexception(2)

式(2)中,p1exception、p2exception、…、pnexception分别为各个输入参数对应的逻辑运算操作数,当各个输入参数为异常输入时对应操作数为“真”,当为正常输入时对应操作数为“假”。fexception当接口功能异常时为“真”,接口功能正常时为“假”。

每个输入参数pj会有vi个可选取值,选择其中的异常输入值,对各参数取值采用基本选择法进行组合,产生单缺陷的测试用例集。

生成第二类异常测试用例集的过程如下:

各个参数(包括独立参数和关联参数)均从正常等价类数据集中取值,但是关联参数的取值不满足约束关系,生成该约束关系对应的第二类异常测试用例集。

如果输入参数中包括多个约束关系,则按照上述方式生成各个约束关系对应的第二类异常测试用例集。

最后,将第一类异常测试用例集与各个约束条件下生成的第二类异常测试用例集取并集,得到最终的异常测试用例集。

仍以包含n个参数的接口为例,每个输入参数为pi,其中i∈[1,n]。假设pj,…,pl为存在约束关系的参数(设j<l<n),即关联参数,其他为独立参数。

一般而言,可能存在各输入参数均取正常值但关联参数间不满足约束关系的情况,使得接口功能异常。因此,假设tscru是一个由pj,…,pl参数均取正常值但不满足约束关系的取值所组成的异常测试数据子集。用fexception表示接口传输功能异常,则逻辑表达式为:

fexception=p1normal∩p2normal∩…p(j-1)normal∩tscru∩p(l+1)normal…∩pnnormal(3)

式(3)中,当各个独立参数分别取正常值时其相应的操作数取值为“真”,取异常值时操作数取值为“假”,更具体的,正常值为正常等价类数据集中的默认值。tscru在各关联参数取正常值但不满足约束关系时为“真”,满足约束关系时为“假”。

式(3)的核心是针对tscru的情况,利用基本选择法生成由关联参数组成的测试子集,所生成的测试子集数量等同于由所有参数组成的异常测试用例的数量,因为独立参数均取正常输入域内的唯一默认值,不会新增测试用例数量。

假设pj,…,pl之间,通过不同的参数取值,存在n种约束关系不满足情况,用tscru-1、tscru-2、…、tscru-n表示,则针对每种情况,均需按照式(3)生成测试用例集,再与式(2)所生成的测试用例集取并集,最终形成异常测试用例集。

本实施例提供的接口测试用例生成方法,从接口协议中提取输入参数,并确定各个参数的正常测试数据子集和异常测试数据子集。各个输入参数从正常测试数据子集中取值,并利用正交阵列法对各个参数的取值进行组合,从而生成正常测试用例集;各个输入参数中的任一个参数从异常测试数据子集中取值,同时,其它参数均从正常测试数据子集中取值,然后,基于基本选择法将各个参数的取值进行组合得到异常测试用例集。本方案针对不同的参数输入域采用不同的组合策略,针对正常测试数据采用正交阵列法生成两两覆盖的正常测试用例集,从而实现使用较少的测试用例较大限度地验证待测接口的正常功能。针对异常测试数据采用基本选择法生成单覆盖的异常测试用例集,既能有效发现接口功能异常又便于故障定位,且能避免测试用例数目的大幅增加。该方案在取得良好测试覆盖的同时,大幅降低了测试开销,有效提升了接口测试效率。

下面将以本申请提供的接口测试用例生成方法应用于gps定位信息输出格式gpgga协议接口测试为例进行说明:

gpgga协议广泛用于卫星导航定位系统中,在接口测试中,通常需要模拟正常的gpgga协议帧来验证接口功能实现情况,以及模拟异常的接口数据帧来测试接口是否作了异常处理。

为了消除冗余又不失一般性,从gpgga协议的数据字段中抽取了有代表性的“纬度”、“定位质量指标”、“使用卫星数量”、“高度单位”和“差分参考基站标号”等5个字段,保留了字段间的约束关系,同时还保留了帧头和校验字段,组成了“简化版”的gpgga协议,定义为s-gpgga协议,其格式为:$gpgga,<1>,<2>,<3>,<4>,<5>*hh<cr><lf>。其中,s-gpgga协议的格式的详细说明如表1所示:

表1

协议解析如下:‘$’、‘,’、‘*’、‘cr’、‘lf’为预定义字符集。其中,‘$’表示参数语句定界符开始,‘,’表示字段定界符,‘*’表示异或和校验字段定界符,‘cr’表示回车-语句定界符结束,‘lf’表示换行。字段由位于两个适当的定界字符之间的一串有效字符,或是没有字符(空字段)组成。s-gpgga协议的字段由帧头字段、数据字段和校验字段组成。

‘ddmm.mmmm’表示纬度,小数点左边的数据长度固定为4位,其中2位数表示“度”,后2位数表示“分”;小数点后面4位表示“分”。当数据不可靠或不可得时,应该使用空字段。和校验字段是语句中的最后一个字段,它在定界符“*”之后,用‘hh’表示,为两个固定长度的字符。

利用上述的接口测试用例生成方法实施例得到s-gpgga协议的接口测试用例的过程如下:

(1)从s-gpgga协议中提取输入参数

s-gpgga协议中共有1个帧头字段,5个数据字段和1个校验字段,每个字段作为接口测试的输入参数,共计7个参数,分别用c0,c1,c2,…,c6标识。为了便于进行参数比对,在表1s-gpgga语句格式说明的最后一列添加了参数标识。

而且,这7个参数中的帧头c0、高度单位c4、异或校验和c6不存在依赖关系。其中,c6虽由其它参数值计算得出,但校验和算法不变,并非应用逻辑上的依赖关系。而纬度c1、定位质量指标c2、使用卫星数量c3、差分参考基站标号c5存在依赖关系。

假设关联参数间的依赖关系如下:①当使用卫星数量c3取0~2时,定位质量指标c2取0,即定位无效。此时的纬度c1和差分参考基站标号c5参数取值为空,用‘’表示。②当使用卫星数量c3取≥3时,定位质量指标c2取1,即实时gps模式。此时的纬度c1有效,而差分参考基站标号c5参数取值为空。③当使用卫星数量c3取≥3时,定位质量指标c2取2,即差分gps模式,此时的纬度c1和差分参考基站标号c5参数取值均为有效。

(2)依据s-gpgga协议中每个输入参数的格式要求,确定各个输入参数的正常测试数据子集和异常测试数据子集

首先,参照s-gpgga语句的详细格式中每个接口参数的具体格式要求,结合其所代表的物理意义,确定正常输入域、异常输入域及边界输入域,并进行等价类划分。各接口参数的输入域等价类划分表如表2所示:

表2

而后,为每个等价类选定具体的取值,并将内边界取值(min,min+,max-,max)融入到正常输入域和外边界取值(min-,max+)融入到异常输入域中。正常输入域参数模型如表3所示:

表3

表3中标注下划线的取值设定为该输入参数的“默认”取值。代表了接口实现的正常运行剖面其中,校验和c6参数由实际组帧时通过异或校验计算得出,纬度c1和参考基站c5在定位质量取0时为空。“—”表示该字段无其它取值,‘’表示字段取值为空。

异常输入域参数模型如表4所示:

表4

然后,对于关联参数,需构建满足约束关系测试数据子集和不满足约束关系测试数据子集。

1)约束关系满足的测试数据子集如下:

tscrs-1:当卫星数量c3取0、1或2时,c2取0,c1取‘’,c5取‘’;

tscrs-2:当卫星数量c3取6、11或12,c2取1时,c1取除‘’之外的所有有效值,c5取‘’;

tscrs-3:当卫星数量c3取6、11或12,c2取2时,c1取除‘’之外的所有有效值,c5取除‘’之外的所有值。

2)约束关系不满足的测试数据子集如下:

tscru-1:当卫星数量c3取0、1或2时,c2取1或2,c1取‘’值,c5取‘’值;

tscru-2:当卫星数量c3取6、11或12,c2取0时,c1取除‘’之外的所有有效值,c5取除‘’之外的所有值。

(3)将关联参数对应的满足约束关系的测试数据子集与其它独立参数的正常等价类数据集进行组合,得到正常测试用例集

如图3所示,各个独立参数的正常值与关联参数满足约束关系的测试数据子集的取值所对应的操作数进行“逻辑与”运算,求解得到使fnormal为“真”,即s-gpgga接口传输正常时,各种取值组合。最终分别得到各参数正常输入取值分别如表5、表6、表7所示:

表5(约束关系满足tscrs-1)

考虑到校验和c6是由s-gpgga协议中$至*中间各参数值的异或校验计算得出,中间各参数取值确定后,其值也就确定下来。因此,校验和c6无须作为输入数据参与正交阵列法生成测试用例。

根据表5提供的正常输入数据,采用正交阵列生成工具生成3组数据,每组数据由c0至c5参数取值组成,通过异或校验计算,得出c6的值,加上语句定界符后便可得到3个测试用例,分别为:

no.1:$gpgga,,0,1,m,,*1a

no.2:$gpgga,,0,0,m,,*1b

no.3:$gpgga,,0,2,m,,*19

表6(约束关系满足tscrs-2)

同理,根据表6提供的正常输入数据,采用正交阵列工具能够生成15组数据,每组数据由c0至c5参数取值组成,通过异或校验计算,得出c6的值,加上语句定界符后便可得到15个测试用例,因用例数量太多,在此不再一一列出,只给出第1个测试用例为:$gpgga,9000.0000,1,11,m,,*0d。

表7(满足约束关系tscrs-3)

同理,根据表7提供的正常数据,采用正交阵列工具生成25组测试数据,每组数据由c0至c5参数取值组成,通过异或校验计算,得出c6的值,加上语句定界符后便可得到25个测试用例,同样只给出第1组测试用例:$gpgga,8900.0101,2,6,m,512,*06。

综合上述3种约束关系满足情况,针对正常输入情况下的测试,所生成的正常测试用例共3+15+25=43个。

(4)s-gpgga协议中的各个输入参数依次取异常值,且其它参数取正常值,将各个取值进行组合得到第一类异常测试用例集

如图4所示,s-gpgga协议中c0~c6依次取异常值时,生成s-gpgga接口传输异常的测试用例集,即第一类异常测试用例集,具体包括步骤1)~2):

1)由各个参数的默认值组成基本测试用例,即$gpgga,4500.0000,2,6,m,512,*06,此为正常测试用例。

2)按照表4中各个参数的异常值替代基本测试用例中的相应参数值,每次只替代1个参数取值,形成不同的测试用例。去除正常的基本测试用例共可得到19个异常测试用例。列出其中1个异常测试用例如下:$ffgga,4500.0000,2,6,m,512,*11。

(5)s-gpgga协议中的各个输入参数(包括独立参数和关联参数)均取正常值,但关联参数的取值不满足约束关系,将各个取值进行组合得到第二类异常测试用例集

如图5所示,各个独立参数取默认值,关联参数的取值为tscru-1、tscru-2中的任意一种,即表8和表9所示的数据集,然后将独立参数的取值和关联参数的取值一起构成异常测试用例。

表8(约束关系:tscru-1)

上文所述的某些参数如c1、c3、c5的默认取值均不在tscru-1关联参数的可取值范围中。为此,在表8中重新设定基本测试用例,用于基本测试用例的各参数值以下划线标出。

根据表8中提供的不满足约束关系的测试数据子集,首先确定基本测试用例,该基本用例为异常测试用例,而后依次改变各关联参数的取值,共可组合出4个约束关系不满足的测试子集。由于独立参数帧头c0、高度单位c4和异或校验和c6取正常默认值,故得出4个完整的第二类异常测试用例。列出其中1个异常测试用例如下:$gpgga,,2,1,m,,*18。

表9(约束关系:tscru-2)

同理,根据表9提供的不满足约束关系的测试数据子集,生成11个第二类异常测试用例。其中1个异常测试用例如下:$gpgga,4500.0000,0,6,m,512,*04。

综合以上各参数依次取异常值和两种约束关系不满足、其它独立参数取正常值的各种情况,采用基本选择法生成了异常测试用例集,共包含19+4+11=34个异常测试用例。

此实施案例中,统计所生成的正常测试用例43个和异常测试用例34个,共计77个。若用全组合覆盖方法,考虑s-gpgga中有7个参数,各参数分别取正常、异常输入数据,得出全组合覆盖的测试用例数为:3×8×5×9×3×8×4=103,680个。可见,两种方法所生成的测试用例数量相差巨大。

本发明提出的接口测试用例生成方法,对于正常输入测试数据,采用正交阵列法生成测试用例集,可以实现成对覆盖和部分多因素覆盖,便于验证接口正常功能;对于异常输入测试数据,可以实现单缺陷覆盖,便于缺陷快速定位。该方法在取得良好测试覆盖的同时,大幅降低了测试开销,有效提升了接口测试效率。

相应于上述的接口测试用例生成方法实施例,本申请还提供了接口测试用例生成装置实施例。

请参见图6,示出了本申请实施例提供的一种接口测试用例生成装置的结构示意图,该装置应用于对接口功能进行测试的测试用例,该装置主要包括:

参数提取模块110,用于从待测试接口的接口协议中提取输入参数。

测试数据子集确定模块120,用于依据所述接口协议确定各个输入参数的正常测试数据子集和异常测试数据子集,所述正常测试数据子集是使接口功能正常的参数取值,所述异常测试数据子集是使接口功能异常的参数取值。

在本申请的一个实施例中,所述输入参数包括独立参数和具有依赖关系的关联参数;所述测试数据子集确定模块,具体用于:

从所述接口协议中提取所述待测试接口的各个输入参数的数据属性信息,所述数据属性信息包括数据类型、取值范围等;

根据各个输入参数的数据属性信息确定每个输入参数对应的等价类;所述等价类包括正常等价类和异常等价类;

确定每个输入参数对应的各个等价类的一组典型值,得到各个输入参数对应的正常等价类数据集和异常等价类数据集;

依据各个关联参数从对应的正常等价类数据集中取值,且各个关联参数的取值满足各个关联参数的约束关系,得到满足约束关系的测试数据子集;

基于独立参数对应的正常等价类数据集和所述满足约束关系的测试数据子集,得到所述正常测试数据子集;

依据各个关联参数从对应的正常等价类数据集中取值,且各个关联参数的取值不满足各个关联参数的约束关系,得到不满足约束关系的测试数据子集;

基于任一参数对应的异常等价类数据集,以及,各个独立参数对应的正常等价类数据集和所述不满足约束关系的测试数据子集,得到所述异常测试数据子集。

正常测试用例生成模块130,用于各个输入参数分别从对应的正常测试数据子集中取值,并基于正交阵列法将各个输入参数的取值进行组合,得到正常测试用例集。

在本申请的一个实施例中,输入参数包括独立参数和关联参数;正常测试用例生成模块130具体用于:

各个独立参数的取值从对应的正常等价类数据集中确定,得到正常取值的独立参数,且各个关联参数的取值从对应的满足约束关系的测试数据子集中确定,得到正常取值的关联参数;

采用正交阵列法组合各个正常取值的独立参数及各个正常取值的关联参数,生成两两覆盖的正常测试用例集。

在本申请的另一个实施例中,如果接口参数中存在多个约束条件,则将各个约束条件下的正常测试用例集取并集得到所述待测试接口的全部正常测试用例集。

异常测试用例生成模块140,用于将各个输入参数中的任一个从对应的异常测试数据子集中取值,且其它的输入参数均从对应的正常测试数据子集中取值,得到异常测试用例集。

在本申请的一个实施例中,输入参数包括独立参数和关联参数异常测试用例生成模块140具体用于:

任一个独立参数从异常测试数据子集中取值,且其它参数取正常测试数据子集中的正常默认值,得到一个异常测试用例,并将全部独立参数依次取异常值时生成的异常测试用例取并集,得到单缺陷覆盖的第一类异常测试用例集;

各个独立参数的取值均为对应的正常默认值,且各个关联参数从不满足约束条件的测试数据子集中取值,得到第二类异常测试用例集;

将第一类异常测试用例集和第二类异常测试用例集取并集,得到所述异常测试用例集。

在输入参数中存在多个约束条件的情况下,将第一类异常测试用例集,以及各个约束条件对应的第二类异常测试用例集取并集,得到所述异常测试用例集。

在输入参数仅包括独立参数的情况下,异常测试用例集生成模块具体用于:

任一独立参数从对一个的异常测试数据子集中取值,且其它的输入参数均取各自对应的正常测试数据子集中的正常默认值,得到一个异常测试用例;

将每一个独立参数取异常数时对应的异常测试用例组合得到所述待测试接口对应的异常测试用例集。

本申请提供的接口测试用例生成装置,从接口协议中提取输入参数,并确定各个参数的正常测试数据子集和异常测试数据子集。各个输入参数从正常测试数据子集中取值,并利用正交阵列法对各个参数的取值进行组合,从而生成正常测试用例集;各个输入参数中的任一个参数从异常测试数据子集中取值,同时,其它参数均从正常测试数据子集中取值,然后,基于基本选择法将各个参数的取值进行组合得到异常测试用例集。本方案针对不同的参数输入域采用不同的组合策略,针对正常测试数据采用正交阵列法生成两两覆盖的正常测试用例集,从而实现使用较少的资源极大限度地验证待测试接口的正常。针对异常测试数据采用基本选择法生成单覆盖的异常测试用例集,既能确定异常来源又能避免测试用例数目激增。该方案在取得良好测试覆盖的同时,大幅降低了测试开销,有效提升了接口测试效率。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本申请各实施例中的装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。

本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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