一种测试用例的生成方法及电子设备

文档序号:7448 发布日期:2021-09-17 浏览:29次 英文

一种测试用例的生成方法及电子设备

技术领域

本申请涉及接口测试

技术领域

,尤其涉及一种测试用例的生成方法及电子设备。

背景技术

接口测试是利用测试用例向被测软件包括的接口提交输入数据,获取该接口返回结果并分析结果是否符合预期的测试。接口测试是软件测试中的一个重要分支。其中,接口测试的重点是测试用例的设计。测试用例的设计包括:对接口的接口参数,接口参数的输入数据,以及预期输出结果的设计。测试用例设计的关键原则是采用最少的测试用例找到被测软件中尽可能多的错误。

目前,测试用例的生成主要靠测试人员人工完成,导致测试用例的设计人工成本高,测试效率低下。另外,在微服务测试过程中,需要测试的接口的接口参数非常多(通常50+以上),若测试用例仍由测试人员人工完成,则进一步增加了人力成本,降低了测试效率。

发明内容

本申请实施例提供一种测试用例的生成方法及电子设备,解决了人工设计测试用例的人力成本高,且测试效率低的问题。

为达到上述目的,本申请实施例采用如下技术方案:

第一方面,本申请实施例提供一种测试用例的生成方法。该方法可以包括:获取第一测试用例;该第一测试用例为使用第一接口参数对第一接口进行测试的测试用例,该第一接口参数为被测软件在第一应用场景下使用的接口参数,该第一测试用例包括:上述第一接口参数和对应的输入数据;根据该第一接口的接口描述文件,获取上述第一接口参数的测试值,以及对应预期输出结果;根据上述第一接口参数对应的输入数据,上述第一接口参数的测试值,以及对应预期输出结果,生成上述第一接口参数的测试用例集,用于实现对上述第一接口的测试。

基于第一方面所述的方法,通过利用被测软件在应用场景下已知的测试用例,自动生成被测软件在应用场景下使用到的接口参数的测试用例集,用于对对应接口进行测试。相比于测试人员人工完成测试用例,本申请的方案能够基于应用场景下已知的测试用例,自动生成在该应用场景下使用到的接口参数的测试用例集,从而能够降低人工设计测试用例人本。此外,本申请的方案仅针对该应用场景下使用到的接口参数生成对应测试用例集,用于对这些接口参数对应接口进行测试,减少了测试用例的数据量,缩短了测试用例执行时间,进而缩短接口测试的时间,提高测试效率。

结合第一方面,在一种可能的实现方式中,上述根据第一接口参数对应的输入数据,第一接口参数的测试值,以及对应预期输出结果,生成第一接口参数的测试用例集,可以包括:针对第一接口参数中的每个接口参数:根据该接口参数的测试值和该第一接口参数中其他接口参数对应的输入数据,生成该接口参数的测试用例集;其中,该接口参数的测试用例集包括与该接口参数的测试值一一对应的测试用例;一个测试用例的接口参数的输入数据为一个测试值,其他接口参数的输入数据为其他接口参数对应的输入数据。

基于该可能的实现方式,可以通过第一接口参数中的接口参数的测试值和第一接口参数中其他接口参数对应的输入数据,生成该接口参数的测试用例集,从而能够生成第一接口参数的测试用例集。

结合第一方面,在另一种可能的实现方式中,第一接口的接口描述文件包括:第一接口的所有接口参数、每个接口参数的所有输入数据、以及每个接口参数在不同输入数据下第一接口的预期输出结果,上述根据第一接口的接口描述文件,获取第一接口参数的测试值,以及对应预期输出结果,可以包括:对接口描述文件进行分析,确定第一接口参数的类型;根据该第一接口参数的类型和该第一接口参数的所有输入数据,获取该第一接口参数的测试值;根据该第一接口参数在不同输入数据下第一接口的预期输出结果,获取该第一接口参数的测试值对应的预期输出结果。

基于该可能的实现方式,能够获取第一接口参数的测试值以及第一接口参数的测试值对应的预期输出结果,从而能够利用第一接口参数的测试值以及第一接口参数的测试值对应的预期输出结果,生成第一接口参数的测试用例集。

结合第一方面,在另一种可能的实现方式中,在上述获取第一测试用例之后,该方法还可以包括:对第一测试用例进行分析,确定第一接口参数和对应的输入数据。

基于该可能的实现方式,可以通过对第一测试用例进行分析,确定第一接口参数和对应的输入数据,从而便于利用第一接口参数和对应的输入数据,生成第一接口参数的测试用例集。

结合第一方面,在另一种可能的实现方式中,测试值包括正常值和异常值,该正常值对应的预期输出结果为成功,该异常值对应的预期输出结果为失败。

基于该可能的实现方式,可以通过测试值包括正常值和异常值、正常值对应的预期输出结果、异常值对应的预期输出结果,从而便于利用测试值,生成第一接口参数的测试用例集。

第二方面,本申请实施例提供一种测试用例的生成装置,该装置可以应用于电子设备,用于实现上述第一方面中的方法。该装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,例如,获取模块和生成模块等。

