接口测试方法及系统、电子设备、存储介质与流程

文档序号:16608437发布日期:2019-01-14 21:20阅读:169来源:国知局
接口测试方法及系统、电子设备、存储介质与流程

本发明涉及测试技术领域,特别涉及一种接口测试方法及系统、电子设备、存储介质。



背景技术:

在常规的接口测试过程中,针对测试接口返回的复杂、业务多样性的接口数据,测试人员往往都需要根据特定的需求做自动化解析才能对接口数据进行有针对性的断言解析。若不能实现复杂数据的自动化解析,整个自动化的断言流程将无法持续,会影响自动化测试流程的正常进行,降低测试效率。

现有技术中,采用如下方式完成对复杂数据的自动化解析:将接口返回的数据转化成有序列的字符串,通过与预期的接口返回结果进行比对,判断两者是否匹配,如全部匹配或者字符串中包含期望结果,则通过自动化解析,否则不通过自动化解析。但仍如下问题:

(1)当接口数据包含容易变更的数据时无法准确判断;

(2)返回结果为无序数据时,转化为字符串后的字段顺序容易造成误判;

(3)部分数据与判断结果无关,比如时间戳,加入对其的判断会影响判断结果;

(4)无法对各种类型的返回数据类型进行精细化的、有重点的结果判断。

进而会影响断言的效率和准确率,致使接口测试的效率和准确率较低。



技术实现要素:

本发明要解决的技术问题是为了克服现有技术中接口测试的效率和准确率较低的缺陷,提供一种接口测试方法及系统、电子设备、存储介质。

本发明是通过下述技术方案来解决上述技术问题:

一种接口测试方法,所述接口测试方法包括:

获取接口执行测试用例的结果数据;

判断所述结果数据的数据格式与所述接口的数据标准格式是否相同;

在判断为是时,选择与所述结果数据的数据类型对应的断言策略;

通过所述断言策略解析所述结果数据并生成测试结果。

较佳地,当所述数据类型为基础数据时,通过所述断言策略解析所述结果数据并生成测试结果的步骤,具体包括:

判断所述结果数据中的数据值与预期结果的数据值是否相同;

若判断为否,所述测试结果为测试不通过;

所述基础数据包括以下数据中的一种:

string数据、boolean数据、integer数据、long数据。

较佳地,当所述数据类型为集合型数据时,通过所述断言策略解析所述结果数据并生成测试结果的步骤,具体包括:

判断所述结果数据与预期结果的数据长度、数据顺序和数据值是否均相同;

若判断为否,所述测试结果为测试不通过;

所述集合型数据包括:list数据。

较佳地,当所述数据类型为结构化数据时,通过所述断言策略解析所述结果数据并生成测试结果的步骤,具体包括:

将所述结果数据转化为预设数据格式;

对格式转化后的结果数据进行断言解析并获取断言信息;

判断所述断言信息与预期结果的断言信息是否相同;

若判断为否,所述测试结果为测试不通过;

所述结构化数据包括以下数据中的一种:

json数据、xml数据、object数据、list<json>数据。

较佳地,在判断所述结果数据的数据格式与所述数据标准格式不相同时,所述测试结果为测试不通过。

较佳地,所述测试用例包括:

接口测试配置参数、接口调用参数、接口参数策略、返回结果类型和预期结果。

一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的接口测试方法。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的接口测试方法的步骤。

一种接口测试系统,所述接口测试系统包括:

获取模块,用于获取接口执行测试用例的结果数据;

判断模块,用于判断所述结果数据的数据格式与所述接口的数据标准格式是否相同;

所述判断模块还用于在判断为是时,调用解析模块;

所述解析模块,用于选择与所述结果数据的数据类型对应的断言策略,并通过所述断言策略解析所述结果数据;

结果生成模块,用于根据解析结果生成测试结果。

较佳地,所述解析模块包括:第一判断单元;

当所述数据类型为基础数据时,所述第一判断单元用于判断所述结果数据中的数据值与预期结果的数据值是否相同;

在所述第一判断单元判断为否时,调用所述结果生成模块;

所述结果生成模块生成的测试结果为测试不通过;

所述基础数据包括以下数据中的一种:

string数据、boolean数据、integer数据、long数据。

较佳地,所述解析模块包括:第二判断单元;

当所述数据类型为集合型数据时,所述第二判断单元用于判断所述结果数据与预期结果的数据长度、数据顺序和数据值是否均相同;

在所述第二判断单元判断为否时,调用所述结果生成模块;

所述结果生成模块生成的测试结果为测试不通过;

所述集合型数据包括:list数据。

较佳地,所述解析模块包括:第三判断单元和格式转化单元;

当所述数据类型为结构化数据时,所述格式转化单元用于将所述结果数据转化为预设数据格式;

所述第三判断单元用于对格式转化后的的结果数据进行断言解析以获取断言信息,并判断所述断言信息与预期结果的断言信息是否相同;

在所述第三判断单元判断为否时,调用所述结果生成模块;

所述结果生成模块生成的测试结果为测试不通过;

