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

文档序号:21178387发布日期:2020-06-20 17:37阅读:160来源:国知局
接口测试方法、系统、设备及存储介质与流程

本发明涉及软件测试技术领域,尤其涉及一种接口测试方法、系统、设备及存储介质。



背景技术:

在完整的项目流程中,软件工程师在测试过程中会花费大量的精力在http接口的测试上,包含了合法、不合法参数的测试。然而现有技术中的接口测试方法无法进行细粒度控制,无法贴近业务应用。此外,目前公开的模糊测试方案都比较粗暴,运行起来很大概率会被后端spring框架直接拒绝并返回400(badrequest),在公司业务应用场景上可落地性并不强,相似的方案包括python实现的pyfuzzy。



技术实现要素:

针对现有技术中的问题,本发明的目的在于提供一种接口测试方法、系统、设备及存储介质,方便软件工程师进行接口测试,减少不合法参数上的用例执行。

本发明实施例提供一种接口测试方法,包括如下步骤:

获取待测试接口的schema文件,所述schema文件包括所述待测试接口的各个字段的描述信息,且所述schema文件中各个字段标识有合法值;

分析所述schema文件,获取各个字段的合法值;

根据所述schema文件和各个字段的合法值生成测试用例;

执行所述测试用例,对所述待测试接口进行测试。

可选地,所述获取待测试接口的schema文件,包括如下步骤:

从yapi组件获取待测试接口的schema文件。

可选地,所述获取各个字段的合法值,包括如下步骤:

从所述各个字段的描述信息中查找预设的合法值标识,将标识的值作为对应的合法值。

可选地,所述合法值标记为dtd标识。

可选地,所述生成测试用例,包括采用mockjs组件生成模糊测试用例。

可选地,所述生成测试用例,包括调用预设的测试用例模板,根据所述schema文件和各个字段的合法值生成测试用例。

可选地,所述调用预设的测试用例模板,还包括如下步骤:

分析所述schema文件,获取测试目标的ip地址;

判断所述测试目标的ip地址为本地环境ip地址还是开发环境ip地址;

如果所述测试目标的ip地址为本地环境ip地址,则调用预设的客户端测试用例模板;

如果所述测试目标的ip地址为开发环境ip地址,则调用预设的服务端测试用例模板。

可选地,所述执行所述测试用例,对所述待测试接口进行测试之后,还包括如下步骤:

根据测试用例执行结果,调用预设的测试报告模板,生成测试报告。

本发明实施例还提供一种接口测试系统,应用于所述的接口测试方法,所述系统包括:

测试文件接收模块,用于获取待测试接口的schema文件,所述schema文件包括所述待测试接口的各个字段的描述信息,且所述schema文件中各个字段标识有合法值;

合法值获取模块,用于分析所述schema文件,获取各个字段的合法值;

测试用例生成模块,用于根据所述schema文件和各个字段的合法值生成测试用例;

测试用例执行模块,用于执行所述测试用例,对所述待测试接口进行测试。

本发明实施例还提供一种接口测试设备,包括:

处理器;

存储器,其中存在所述处理器的可进行指令;

其中,所述处理器配置为经由进行所述可进行指令来进行所述的接口测试方法的步骤。

本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被进行时实现所述的接口测试方法的步骤。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

本发明所提供的接口测试方法、系统、设备及存储介质具有下列优点:

本发明解决了现有技术的技术问题,结合接口定义schema,实现细粒度控制,减少了软件工程师在接口测试上的精力,可以提高研发人员交付给测试的代码质量,减少测试人员在不合法参数上的用例执行,提高整体项目质量。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。

图1是本发明一实施例的接口测试方法的流程图;

图2是本发明一实施例的定义接口schema文件的示意图;

图3是本发明一实施例的生成测试报告的示意图;

图4是本发明一实施例的接口测试系统的结构框图;

图5是本发明一实施例的接口测试设备的示意图;

图6是本发明一实施例的计算机可读存储介质的示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

如图1所示,为了解决现有技术中的技术问题,本发明提供了一种接口测试方法,所述接口测试方法包括如下步骤:

s100:获取待测试接口的schema文件,所述schema文件包括所述待测试接口的各个字段的描述信息,且所述schema文件中各个字段标识有合法值;

具体地,所述schema文件包括请求参数和返回参数,所述请求参数中字段的描述信息包括名称、类型、是否必填和注释,所述返回参数中字段的描述信息包括名称、类型、是否必填和注释。进一步地,每个字段还标识有对应的合法值。

s200:分析所述schema文件,获取各个字段的合法值;

s300:根据所述schema文件和各个字段的合法值生成测试用例;

s400:执行所述测试用例,对所述待测试接口进行测试。

因此,本发明的接口测试方法通过研发人员在schema文件中定义合法值,通过步骤s100获取定义有各个字段的合法值的schema文件,通过步骤s200和s300结合合法值自动生成测试用例,结合接口定义schema,程序在一开始就知道接口的合法值,再根据合法值设计非法值,来对http接口进行模糊测试,实现细粒度控制,减少了软件工程师在接口测试上的精力,可以提高研发人员交付给测试的代码质量,减少测试人员在不合法参数上的用例执行,可以更好地贴近业务应用。

在该实施例中,所述步骤s100获取待测试接口的schema文件,包括如下步骤:

从yapi组件获取待测试接口的schema文件。

yapi是一个开源的、可本地部署的、打通前后端及运维的、可视化的接口管理平台。如图2所示,示出了在yapi组件上定义schema文件的页面示意图。其中,对接口测试的schema文件的内容进行了定义。

在该实施例中,所述获取各个字段的合法值,包括如下步骤:

从所述各个字段的描述信息中查找预设的合法值标识,将标识的值作为对应的合法值。

在该实施例中,所述合法值标记为dtd标识。dtd(documenttypedefinition,文档类型定义)可定义合法的xml(extensiblemarkuplanguage,可扩展标记语言)文档构建模块。它使用一系列合法的元素来定义文档的结构。

如图2所示,其中在schema文件的定义界面中,dtd用特殊标识出当前字段的合法值,例如图2中{{guid()}}标识这个字段的合法值是guid,通过该种定义方式,本发明进一步实现了细粒度控制。

在该实施例中,所述生成测试用例,包括采用mockjs组件生成模糊测试用例。mockjs组件可以生成随机数据,拦截ajax请求,并且具有前后端分离、可随机生成大量的数据、用法简单、数据类型丰富、可扩展数据类型的特点。

因此,本发明使用开源组件yapi组件和mockjs组件来实现接口的自动化模糊测试。通过yapi组件来进行接口schema文件管理并且传输给接口测试系统,接口测试系统根据这些信息,结合mockjs组件快速构建测试用例,并且进行执行。

在该实施例中,所述步骤s300中,生成测试用例,包括调用预设的测试用例模板,根据所述schema文件和各个字段的合法值生成测试用例。

进一步地,所述调用预设的测试用例模板,还包括如下步骤:

分析所述schema文件,获取测试目标的ip地址,判断所述测试目标的ip地址为本地环境ip地址还是开发环境ip地址;

如果所述测试目标的ip地址为本地环境ip地址,则调用预设的客户端测试用例模板;如果所述测试目标的ip地址为开发环境ip地址,则调用预设的服务端测试用例模板。

因此,本发明可以实现本地环境和开发环境两种不同的测试。接口测试系统分为客户端和服务端两个环境,其中客户端环境只会对研发人员的本地环境进行测试,这样既减少了对公用云计算环境的影响,同时也提高了研发人员发现问题并解决问题的效率。服务端环境可为软件持续集成提供每日报告,同时也可以用来作为验证研发人员是否真正执行模糊测试的一个手段。因此,采用本发明的接口测试方法时,研发人员、测试人员在接口测试系统中配置当前请求发送的目标时,可以通过配置为本地ip或者dev环境服务器ip。使得接口测试系统分部对本地环境、dev环境等不同环境发起测试用例的执行。

在该实施例中,所述执行所述测试用例,对所述待测试接口进行测试之后,还包括如下步骤:

根据测试用例执行结果,调用预设的测试报告模板,生成测试报告。