其中,获取模块,可以用于获取第一测试用例;第一测试用例为使用第一接口参数对第一接口进行测试的测试用例,第一接口参数为被测软件在第一应用场景下使用的接口参数,第一测试用例包括:第一接口参数和对应的输入数据;根据第一接口的接口描述文件,获取第一接口参数的测试值,以及对应预期输出结果。生成模块,可以用于根据第一接口参数对应的输入数据,第一接口参数的测试值,以及对应预期输出结果,生成第一接口参数的测试用例集,用于实现对第一接口的测试。

结合第二方面,在另一种可能的实现方式中,生成模块,具体用于针对第一接口参数中的每个接口参数:根据接口参数的测试值和第一接口参数中其他接口参数对应的输入数据,生成接口参数的测试用例集;其中,接口参数的测试用例集包括与接口参数的测试值一一对应的测试用例;一个测试用例的接口参数的输入数据为一个测试值,其他接口参数的输入数据为其他接口参数对应的输入数据。

结合第二方面,在另一种可能的实现方式中,第一接口的接口描述文件包括:第一接口的所有接口参数、每个接口参数的所有输入数据、以及每个接口参数在不同输入数据下所述第一接口的预期输出结果;获取单元,具体用于对接口描述文件进行分析,确定第一接口参数的类型;根据第一接口参数的类型和第一接口参数的所有输入数据,获取第一接口参数的测试值;根据第一接口参数在不同输入数据下第一接口的预期输出结果,获取第一接口参数的测试值对应的预期输出结果。

结合第二方面,在另一种可能的实现方式中,获取单元还用于对第一测试用例进行分析,确定第一接口参数和对应的输入数据。

结合第二方面,在另一种可能的实现方式中,获取单元还用于对第一测试用例进行分析,确定第一接口,并获取第一接口的接口描述文件。

结合第二方面,在另一种可能的实现方式中,测试值包括正常值和异常值,正常值对应的预期输出结果为成功,异常值对应的预期输出结果为失败。

第三方面,本申请实施例提供一种电子设备,包括:处理器,用于存储该处理器可执行指令的存储器。该处理器被配置为执行上述指令时,使得该电子设备实现如第一方面或第一方面的可能的实现方式中任一项所述的测试用例的生成方法。

第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序指令。当计算机程序指令被电子设备执行时,使得电子设备实现如第一方面或第一方面的可能的实现方式中任一项所述的测试用例的生成方法。

第五方面,本申请实施例提供一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码在电子设备中运行时,使得电子设备实现如第一方面或第一方面的可能的实现方式中任一项所述的测试用例的生成方法。

应当理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

附图说明

图1为本申请实施例提供的一种软件测试设备的结构示意图;

图2为本申请实施例提供的一种测试用例的生成方法的流程示意图;

图3为本申请实施例提供的另一种测试用例的生成方法的流程示意图;

图4为本申请实施例提供的一种接口测试方法的流程示意图;

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

具体实施方式

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

术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

随着人们对软件质量的要求越来越高,软件测试也变得越来越重要。接口测试是软件测试中的一个重要分支。接口测试是利用测试用例完成的,用于测试被测软件的接口是否满足特定需求。

目前,主要通过测试人员人工设计测试用例,这导致测试用例的设计人工成本高,测试效率低下。且要求测试人员具有一定的经验和较高的专业水平。另外,在微服务(微服务即将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值)的测试过程中,微服务涉及到的接口参数非常多,人工设计测试用例会进一步增加测试人员工作量,进一步降低测试效率。随着版本与接口演进,后续的维护成本也将持续扩大。

相关技术中可利用接口文档自动生成测试用例,以降低人工成本,提高测试效率。具体的,针对被测软件,可获取被测软件的所有接口的接口文档,根据被测软件的每个接口的接口文档,以及每个接口包括的所有接口参数,生成被测软件的每一个接口的测试用例。之后,将每一个接口的测试用例集成,以生成被测软件的测试用例。在该技术中,生成的测试用例可用于对该被测软件包括的所有接口进行测试。即使需要利用部分接口参数对接口进行测试,也是利用该被测软件的测试用例来完成的。这导致在需要利用部分接口参数对接口进行测试时,使用到的测试用例的数据量较大,从而导致接口测试的耗时较长,也即并未很好的解决测试效率低下的问题。

本申请实施例提供一种测试用例的生成方法,该方法可以基于应用场景下已知的测试用例,自动生成在该应用场景下使用到的接口参数的测试用例集。不需要测试人员人工设计,节省了人工成本。且仅针对该应用场景下使用到的接口参数生成对应测试用例集,用于对这些接口参数对应接口进行测试,减少了测试用例的数据量,缩短了测试用例执行时间,进而缩短接口测试的时间,提高测试效率。

下面对本申请实施例提供的测试用例的生成方法进行描述。

本申请实施例提供的测试用例的生成方法可以应用于软件测试设备,或称为测试设备。在一些示例中,该软件测试设备可以是个人计算机(Personal Computer,PC)、手机等电子设备。该软件测试设备也可以是服务器等设备。本申请实施例在此对软件测试设备的具体形态不做限制。

图1为本申请实施例提供的一种软件测试设备的结构示意图。如图1所示,该软件测试设备100可以包括:至少一个处理器101,通信线路102,存储器103,通信接口104。

其中,处理器101可以通过运行或执行存储在存储器103内的软件程序,以及调用存储在存储器103内的数据,执行软件测试设备100的各种功能。