所述结构化数据包括以下数据中的一种:

json数据、xml数据、object数据、list<json>数据。

较佳地,所述判断模块还用于在判断为否时,调用所述结果生成模块;

所述结果生成模块生成的测试结果为测试不通过。

较佳地,所述测试用例包括:

接口测试配置参数、接口调用参数、接口参数策略、返回结果类型和预期结果。

本发明的积极进步效果在于:本发明适用各种类型接口的测试,先进行接口格式的解析,如果返回的格式异常,则认为接口解析格式错误,可以得出接口测试不通过的测试结果,避免了相关进一步比对的开销。若确认格式解析正确,再对不同类型的结果数据有针对性地进行断言解析,实现了对各种类型的结果数据进行精细化的、有重点的结果判断,提高了断言的准确性,进而提高了测试准确性。

附图说明

图1为本发明实施例1的接口测试方法的流程图。

图2为本发明实施例4的接口测试方法的流程图。

图3为本发明实施例5的电子设备的结构示意图。

图4为本发明实施例7的接口测试系统的模块示意图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

实施例1

本实施例提供一种通用的接口测试方法,如图1所示,本实施例的接口测试方法包括以下步骤:

步骤101、获取接口执行测试用例的结果数据。

其中,测试用例包括:

接口测试配置参数,包括接口地址、调用超时、调用方法、调用协议名称等;

接口调用参数,包括各种数据类型,如json,xml等,作为组织测试的入参;

接口参数策略,用于根据参数类型,使用不同的策略对特定参数进行解析,对入参进行格式类型检查和转化;

返回结果类型,便于对返回的结果数据进行特定的解析;为了实现对相关用例的结果数据进行针对性的解析,需要在相关的用例上明确返回结果数据的解析格式,比如string,json,list,以对不同的数据类型进行针对性的断言解析。

预期结果,用于验证接口返回的结果数据。

步骤102、判断结果数据的数据格式与该接口的数据标准格式是否相同。

步骤102中,若判断为是,说明接口返回的结果数据与接口的数据标准格式相同,确认接口的格式解析正确,则执行步骤103。

步骤103、选择与结果数据的数据类型对应的断言策略。

其中,数据类型包括:

常规数据格式,例如,string数据、boolean数据、integer数据、long数据等基础数据;

自定义数据数据,例如,list数据等集合型数据,json数据、xml数据、object数据、list<json>数据等结构化数据。

步骤104、通过断言策略解析结果数据。

步骤105、生成测试结果。

步骤102中,若判断为否,说明接口的格式解析不正确,则执行步骤105,且测试结果为测试不通过。

本实施例中,先进行接口格式的解析,如果返回的格式异常,则认为接口解析格式错误,可以得出接口测试不通过的测试结果,避免了相关进一步比对的开销。若确认格式解析正确,再对不同类型的结果数据有针对性地进行断言解析,实现了对各种类型的结果数据进行精细化的、有重点的结果判断,提高了断言的准确性,进而提高了测试准确性。

实施例2

本实施例1的基础上,本实施例提供一种对数据类型为基础数据的结果数据进行解析的可能的实现方式。步骤104具体包括:

判断结果数据中的数据值与预期结果中的数据值是否相同。

若判断为否,步骤105中测试结果为测试不通过。

若判断为是,步骤105中测试结果为测试通过。

本实施例中,对于string数据、boolean数据、integer数据、long数据等基础数据进行数据全匹配,确保判断过程不遗漏重点信息,提高了测试的准确性。

实施例3

本实施例1的基础上,本实施例提供一种对数据类型为集合型数据的结果数据进行解析的可能的实现方式。步骤104具体包括:

判断结果数据与预期结果的数据长度、数据顺序和数据值是否均相同。

若判断为否,说明两者的数据长度、数据顺序和数据值至少有一项参数不相同,步骤105中测试结果为测试不通过。

若判断为是,说明两者的数据长度、数据顺序和数据值均相同,步骤105中测试结果为测试通过。

本实施例中,对顺序敏感集合型数据,例如list数据,不仅进行数据全匹配,还对数据的长度和顺序进行匹配,避免了因顺序造成的误判断,提高了测试的准确性。

实施例4

本实施例1的基础上,本实施例提供一种对数据类型为结构化数据的结果数据进行解析的可能的实现方式。如图2所示,步骤104具体包括:

步骤104-1、将结果数据转化为预设数据格式。

步骤104-2、对格式转化后的结果数据进行断言解析并获取断言信息。

步骤104-3、判断断言信息与预期结果的断言信息是否相同。

若判断为否,步骤105中测试结果为测试不通过;

若判断为是,步骤105中测试结果为测试通过。

本实施例中,预设数据格式例如可以是json格式,步骤104-1也即将非json格式的结果数据统一转化为json格式。步骤104-2中则对json格式的结果数据进行断言解析并获取断言信息。

本实施例中,将xml数据、object数据、list<json>数据等结构化数据统一转成json格式(但不限于json格式,也可以是其他统一格式)后再与预期结果进行比对,避免因接口返回的结果数据格式异常导致的断言误判,实现比较精细和精准的结果断言,能更加准确的判断接口测试结果。