如图3所示,为一实施例中生成测试报告的示意图。可以通过设置测试报告模板来实现配置测试报告所包括的具体内容。在测试用例执行完成后,将执行结果中的各项数据填入到测试报告模板中,即可自动生成测试报告。使用者可以通过分析测试报告来挖掘接口测试系统潜在的bug,进一步提升接口测试系统的性能。

如图4所示,本发明实施例还提供一种接口测试系统,应用于所述的接口测试方法,所述系统包括:

测试文件接收模块m100,用于获取待测试接口的schema文件,所述schema文件包括所述待测试接口的各个字段的描述信息,且所述schema文件中各个字段标识有合法值;

具体地,所述schema文件包括请求参数和返回参数,所述请求参数中字段的描述信息包括名称、类型、是否必填和注释,所述返回参数中字段的描述信息包括名称、类型、是否必填和注释。进一步地,每个字段还标识有对应的合法值。

合法值获取模块m200,用于分析所述schema文件,获取各个字段的合法值;具体地,所述schema文件中各个字段的合法值标识可以采用dtd实现,dtd它使用一系列合法的元素来定义文档的结构。

测试用例生成模块m300,用于根据所述schema文件和各个字段的合法值生成测试用例;

测试用例执行模块m400,用于执行所述测试用例,对所述待测试接口进行测试。

本发明的接口测试系统通过研发人员在schema文件中定义合法值,通过测试文件接收模块m100获取定义有各个字段的合法值的schema文件,通过合法值获取模块m200和测试用例生成模块m300结合合法值自动生成测试用例,结合接口定义schema,程序在一开始就知道接口的合法值,再根据合法值设计非法值,来对http接口进行模糊测试,实现细粒度控制,减少了软件工程师在接口测试上的精力,可以提高研发人员交付给测试的代码质量,减少测试人员在不合法参数上的用例执行,可以更好地贴近业务应用。

在该实施例中,本发明的接口测试系统使用开源组件yapi组件和mockjs组件来实现接口的自动化模糊测试。通过yapi组件来进行接口schema文件管理并且传输给接口测试系统的测试文件接收模块m100,接口测试系统的测试用例生成模块m300根据这些信息,结合mockjs组件快速构建测试用例,并且由测试用例执行模块m400进行执行。

进一步地,在该实施例中,所述接口测试系统还可以分为客户端和服务端两个环境,其中客户端环境只会对研发人员的本地环境进行测试,这样既减少了对公用云计算环境的影响,同时也提高了研发人员发现问题并解决问题的效率,服务端环境可为软件持续集成提供每日报告,同时也可以用来作为验证研发人员是否真正执行模糊测试的一个手段。

进一步地,所述接口测试系统还包括测试报告生成模块,用于在测试用例执行完成后,根据测试用例执行结果,调用预设的测试报告模板,生成测试报告。使用者可以通过分析测试报告来挖掘接口测试系统潜在的bug,进一步提升接口测试系统的性能。

本发明实施例还提供一种接口测试设备,包括处理器;存储器,其中存在所述处理器的可进行指令;其中,所述处理器配置为经由进行所述可进行指令来进行所述的接口测试方法的步骤。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图5来描述根据本发明的这种实施方式的电子设备600。图5显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图5所示,电子设备600以通用计算设备的形式表现。电子设备600的组合可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组合(包括存储单元620和处理单元610)的总线630、显示单元640等。

其中,所述存储单元存在程序代码,所述程序代码可以被所述处理单元610进行,使得所述处理单元610进行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以进行如图1中所示的步骤。

所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(rom)6203。

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

总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被进行时实现所述的接口测试方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备进行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。

参考图6所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令进行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令进行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于进行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上进行、部分地在用户设备上进行、作为一个独立的软件包进行、部分在用户计算设备上部分在远程计算设备上进行、或者完全在远程计算设备或服务器上进行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

综上所述,与现有技术相比,本发明所提供的接口测试方法、系统、设备及存储介质具有下列优点:

本发明解决了现有技术的技术问题,结合接口定义schema,实现细粒度控制,减少了软件工程师在接口测试上的精力,可以提高研发人员交付给测试的代码质量,减少测试人员在不合法参数上的用例执行,提高整体项目质量。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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