在具体实现中,作为一种实施例,软件测试设备100可以包括一个处理器,也可以包括多个处理器。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

存储器103可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器103可以是独立存在,通过通信线路102与处理器101相连接。存储器103也可以和处理器101集成在一起。

其中,存储器103用于存储执行本申请方案的软件程序,并由处理器101来控制执行。

通信接口104,可以是使用任何收发器一类的装置,用于与其他设备或通信网络通信。

通信线路102,可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。

图1中示出的设备结构并不构成对软件测试设备100的限定,该软件测试设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

图2为本申请实施例提供的一种测试用例的生成方法的流程示意图。如图2所示,该测试用例的生成方法可以包括:

S201、软件测试设备获取场景用例,该场景用例是采用在应用场景A下使用的接口参数对对应接口进行测试的测试用例。

在软件(或称为应用程序)上线之前,通常需要对其进行测试,以检验其是否满足规定的需求或弄清预期结果与实际结果之间的差别。软件测试中的一个重要环节,是对软件包括的应用程序接口(application programming interface,API),如简称为接口进行测试。对接口进行测试主要是利用接口包括的接口参数完成的。其中,一个软件可包括多个接口,一个接口可包括一个或多个接口参数。

另外,软件实际运行过程中可能涉及多个应用场景,不同应用场景下使用到的该软件的接口参数可能相同,也可能不同。一个应用场景下使用到的接口参数通常是该软件的部分接口参数。如可以是软件包括的所有接口的部分接口参数,又如,可以是该软件包括的部分接口的所有或部分接口参数。示例性的,某软件运行可能涉及到应用场景1和应用场景2。在应用场景1下,需要使用到一个或多个接口参数(如称为接口参数1),利用该一个或多个接口参数1调用对应接口可实现对应的应用功能。在应用场景2下,需要使用到一个或多个接口参数(如称为接口参数2),利用该一个或多个接口参数2调用对应接口可实现另一应用功能。

例如,对于信息流应用(如新闻类应用),其在实际运行过程中可能涉及到的应用场景包括信息推荐场景。在该信息推荐场景下,需要使用的接口参数包括:用户账号(useridentifier,uid)、年龄(age)、手机类型(phone Type)和喜欢的颜色(color)。利用接口参数:uid,age,color和phone Type调用对应的接口,可实现根据用户账号、年龄、手机类型、喜欢的颜色等信息推荐不同的资讯信息,如个性新闻,个性视频等,即实现个性化推荐功能。如接口参数:uid,age,color和phone Type均属于信息流应用与该信息流应用的后台服务器之间的接口(为了便于描述,以下简称为接口1),也即利用接口参数:uid,age,color和phone Type调用接口1,可实现信息流应用的个性化推荐功能。当然,对于信息流应用,在其实际运行过程中还可能涉及其他场景,这些场景下,信息流应用可通过使用其他接口参数实现对对应接口的调用,以实现对应功能。

因此,在本申请实施例中,对于需进行接口测试的软件(如称为被测软件),可针对该软件的不同应用场景生成对应测试用例集,用于实现对应用场景下使用的接口参数对应接口的测试。例如,针对上述示例中,对于信息流应用,可针对信息推荐场景生成对应的测试用例集,用于实现对该信息推荐场景下使用的接口参数(如uid,age,color和phoneType)对应接口(如接口1)的测试。

其中,S201中的场景用例可以为本申请实施例中的第一测试用例,其是利用被测软件在某应用场景,如应用场景A下使用的接口参数对对应接口(如第一接口)进行测试的测试用例。该场景用例可以包括被测软件在该应用场景A下使用到的所有接口参数,以及每个接口参数对应的输入数据。场景用例还可以包括在对应输入数据下接口参数对应接口的预期输出结果。预期输出结果包括成功或失败。需要说明的是,应用场景A可以为本申请实施例中的第一应用场景,应用场景A下使用的接口参数可以为本申请实施例中的第一接口参数。

例如,在上述示例中,对于信息流应用,信息推荐场景使用到的接口参数可以包括:uid,age,color和phone Type。相应的,场景用例可以包括接口参数,如:uid,age,color和phone Type,以及每个接口参数对应的输入数据,如,uid=x001,age=25,color=blue及phone Type=v50。场景用例还可以包括在该输入数据下接口参数对应接口(如上述接口1)的预期输出结果,如预期输出结果为成功。

其中,上述场景用例中,接口参数、输入数据及对应预期输出结果是测试人员人工配置的。

S202、软件测试设备根据场景用例,确定应用场景A下使用的接口参数和对应的输入数据。

在获取到场景用例之后,软件测试设备可根据该场景用例确定被测软件在该应用场景A下使用的接口参数和对应的输入数据。由于场景用例是已知的测试用例,因此,可以对场景用例进行用例脚本分析,从而确定出被测软件在应用场景A下使用到的所有接口参数和每个接口参数的输入数据。

例如,对于信息流应用,在应用场景为信息推荐场景下,场景用例包括的接口参数,分别为:uid、age、color和phone Type,每个接口参数对应的输入数据,分别为:uid=x001、age=25、color=blue和phone Type=v50,以及对应的预期输出结果为成功。结合图3所示,软件测试设备可以对该场景用例进行分析,确定信息推荐场景下使用的所有接口参数和每个接口参数对应的输入数据。如具体为:接口参数包括:uid,age,color和phoneType,以及每个接口参数对应的输入数据包括:uid=x001、age=25、color=blue和phoneType=v50。