实施例5

图3为本发明实施例5提供的一种电子设备的结构示意图,示出了适于用来实现本发明实施方式的示例性电子设备30的框图。图3显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图3所示,电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。

总线33包括数据总线、地址总线和控制总线。

存储器32可以包括易失性存储器,例如随机存取存储器(ram)321和/或高速缓存存储器322,还可以进一步包括只读存储器(rom)323。

存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明上述任一实施例所提供的接口测试方法。

电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口35进行。并且,模型生成的电子设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器36通过总线33与模型生成的电子设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的电子设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

实施例6

本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明上述任一实施例所提供的接口测试方法的步骤。

其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。

在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现本发明上述任一实施例所提供的接口测试方法的步骤。

其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。

实施例7

本实施例提供一种通用的接口测试系统,如图4所示,接口测试系统包括:获取模块41、判断模块42、解析模块43和结果生成模块44。

获取模块41用于获取接口执行测试用例的结果数据。其中,测试用例的数据包括:接口测试配置参数、接口调用参数、接口参数策略、返回结果类型和预期结果。

接口测试配置参数,包括接口地址、调用超时、调用方法、调用协议名称等;

接口调用参数,包括各种数据类型,如json,xml等,作为组织测试的入参;

接口参数策略,用于根据参数类型,使用不同的策略对特定参数进行解析,对入参进行格式类型检查和转化;

返回结果类型,便于对返回的结果数据进行特定的解析;为了实现对相关用例的结果数据进行针对性的解析,需要在相关的用例上明确返回结果数据的解析格式,比如string,json,list,以对不同的数据类型进行针对性的断言解析。

预期结果,用于验证接口返回的结果数据。

判断模块42用于判断结果数据的数据格式与接口的数据标准格式是否相同。

若判断模块42判断为是,说明接口返回的结果数据与接口的数据标准格式相同,确认接口的格式解析正确,但此时还不能确定接口是否正常,判断模块42需调用解析模43,以对结果数据做进一步分析。

解析模块43用于选择与结果数据的数据类型对应的断言策略,并通过断言策略解析结果数据。

其中,数据类型包括:

常规数据格式,例如,string数据、boolean数据、integer数据、long数据等基础数据;

自定义数据数据,例如,list数据等集合型数据,json数据、xml数据、object数据、list<json>数据等结构化数据。

结果生成模块44用于根据解析结果生成测试结果。

若判断模块42判断为否,直接调用结果生成模块44,且结果生成模块生成的测试结果为测试不通过。

本实施例适用各种类型接口的测试,先进行接口格式的解析,如果返回的格式异常,则认为接口解析格式错误,可以得出接口测试不通过的测试结果,避免了相关进一步比对的开销。若确认格式解析正确,再对不同类型的结果数据有针对性地进行断言解析,实现了对各种类型的结果数据进行精细化的、有重点的结果判断,提高了断言的准确性,进而提高了测试准确性。

本实施例中,解析模块43具体包括:第一判断单元431、第二判断单元432、第三判断单元433和格式转化单元434。

以下对解析模块43针对不同数据类型的结果数据进行解析的工作原理做进一步说明:

当数据类型为基础数据时,第一判断单元431判断结果数据中的数据值与预期结果的数据值是否相同。

在第一判断单元431判断为否时,结果生成模块生成的测试结果为测试不通过;在第一判断单元431判断为是时,结果生成模块生成的测试结果为测试通过。

从而,通过对于string数据、boolean数据、integer数据、long数据等基础数据进行数据全匹配,确保判断过程不遗漏重点信息,提高了测试的准确性。

当数据类型为集合型数据时,第二判断单元432判断结果数据与预期结果的数据长度、数据顺序和数据值是否均相同。

在第二判断单元432判断为否时,结果生成模块生成的测试结果为测试不通过;在第二判断单元432判断为是时,结果生成模块生成的测试结果为测试通过。

从而,对顺序敏感集合型数据,例如list数据,不仅进行数据全匹配,还对数据的长度和顺序进行匹配,避免了因顺序造成的误判断,提高了测试的准确性。

当数据类型为结构化数据时,格式转化单元434将结果数据转化为预设数据格式。

第三判断单元433对格式转化后的的结果数据进行断言解析以获取断言信息,并判断断言信息与预期结果的断言信息是否相同。

在第三判断单元433判断为否时,结果生成模块生成的测试结果为测试不通过;在第三判断单元433判断为是时,结果生成模块生成的测试结果为测试通过。

本实施例中,预设数据格式例如可以是json格式,也即格式转化单元434将非json格式的结果数据统一转化为json格式。第三判断单元433则对json格式的结果数据进行断言解析并获取断言信息。

从而,通过将xml数据、object数据、list<json>数据等结构化数据统一转成json格式(但不限于json格式,也可以是其他统一格式)后再与预期结果进行比对,避免因接口返回的结果数据格式异常导致的断言误判,实现比较精细和精准的结果断言,能更加准确的判断接口测试结果。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

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