S203、软件测试设备获取应用场景A下使用的接口参数对应接口的接口描述文件。

软件测试设备对场景用例进行用例脚本分析还可以确定出应用场景A下使用的接口参数对应的接口。应用场景A下使用的接口参数对应的接口可以包括一个接口,也可以包括多个接口。在确定出应用场景A下使用的接口参数对应的接口之后,软件测试设备可以获取确定出的接口中各个接口的接口描述文件。

其中,接口描述文件,即接口文档,是用于对软件包括的接口进行描述的文件。如一个接口的接口描述文件可包括:该接口的接口参数、每个接口参数的所有输入数据、以及每个接口参数在不同输入数据下该接口的预期输出结果。

示例性的,接口描述文件可由测试人员预先存储在上述软件测试设备的存储器中。例如,接口描述文件可存储在软件测试设备的存储器的代码仓。软件测试设备可从代码仓获取确定出的接口中所有接口的接口描述文件。

例如,如图3所示,在上述示例中,对于信息流应用,在信息推荐场景下,对场景用例进行用例脚本分析,可确定出信息推荐场景下使用的接口参数对应接口包括上述接口1(如信息流应用与该信息流应用的后台服务器之间的接口)。软件测试设备可以从存储器的代码仓获取接口1的接口描述文件。

其中,接口1的接口描述文件可以包括接口定义描述,即接口1包括的每个接口参数(如,uid,age,color和phone Type)的定义描述。如,接口1的接口定义描述如下所示:

其中,name:uid,用于定义接口参数为uid。type:string,用于定义接口参数uid的类型为字符串类型。maxLength:4和minLength:4,分别用于定义接口参数uid的最大长度为4,最小长度为4。

name:age,用于定义接口参数为age。type:integer,用于定义接口参数age的类型为数字类型。maximum:150和minimum:0,用于定义接口参数age的最大值为150,最小值为0。name:color,用于定义接口参数为color。type:string,用于定义接口数color的类型和enum:red,blue,green,用于定义接口参数color的类型为枚举类型。接口参数phone Type的定义描述可参考上述其他接口参数的定义描述,此处不再详细赘述。

接口1的接口描述文件还可以包括:接口1的各个接口参数的所有输入数据,以及每个接口参数的不同输入数据对应的预期输出结果。

例如,以接口参数为上述接口参数color为例。接口1的接口描述文件中还可以包括如表1所示的数据。

表1

序号 color的输入数据 预期输出结果
1 red 成功
2 green 成功
3 blue 成功
4 yellow 失败
5 0 失败
6 1 失败
7 2 失败
8 3 失败
9 -1 失败
10 "abc" 失败
11 为空 失败
12

如表1所示,接口参数color的输入数据可以包括:red、green、blue、yellow、0、1、2、3、-1、"abc"、空等。且,接口参数color的输入数据为red、green和blue时,对应的预期输出结果均为成功,接口参数color的输入数据为yellow、0、1、2、3、-1、"abc"及空时,对应的预期输出结果均为失败。

又如,以接口参数为上述接口参数uid和age为例。接口1的接口描述文件中还可以包括如表2和表3所示的数据。

表2

序号 uid的输入数据 预期输出结果
1 X001 成功
2 1000 成功
3 a001 成功
4 abcd 成功
5 Abcd 成功
6 ABCD 成功
7 [email protected] 成功
8 [email protected] 成功
9 #Abc 成功
10 #### 成功
11 abc 失败
12 abcde 失败
13 失败
14

表3

序号 age的输入数据 预期输出结果
1 0 成功
2 1 成功
3 50 成功
4 149 成功
5 150 成功
6 151 失败
7 -1 失败
8 "abc" 失败
9 成功
10

如表2所示,接口参数uid的输入数据可以包括:X001、1000、a001、abcd、Abcd、ABCD、[email protected][email protected]、#Abc、####、abc、abcde、空等。接口参数uid的输入数据为X001、1000、a001、abcd、Abcd、ABCD、[email protected][email protected]、#Abc以及####时,对应的预期输出结果均为成功,接口参数uid的输入数据为abc、abcde和空时,对应的预期输出结果均为失败。

如表3所示,接口参数age的输入数据可以包括:0、1、50、149、150、151、-1、"abc"、空等。接口参数age的输入数据为0、1、50、149、150和空时,对应的预期输出结果均为成功,接口参数age的输入数据为151、-1和"abc"时,对应的预期输出结果均为失败。

S204、软件测试设备根据应用场景A下使用的接口参数对应接口的接口描述文件,应用场景A下使用的接口参数和对应的输入数据,生成应用场景A下使用的接口参数的测试用例集。

在获取到应用场景A下使用的接口参数和对应的输入数据,以及应用场景A下使用的接口参数对应接口的接口描述文件之后,软件测试设备可根据应用场景A下使用的接口参数对应接口的接口描述文件,应用场景A下使用的接口参数和对应的输入数据自动生成测试用例集,该测试用例集可用于实现该应用场景A下使用的接口参数对应接口的测试。

作为一种示例的实现,软件测试设备对S203中获取的应用场景A下使用的接口参数对应接口的接口描述文件进行分析,可获取在应用场景A下使用的每个接口参数的正常值和异常值,以及各值对应的预期输出结果。其中,上述正常值和异常值可以为本申请实施例中的测试值。之后,软件测试设备可以根据应用场景A下使用的接口参数的正常值和异常值,以及各值对应的预期输出结果,以及S202中获得的该应用场景A下使用的接口参数对应的输入数据,生成该应用场景A下使用的接口参数的测试用例集。

其中,由于不同接口参数的类型可能不同,不同类型的接口参数,其输入数据的正常值和异常值不同,因此,可根据接口参数的类型确定其正常值以及异常值。接口参数的类型可以包括枚举类型、数字类型、字符串类型以及布尔类型等。枚举类型的接口参数,其输入数据包括可列举的多个数据。布尔类型的接口参数,其输入数据只有两个,即false和true。数字类型的接口参数,其输入数据均为数字。字符串类型的接口参数,其输入数据均为字符串。

其中,软件测试设备可以对对应接口描述文件中的接口定义描述进行分析,从而确定出对应接口参数的类型。

例如,接口定义描述中接口参数uid的type为string,则软件测试设备对该接口定义描述进行分析,可确定出接口参数uid的类型为字符串类型。类似的,接口定义描述中接口参数color的type为string,且enum为red,blue,green,则软件测试设备对其进行分析可以确定接口参数color的类型为枚举类型,

在软件测试设备确定出应用场景A下使用的接口参数的类型之后,软件测试设备可以结合对应接口的接口描述文件中该接口参数的所有输入数据和其类型,确定出该接口参数的正常值以及异常值。

示例性的,在接口参数的类型为枚举类型的情况下,软件测试设备可将全覆盖值,确定为该接口参数的输入数据的正常值,将该接口参数的输入数据的边界外的值、字符串、特殊字符、数字等确定为该接口参数的输入数据的异常值。其中,全覆盖值可以是接口参数可列举的所有的输入数据。示例性的,在接口参数为color时,全覆盖值即接口参数为color可列举的所有输入数据,即red、green以及blue。

例如,接口参数为color,其类型为枚举类型。结合表1,软件测试设备可以确定出接口参数color的输入数据的正常值为red、green以及blue,接口参数的输入数据的异常值为:接口参数color的输入数据的边界外的值(如-1,3,4)、字符串(如purple、ABC)、特殊字符(如&%^、purple、ABC、&%^、空),以及数字(0,1,2)。

示例性的,在接口参数的类型为数字类型的情况下,软件测试设备可将接口参数的输入数据的边界值之间的任一个值确定为该接口参数的输入数据的正常值,接口参数的输入数据的最小边界值-1、接口参数的输入数据的最大边界值+1、字符串、特殊字符将确定为该接口参数的输入数据的异常值。

例如,接口参数为age,类型为数字类型。结合表3,软件测试设备可以确定出接口参数age的输入数据的正常值为1。接口参数age的最小边界值为0,最大边界值为150,软件测试设备可以确定出接口参数age的输入数据的异常值包括:接口参数的输入数据的最小边界值-1(即-1),接口参数的输入数据的最大边界值+1(即151),字符串(即"abc")。

示例性的,在接口参数的类型为字符串类型的情况下,软件测试设备可将接口参数的输入数据的边界长度确定为该接口参数的输入数据的正常值,将接口参数的输入数据的边界长度+1、接口参数的输入数据的边界长度-1、空、特殊字符、数字等确定为该接口参数的输入数据的异常值。在接口参数的类型为布尔类型的情况下,软件测试测试可将True和False确定为该接口参数的输入数据的正常值,将数字、特殊字符以及字符串等确定为该接口参数的输入数据的异常值。

这样,便可获得应用场景A下使用的所有接口参数的正常值和异常值。之后,软件测试设备结合对应接口的接口描述文件中的数据(如上述表1-表3所示的数据),可获得各值对应的预期输出结果。在获取到应用场景A下使用所有的接口参数的正常值和异常值,以及各值对应的预期输出结果后,结合S202中获得的该应用场景A下使用的接口参数对应的输入数据,可自动生成该应用场景A下使用的接口参数的测试用例集。

其中,由于各个接口参数之间是相互独立的,在一个接口参数的输入数据固定的情况下,其他接口参数的输入数据的变化,不会影响对应接口的输出结果。因此,软件测试设备可以根据应用场景A下使用的所有接口参数的正常值和异常值,遍历其中一个接口参数(如称为接口参数1)的输入数据,其他接口参数(如称为接口参数2)的输入数据固定,并结合接口参数1在每个输入数据下对应的预期输出结果,以生成该接口参数1对应的测试用例集。也就是说,接口参数1的测试用例集包括与该接口参数1的测试值一一对应的测试用例。其中,一个测试用例的接口参数1的输入数据为一个测试值,其他接口参数的输入数据为其他接口参数对应的输入数据。其他接口参数类似处理,以获得该应用场景A下使用的所有接口参数对应的测试用例集。之后,软件测试设备可以将所有接口参数对应的测试用例集,作为该应用场景A下使用的接口参数的测试用例集。

结合上述图3的示例,继续以被测软件为信息流应用,应用场景为信息推荐场景为例,对S204,即软件测试设备根据接口1的接口描述文件,以及根据场景用例获得的信息推荐场景下使用的所有接口参数和每个接口参数对应的输入数据,确定每个接口参数对应的测试用例集进行举例说明。

其中,信息推荐场景下使用的接口参数为uid、age、color和phone Type。以接口参数1为color,接口参数2为uid、age以及phone Type为例。软件测试设备根据接口1的接口描述文件确定出接口参数color的类型为枚举类型。软件测试设备根据接口1的接口描述文件和接口参数color的类型,确定出接口参数color的输入数据的正常值以及异常值,及各值对应的预期输出结果。如,接口参数color的输入数据的正常值包括:全覆盖值(如red、green以及blue)。接口参数color的输入数据为正常值时对应的预期输出结果为成功。接口参数color的输入数据的异常值包括:接口参数color的输入数据的边界外的值(如-1,3,4)、字符串(如purple、ABC)、特殊字符(如&%^、purple、ABC、&%^、空)。接口参数color的输入数据为异常值时对应的预期输出结果为失败。

另外,在S202中,软件测试设备确定出信息推荐场景下使用到的接口参数的输入数据分别:uid=x001、age=25、color=blue、phone Type=v50。

软件测试设备可以将uid=x001、age=25以及phone TYPE=v50固定,遍历接口参数color的输入数据的正常值和异常值,并确定接口参数color的每个输入数据对应的预期输出结果,以生成接口参数color对应的测试用例集。

例如,接口参数color的输入数据为正常值,如全覆盖值,red、green以及blue,其对应的预期输出结果均为成功。接口参数color的输入数据为异常值,如-1、3、4、purple、ABC、&%^、purple、ABC、&%^、空,其对应的预期输出结果均为失败。则软件测试设备可在遍历接口参数color的每一个输入数据,生成对应的测试用例,以得到接口参数color对应的测试用例集。如,生成接口参数color的测试用例集,具体可以包括:uid=x001、age=25、phone TYPE=v50,color=red,对应的预期输出结果为成功;uid=x001、age=25、phoneTYPE=v50,color=green,对应的预期输出结果为成功;uid=x001、age=25、phone TYPE=v50,color=blue,对应的预期输出结果为成功;uid=x001、age=25、phone TYPE=v50,color=-1,对应的预期输出结果为失败,…,uid=x001、age=25、phone TYPE=v50,color=空,对应的预期输出结果为失败。

类似的,软件测试设备可以将color=blue、age=25以及phone TYPE=v50固定,遍历接口参数uid的输入数据的正常值和异常值,并确定接口参数uid的每个输入数据对应的预期输出结果,以生成接口参数uid对应的测试用例集。软件测试设备将color=blue、uid=x001以及phone TYPE=v50固定,遍历接口参数age的输入数据的正常值和异常值,并确定接口参数age的每个输入数据对应的预期输出结果,以生成接口参数age对应的测试用例集。软件测试设备将uid=x001、age=25以及color=blue固定,遍历接口参数phoneType的输入数据,并确定接口参数phone Type的每个输入数据对应的预期输出结果,以生成接口参数phone Type对应的测试用例集。

之后,如图3所示,软件测试设备可将接口参数color对应的测试用例集、接口参数uid对应的测试用例集、接口参数age对应的测试用例集以及接口参数phone Type对应的测试用例集,作为信息推荐场景下使用到的接口参数的测试用例集。

可选的,软件测试设备生成应用场景A下使用到接口参数的测试用例集后,可以将该测试用例集进行存储。如,软件测试设备可以将该测试用例集涉及的接口参数对应接口的接口标识和该测试用例集对应存储,用于后续对该对应接口参数对应接口进行测试。接口的标识可以为接口的统一资源定位符(uniform resource locator,URL),用于寻址该接口。

需要说明的是,以上实施例对被测软件在一个应用场景下使用到的接口参数的测试用例集的生成过程进行了说明。对于软件涉及到的其他应用场景,也可以按照上述实施例提供的方法自动生成该应用场景下使用到的接口参数的测试用例集,本申请实施例在此不再赘述。

本申请实施例提供的测试用例的生成方法,可以基于应用场景下已知的测试用例,自动生成在该应用场景下使用到的接口参数的测试用例集。不需要测试人员人工设计,节省了人工成本。且仅针对该应用场景下使用到的接口参数生成对应测试用例集,用于对这些接口参数对应接口进行测试,减少了测试用例的数据量,缩短了测试用例执行时间,进而缩短接口测试的时间,提高测试效率。

在生成应用场景A下使用的接口参数的测试用例集之后,可以利用该测试用例集对接口参数对应接口进行测试,从而检验被测软件的对应接口是否满足规定的需求。

图4为本申请实施例提供的一种接口测试方法的流程示意图。如图4所示,该接口测试方法可以包括:

S401、软件测试设备获取被测对象的用例执行环境。

被测对象即被测软件在应用场景A下使用的接口参数对应的接口。

用例执行环境可以是指被测对象的测试用例的运行环境。用例执行环境可以包括现网镜像环境,功能测试环境等。不同的用例执行环境对数据处理的要求不同。例如不同的用例执行环境对用例的格式要求不同。在用例的格式与用例执行环境要求的格式不同的情况下,软件测试设备可以将用例的格式转换成用例执行环境要求的格式。

S402、软件测试设备获取测试用例集,该测试用例集包括测试用例1。

其中,测试用例集即被测软件在应用场景A下使用的接口参数的测试用例集。该测试用例集可以包括多个测试用例。测试用例1为该测试用例集中的任意一个测试用例。

S403、软件测试设备获取测试用例1的用例信息,以及与测试用例集对应存储的接口的标识。

其中,软件测试设备可以对该测试用例1进行分析,获取该测试用例1的用例信息,如应用场景A下使用的接口参数、接口参数对应的输入数据以及对应的预期输出结果。软件测试设备还可以获取与该测试用例集对应储存的接口的标识,该接口的标识是应用场景A下使用的接口参数对应接口的标识。

例如,结合上述图3的示例,在应用场景为信息推荐场景下,测试用例集可以包括:接口参数color对应的测试用例集、接口参数uid对应的测试用例集、接口参数age对应的测试用例集以及接口参数phone Type对应的测试用例集。测试用例1可以为接口参数color对应的测试用例集中的任一个测试用例。测试用例1也可以为接口参数uid对应的测试用例集中的任一个测试用例。测试用例1也可以为接口参数age对应的测试用例集中的任一个测试用例。测试用例1还可以为接口参数phone Type对应的测试用例集中的任一个测试用例。与测试用例集对应存储的接口的标识为上述示例中的接口1的URL。接口1即为信息流应用与该信息流应用的后台服务器之间的接口。

以测试用例1为接口参数color对应的测试用例集中的任一个测试用例为例,测试用例1的用例信息可以包括:每个接口的接口参数(uid、uid、color以及phone Type)、接口参数对应的输入数据(uid=x001、age=25、color=red、phone Type=v50)以及对应的预期输出结果(成功)。

S404、软件测试设备向电子设备发送测试用例1的用例信息,以及与测试用例集对应存储的接口的标识。

电子设备即为安装有被测对象对应的软件(如信息流应用)的设备。例如,电子设备可以为手机、电脑等。

S405、软件测试设备接收来自电子设备的被测对象的实际输出结果。

S406、软件测试设备比较被测对象的实际输出结果以及对应的预期输出结果,并对测试用例1进行标记。

软件测试设备可以通过消息框架将测试用例1的用例信息以及与测试用例集对应存储的接口的标识发送给电子设备,从而电子设备可以根据该接口的标识,将该接口的接口参数对应的输入数据分别设置为测试用例1的用例信息中的接口参数对应的输入数据,从而对被测对象进行测试,以获取被测对象对应的实际输出结果。

电子设备获取被测对象对应的实际输出结果之后,将被测对象对应的实际输出结果发送给软件测试设备,从而软件测试设备可以将被测对象对应的实际输出结果与测试用例1的用例信息中包括的预期输出结果进行对比。

在被测对象对应的实际输出结果以及预期输出结果相同,即采用测试用例1的用例信息包括的接口参数对应的输入数据对被测对象进行测试后,实际输出结果与测试用例1的用例信息包括的预期输出结果相同的情况下,软件测试设备标记该测试用例1为通过。在被测对象对应的实际输出结果以及预期输出结果不相同,即采用测试用例1的用例信息包括的接口参数对应的输入数据对被测对象进行测试后,实际输出结果与测试用例1的用例信息包括的预期输出结果不相同的情况下,软件测试设备标记测试用例1为失败。

示例性的,结合上述示例,测试用例1的用例信息包括:接口参数(uid、uid、color以及phone Type)、接口参数对应的输入数据(uid=x001、age=25、color=red、phoneType=v50)以及对应的预期输出结果(成功)。在电子设备将接口1包括的接口参数(uid、uid、color以及phone Type)分别设置为对应的输入数据(uid=x001、age=25、color=red、phone Type=v50)之后,电子设备可获取实际输出结果,如实际输出结果为成功。电子设备可将该实际输出结果发送给软件测试设备。软件测试设备接收到该实际输出结果后,可确定实际输出结果与测试用例1的用例信息包括的预期输出结果相同,软件测试设备标记测试用例1为通过。

在软件测试设备比较被测对象对应的实际输出结果以及预期输出结果,并对测试用例1进行标记之后,软件测试设备可以继续比较测试用例集中其他测试用例下被测对象对应的实际输出结果以及预期输出结果,并对该其他测试用例进行标记。其中,软件测试设备获取该其他测试用例下对应实际输出结果的具体实现,可以参照获取上述测试用例1对应实际输出结果的实现,即上述S403-S405,本申请实施例在此不再详细赘述。

S407、软件测试设备生成并输出被测对象的用例执行报告。

软件测试设备在对测试用例集中的每个测试用例进行标记之后,软件测试设备可以生成被测对象的用例执行报告。软件测试设备可以根据被测对象的测试用例集中所有测试用例集的标记信息(如通过或失败),生成并输出用例执行报告。该用例执行报告包括:被测对象对应的测试用例集中每个测试用例,以及每一个测试用例的标记信息。

可选的,在生成用例执行报告之后,可以对用例执行报告进行分析,从而可以利用用例执行报告确定出被测软件的对应接口是否满足规定的需求。

采用该方法,通过利用应用场景下使用到的接口参数生成的测试用例集,对对应接口进行测试,采用较少的测试用例实现了对对应接口的测试,缩短了测试用例执行时间,进而缩短接口测试的时间,提高测试效率。

对应于前述实施例中的方法,本申请实施例还提供一种测试用例的生成装置。该装置可以应用于电子设备,用于实现前述实施例中的方法。该装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。例如,图5示出了一种测试用例的生成装置的结构示意图,如图5所示,该装置包括:获取模块501、生成模块502等。

其中,获取模块501,可以用于获取第一测试用例;第一测试用例为使用第一接口参数对第一接口进行测试的测试用例,第一接口参数为被测软件在第一应用场景下使用的接口参数,第一测试用例包括:第一接口参数和对应的输入数据;根据第一接口的接口描述文件,获取第一接口参数的测试值,以及对应预期输出结果。生成模块502,可以用于根据第一接口参数对应的输入数据,第一接口参数的测试值,以及对应预期输出结果,生成第一接口参数的测试用例集,用于实现对第一接口的测试。

在另一种可能的实现方式中,生成模块502,具体用于针对第一接口参数中的每个接口参数:根据接口参数的测试值和第一接口参数中其他接口参数对应的输入数据,生成接口参数的测试用例集;其中,接口参数的测试用例集包括与接口参数的测试值一一对应的测试用例;一个测试用例的接口参数的输入数据为一个测试值,其他接口参数的输入数据为其他接口参数对应的输入数据。

在另一种可能的实现方式中,第一接口的接口描述文件包括:第一接口的所有接口参数、每个接口参数的所有输入数据、以及每个接口参数在不同输入数据下所述第一接口的预期输出结果;获取单元501,具体用于对接口描述文件进行分析,确定第一接口参数的类型;根据第一接口参数的类型和第一接口参数的所有输入数据,获取第一接口参数的测试值;根据第一接口参数在不同输入数据下第一接口的预期输出结果,获取第一接口参数的测试值对应的预期输出结果。

在另一种可能的实现方式中,获取单元501还用于对第一测试用例进行分析,确定第一接口参数和对应的输入数据。

在另一种可能的实现方式中,获取单元501还用于对第一测试用例进行分析,确定第一接口,并获取第一接口的接口描述文件。

在另一种可能的实现方式中,测试值包括正常值和异常值,正常值对应的预期输出结果为成功,异常值对应的预期输出结果为失败。

应理解以上装置中单元或模块(以下均称为单元)的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且装置中的单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元以软件通过处理元件调用的形式实现,部分单元以硬件的形式实现。

例如,各个单元可以为单独设立的处理元件,也可以集成在装置的某一个芯片中实现,此外,也可以以程序的形式存储于存储器中,由装置的某一个处理元件调用并执行该单元的功能。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件又可以称为处理器,可以是一种具有信号的处理能力的集成电路。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路实现或者以软件通过处理元件调用的形式实现。

在一个例子中,以上装置中的单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个ASIC,或,一个或多个DSP,或,一个或者多个FPGA,或这些集成电路形式中至少两种的组合。

再如,当装置中的单元可以通过处理元件调度程序的形式实现时,该处理元件可以是通用处理器,例如CPU或其它可以调用程序的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。

在一种实现中,以上装置实现以上方法中各个对应步骤的单元可以通过处理元件调度程序的形式实现。例如,该装置可以包括处理元件和存储元件,处理元件调用存储元件存储的程序,以执行以上方法实施例所述的方法。存储元件可以为与处理元件处于同一芯片上的存储元件,即片内存储元件。

在另一种实现中,用于执行以上方法的程序可以在与处理元件处于不同芯片上的存储元件,即片外存储元件。此时,处理元件从片外存储元件调用或加载程序于片内存储元件上,以调用并执行以上方法实施例所述的方法。

例如,本申请实施例还可以提供一种装置,如:电子设备,可以包括:处理器,用于存储该处理器可执行指令的存储器。该处理器被配置为执行上述指令时,使得该电子设备实现如前述实施例所述的测试用例的生成方法。该存储器可以位于该电子设备之内,也可以位于该电子设备之外。且该处理器包括一个或多个。

在又一种实现中,该装置实现以上方法中各个步骤的单元可以是被配置成一个或多个处理元件,这些处理元件可以设置于对应上述的电子设备上,这里的处理元件可以为集成电路,例如:一个或多个ASIC,或,一个或多个DSP,或,一个或者多个FPGA,或者这些类集成电路的组合。这些集成电路可以集成在一起,构成芯片。

例如,本申请实施例还提供一种芯片,该芯片可以应用于上述电子设备。芯片包括一个或多个接口电路和一个或多个处理器;接口电路和处理器通过线路互联;处理器通过接口电路从电子设备的存储器接收并执行计算机指令,以实现以上方法实施例中所述的方法。

本申请实施例还提供一种计算机程序产品,包括电子设备,如上述电子设备,运行的计算机指令。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

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

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

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

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,如:程序。该软件产品存储在一个程序产品,如计算机可读存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

例如,本申请实施例还可以提供一种计算机可读存储介质,其上存储有计算机程序指令。当计算机程序指令被电子设备执行时,使得电子设备实现如前述方法实施例中所述的测试用例的生成方法。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:一种自适应轻量级动态混合数据竞争检测方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!