CN115357491A - 接口自动化测试方法、装置、设备和介质 - Google Patents

接口自动化测试方法、装置、设备和介质 Download PDF

Info

Publication number
CN115357491A
CN115357491A CN202210996209.2A CN202210996209A CN115357491A CN 115357491 A CN115357491 A CN 115357491A CN 202210996209 A CN202210996209 A CN 202210996209A CN 115357491 A CN115357491 A CN 115357491A
Authority
CN
China
Prior art keywords
interface
document
test
programming language
functional logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210996209.2A
Other languages
English (en)
Inventor
马岳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202210996209.2A priority Critical patent/CN115357491A/zh
Publication of CN115357491A publication Critical patent/CN115357491A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种接口自动化测试方法,属于信息安全领域。所述方法包括:获取接口文档,其中,所述接口文档中,按照结构化规范利用预定义的类编程语言编写了接口的功能逻辑,其中,所述接口的功能逻辑用于描述所述接口在各种情形下的输入和输出之间的对应关系;解析所述接口文档中所述接口的功能逻辑,以得到在所述各种情形中的每种情形下所述接口的输入和输出;以及基于解析得到的每种情形下所述接口的输入和输出,测试所述接口。本公开还提供了一种接口自动化测试装置、设备、存储介质和程序产品。

Description

接口自动化测试方法、装置、设备和介质
技术领域
本公开涉及信息安全领域,可以用于金融领域或其他领域,更具体地涉及一种接口自动化测试方法、装置、设备、介质和程序产品。
背景技术
开发人员开发的接口程序一般都配有接口文档。接口文档通过表格、自然语言等方式描述接口处理逻辑,因此接口文档比接口程序有着更好的易读性,其他开发人员或测试人员可以通过阅读接口文档了解接口的实现逻辑。
由于接口文档是通过表格、自然语言等方式描述的,因此接口文档通常难以被机器解析处理。当需要测试接口时,相关技术中通常是由测试人员或开发人员阅读接口文档,然后编写测试案例进行测试。这样导致接口测试耗时耗力,还容易遗漏,尤其是当接口在使用过程中进行了局部更新改造的情况下,极容易出现测试不全的情况。
发明内容
鉴于上述问题,本公开提供了一种可以通过解析接口文档来自动测试接口的接口自动化测试方法、装置、设备、介质和程序产品。
根据本公开的第一个方面,提供了一种接口自动化测试方法。所述方法包括:首先获取接口文档,其中,所述接口文档中,按照结构化规范利用预定义的类编程语言编写了接口的功能逻辑,其中,所述接口的功能逻辑用于描述所述接口在各种情形下的输入和输出之间的对应关系,其中,所述接口的输入包括每种情形下所述接口的所有请求参数的取值范围及其组合方式,所述接口的输出包括每种情形下所述接口的返回值;然后解析所述接口文档中所述接口的功能逻辑,以得到在所述各种情形中的每种情形下所述接口的输入和输出;接下来基于解析得到的每种情形下所述接口的输入和输出,测试所述接口。
根据本公开的实施例,所述结构化规范包括通过每一句类编程语言来编写一种情形下所述接口的输入和输出之间的对应关系,其中,每一句类编程语言中至少包括:用于限定每个请求参数的取值范围的第一类关键字;用于限定不同请求参数的组合关系的第二类关键字;以及用于表示所述接口的返回值的第三类关键字。
根据本公开的实施例在所述解析所述接口文档中所述接口的功能逻辑之前,所述方法还包括校验所述接口文档中所述接口的功能逻辑,具体包括:获取所述接口文档中所述接口的所有请求参数的定义及属性;逐句校验所述接口文档中的每一句类编程语言,其中,当每一句类编程语言满足校验通过条件时,确定该句类编程语言编写正确;否则确定该句类编程语言的编写存在错误。其中,所述校验通过条件至少包括:所述第一类关键字前存在所述接口文档中定义的请求参数;通过所述第一类关键字所限定的请求参数的取值范围满足该请求参数的属性,以及每一句类编程语言的结尾包括所述第三类关键字。
根据本公开的实施例,所述解析所述接口文档中所述接口的功能逻辑,以得到在所述各种情形中的每种情形下所述接口的输入和输出包括:基于所述接口文档中的每一句类编程语言中的所述第一类关键字,提取所述接口中的所有请求参数的取值范围;基于所述接口文档中的每一句类编程语言中的所述第二类关键字,提取所述接口中所有请求参数的组合方式;以及基于所述接口文档中的每一句类编程语言中的所述第三类关键字,得到所述接口的返回值。
根据本公开的实施例,所述基于解析得到的每种情形下所述接口的输入和输出,测试所述接口包括:基于解析得到的每种情形下所述接口的所有请求参数的取值范围及其组合方式,得到该情形下的测试报文;基于解析得到的每种情形下所述接口的返回值,得到该情形下的预期返回值;以及基于所述测试报文和所述预期返回值,测试所述接口。
根据本公开的实施例,所述基于所述测试报文和所述预期返回值,测试所述接口包括:将所述测试报文发送到所述接口;获得所述接口针对所述测试报文返回的测试结果;当所述测试结果与所述预期返回值一致时,确定所述接口测试成功;以及当所述测试结果与所述预期返回值不一致时,确定所述接口测试失败。
本公开实施例的第二方面,提供了一种接口自动化测试装置。所述装置包括获取模块、接口文档解析模块以及接口测试模块。获取模块用于获取接口文档。所述接口文档中,按照结构化规范利用预定义的类编程语言编写了所述接口的功能逻辑。其中,所述接口的功能逻辑用于描述所述接口在各种情形下的输入和输出之间的对应关系,其中,所述接口的输入包括每种情形下所述接口的所有请求参数的取值范围及其组合方式,所述接口的输出包括每种情形下所述接口的返回值。接口文档解析模块用于解析所述接口文档中所述接口的功能逻辑,以得到在所述各种情形中的每种情形下所述接口的输入和输出。接口测试模块用于基于解析得到的每种情形下所述接口的输入和输出,测试所述接口。
根据本公开的实施例,所述结构化规范包括通过每一句类编程语言来编写一种情形下所述接口的输入和输出之间的对应关系,其中,每一句类编程语言中至少包括:用于限定每个请求参数的取值范围的第一类关键字;用于限定不同请求参数的组合关系的第二类关键字;以及用于表示所述接口的返回值的第三类关键字。
根据本公开的实施例,所述接口自动化测试装置还可以包括接口文档结构化校验模块。所述接口文档结构化校验模块用于在接口文档解析模块解析所述接口文档中所述接口的功能逻辑之前,校验所述接口文档中所述接口的功能逻辑。所述接口文档结构化校验模块具体用于:获取所述接口文档中所述接口的所有请求参数的定义及属性;逐句校验所述接口文档中的每一句类编程语言,其中,当每一句类编程语言满足校验通过条件时,确定该句类编程语言编写正确;否则确定该句类编程语言的编写存在错误。其中,所述校验通过条件至少包括:所述第一类关键字前存在所述接口文档中定义的请求参数;通过所述第一类关键字所限定的请求参数的取值范围满足该请求参数的属性,以及每一句类编程语言的结尾包括所述第三类关键字。
本公开实施例的第三方面,提供了一种电子设备。所述电子设备包括一个或多个处理器以及一个或多个存储器。所述一个或多个存储器用于存储一个或多个程序。当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述方法。
本公开实施例的第四方面,还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述方法。
本公开实施例的第五方面,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法。
上述一个或多个实施例具有如下优点或有益效果:针对接口文档中的接口的功能逻辑的描述,编制类编程语言,并通过结构化规范,从而传统思维中使用自然语言描述的接口的功能逻辑,变更为程序可以解析的结构化文本。接下来,解析接口文档,以自动生成测试报文并执行,可以自动地验证接口处理逻辑,实现了接口的自动化测试,避免了测试人员在阅读接口文档的基础上重新编写测试案例再手动测试的麻烦。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的接口自动化测试方法、装置、设备、介质和程序产品的系统架构;
图2示意性示出了根据本公开一实施例的接口自动化测试方法的流程图;
图3示意性示出了根据本公开实施例的接口自动化测试方法中解析接口文档的流程图;
图4示意性示出了根据本公开实施例的接口自动化测试方法中测试接口的流程图;
图5示意性示出了根据本公开另一实施例的接口自动化测试方法的流程图;
图6示意性示出了根据本公开一实施例的接口自动化测试装置的结构图;
图7示意性示出了根据本公开另一实施例的接口自动化测试装置测试接口的流程示意;以及
图8示意性示出了适于实现根据本公开实施例的接口自动化测试方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。
本文中的关键术语解释如下:
请求参数:又称为接口的上送参数或者上送字段。在调用接口时,提供给接口的输入数据需要包含请求参数的值。接口的请求参数可以有一个或多个。当接口有多个请求参数时,调用接口时提供给接口的输入数据还应当包括该多个请求参数的值的组合方式。
返回值:又称为接口的返回字段的取值或者返回参数的值,是接口被调用后,接口根据接收到的输入数据,按照接口处理逻辑处理后,返回给调用方的值.
接口的功能逻辑:在本文中特指用于描述接口的输入和输出之间的对应关系的逻辑。根据本公开的实施例,在接口的功能逻辑的描述中,可以将接口处理逻辑(诸如循环、条件判断和/或算法等处理过程)视为黑盒,从而接口的功能逻辑可以仅体现接口的输入和输出两端的数据对应关系;
类编程语言:是本文中新提出的术语,是用于在接口文档中编写接口的功能逻辑的特定语言。类编程语言中可以设置通用的关键字(例如,数学符号、布尔运算符等),借助于这些关键字来描述接口的请求参数的取值范围以及组合方式,接口的返回值的取值(或取值范围),以及接口的输入和输出之间的对应关系。可见,类编程语言一方面可以具有类似自然语言的可读性,另一方面可以为对接口文档的自动解析处理提供基础。
相关技术中进行接口测试时,需要开发人员或者测试人员阅读接口文档后编写测试案例进行测试,当接口处理逻辑较为复杂,请求参数较多时,不同请求参数的组合很多,测试人员很难针对所有的组合情形进行验证,经常出现遗漏测试的情况。而且当接口发生改造后,还需要测试人员重新梳理或编写所有的测试案例再进行测试,工作量较大而且容易出现遗漏。再加上当接口文档中使用自然语言描述时,不同开发人员有不同的书写风格,造成接口处理逻辑描述不统一,给阅读者造成影响,这也给接口的测试带来诸多困难。
有鉴于此,本公开实施例提供了一种接口自动化测试方法、装置、设备、介质和程序产品。根据本公开的实施例,在接口文档中利用类编程语言按照结构化规范来编写接口的功能逻辑。在此基础上可以通过自动解析接口文档中的接口的功能逻辑,来获取接口的具有对应关系的输入数据和输出数据,进而可以自动的生成测试案例,对接口进行自动化的测试。本公开实施例中,在接口文档中通过接口的功能逻辑来反映接口在各种情形下的输入和输入的对应关系。因此,只要接口的功能逻辑编写正确,即能够全面且正确地反映接口的实际工作过程,囊括接口所有请求参数的可能组合情形,就可以实现对接口的全面测试。相应地,也避免了相关技术中需要人工阅读接口文档后再编写测试案例手工测试的麻烦,实现了接口测试的自动化,提高接口测试的效率。
需要说明的是,本公开实施例确定的接口自动化测试方法、装置、设备、介质和程序产品可用于金融领域,也可用于除金融领域之外的任意领域,本公开对应用领域不做限定。
图1示意性示出了根据本公开实施例的接口自动化测试方法、装置、设备、介质和程序产品的系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,服务器104和接口测试平台105。服务器104可以与终端设备101、102、103通信连接。同时,服务器104也可以与接口测试平台105通信连接。
服务器104可以是用于执行本公开实施例的接口自动化测试方法的服务器。相应地,服务器104中可以设置本公开实施例的接口自动化测试装置、设备、介质和程序产品。
用户(例如,开发人员或测试人员)可以使用终端设备101、102、103通过网络与服务器104交互,以接收或发送消息等。例如,开发人员可以使用终端设备101、102、103编写接口文档,并将编写好的接口文档上传到服务器104。又例如,测试人员可以通过终端设备101、102、103指定要测试的接口,并触发服务器104对指定的接口进行自动化测试。再例如,服务器104可以将对接口的自动化测试结果反馈给终端设备101、102、103,以提供给测试人员查看测试结果。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,终端设备101、102、103中可以安装有接口开发工具、接口测试工具等客户端。终端设备101、102、103包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
接口测试平台105中可以部署有接口,可以接收服务器104上送的测试报文,并将接口返回值发送给服务器104。在一些实施例中,接口测试平台105可以是服务器104的一部分,即可以将接口测试平台105的功能部署在服务器104中。
需要说明的是,在另一些实施例中,本公开实施例所提供的接口自动化测试方法也可以由终端设备101、102、103执行。相应地,本公开实施例所提供的接口自动化测试装置、设备、介质和程序产品也可以设置于终端设备101、102、103中。在该实施例中,接口测试平台105可以接收终端设备101、102、103发送的测试报文,例如接口测试平台105可以与终端设备101、102、103通信连接,或者接口测试平台105可以接收由服务器104转发的测试报文。
在再一些实施例中,本公开实施例所提供的接口自动化测试方法也可以部分由服务器104执行,部分由终端设备101、102、103执行。相应地,在再一些实施例中,本公开实施例所提供的接口自动化测试装置、设备、介质和程序产品也可以部分设置于服务器104中,部分设置于终端设备101、102、103中。例如,可以在终端设备101、102、103中执行接口文档功能逻辑的撰写规范性校验,在服务器104中执行接口文档的解析和测试等。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
以下将基于图1描述的场景,通过图2~图6对本公开实施例的接口自动化测试方法进行详细描述,其中,以服务器104来执行本公开实施例的方法为例进行说明。
图2示意性示出了根据本公开一实施例的接口自动化测试方法的流程图。
如图2所示,根据该实施例的接口自动化测试方法可以包括操作S210、操作S230和操作S250。
首先在操作S210,获取接口文档。
在软件工程领域,一个应用面向外部应用提供服务时均采用接口方式。接口包括请求参数、接口处理逻辑和返回值。调用方调用接口时,要提供上送的请求参数的值以及组合方式,接口进行处理后,将返回值返回给调用方。
接口是具体的程序,而接口文档用于描述接口程序的实现。接口文档有助于其他的程序人员或测试人员了解接口程序是如何实现和如何工作的。
在本公开实施例中,接口文档中按照结构化规范利用预定义的类编程语言编写了接口的功能逻辑。如前文的术语解释,接口的功能逻辑用于描述接口在各种情形下的输入和输出之间的对应关系。其中,接口的输入包括每种情形下接口的所有请求参数的取值范围及其组合方式。接口的输出包括每种情形下接口的返回值。
为了实现对接口的功能逻辑的编写,类编程语言中至少应当包括用于限定请求参数的取值范围的关键字(在本文中称为“第一类关键字”),以及用于限定不同请求参数的组合方式的关键字(在本文中称为“第二类关键字”)。在一些实施例中,类编程语言还应当包含用于表示接口的返回值的关键字(在本文中称为“第三类关键字”)。
该第一类关键字例如可以包括各种数学符号,诸如:>、>=、<、<=、<>(不等于)、=(等于)。
该第二类关键字例如可以包括各种布尔运算符或表示组合关系的字符,诸如:and、or、not。
该第三类关键字例如可以借用编程语言中的return(或缩写ret),也可以是其他用于描述接口输出的特定字段名等。
在利用类编程语言描述了接口的输入和输出后,可以通过结构化规范来描述接口的输入与输出的对应关系。
在一个实施例中,可以通过表格的方式,将同一情形下的输入与输出作为同一条记录,其中,接口的输入和输出分别列示在不同的表格字段中。
在另一实施例中,可以通过一句类编程语言来编写一种情形下接口的输入和输出之间的对应关系。其中,每一句类编程语言可以包括接口的输入和输出,其中,接口的输入和输出之间可以通过第三类关键字来连接。
具体地,当通过每一句类编程语言来编写一种情形下接口的输入和输出之间的对应关系时,每一句类编程语言中至少包括:用于限定每个请求参数的取值范围的第一类关键字,用于限定不同请求参数的组合关系的第二类关键字,以及用于表示接口的返回值的第三类关键字。
比如在一个用户充值促销场景下的接口,假设每次充值可选金额为30、50和100,其中,当连续两次充值总额满100时,可以对用户进行奖励。对应的接口中请求参数为:x∈{30,50,100},y∈{30,50,100};接口处理逻辑可以为:如果x+y≥100则返回00000(成功)true,否则返回00001(失败)false。针对此接口,在接口文档中按照结构化规范利用类编程语言编写的接口的功能逻辑,可以如下例1所示:
例1:
x=30 and y=30 ret(00001);
x=30 and y=50 ret(00001);
x=50 and y=30 ret(00001);
x=50 and y=50 ret(00000);
x=100 ret(00000);
y=100 ret(00000)。
接下来在操作S230,解析接口文档中接口的功能逻辑,以得到在各种情形中的每种情形下接口的输入和输出。
可以根据接口的功能逻辑编写时所遵循的结构化规范、以及类编程语言的关键字,提取每种情形下接口的输入和输出。
对于类似于例1这种接口功能逻辑的解析,可以参考图3的示例。
图3示意性示出了根据本公开实施例的接口自动化测试方法中操作S230中解析接口文档的流程图。
如图3所示,根据该实施例操作S230可以包括操作S231、操作S233和操作S235。
在操作S231,基于接口文档中的每一句类编程语言中的第一类关键字,提取接口中的所有请求参数的取值范围。
在操作S233,基于接口文档中的每一句类编程语言中的第二类关键字,提取接口中所有请求参数的组合方式。
在操作S235,基于接口文档中的每一句类编程语言中的第三类关键字,得到接口的返回值。
根据从每一句类编程语言中解析得到的接口中的所有请求参数的取值范围和组合方式,可以得到接口的输入,根据从同一句类编程语言中解析得到的接口的返回值,可以得到具有对应关系的接口的输出。
接下来在操作S250,基于解析得到的每种情形下接口的输入和输出,自动测试接口。
自动测试接口,即将接口的输入上送给接口,通过实际执行接口,获得接口的测试结果,然后根据获得的测试结果与解析得到的接口的输出(即,预期返回值)是否一致,来判断接口对上送的输入的反馈是否与接口文档的描述一致,以此确定接口程序的编写是否正确。
图4示意性示出了根据本公开实施例的接口自动化测试方法中操作S250测试接口的流程图。
如图4所示,根据该实施例操作S250可以包括操作S251、操作S253以及操作S255。
首先在操作S251,基于解析得到的每种情形下接口的所有请求参数的取值范围及其组合方式,得到该情形下的测试报文。
测试报文是接口上送报文的一种,是在测试阶段使用的报文。其中,接口上送报文是调用方调用接口时,用于向接口提供输入并请求接口进行处理,以获得接口的返回值的报文。上送报文包括了每个请求参数的值及其组合方式。接口收到上送报文后,执行程序,生成返回报文给调用方,其中,返回报文中包括了接口处理后的返回值(本文中将与测试报文对应的返回报文中所包含的返回值称为“测试结果”)。
然后在操作S253,基于解析得到的每种情形下接口的返回值,得到该情形下的预期返回值。即,从接口文档中获取的返回值,为预期返回值。
接下来在操作S255,基于测试报文和预期返回值,测试接口。
测试的具体过程为:首先将测试报文发送到接口,然后获得接口针对测试报文返回的测试结果,接下来根据测试结果与预期返回值的比较确定接口的测试成功与否。当测试结果与预期返回值一致时,确定接口测试成功,而当测试结果与预期返回值不一致时,确定接口测试失败。
根据本公开的实施例,针对接口文档中的接口的功能逻辑的描述,编制类编程语言,并通过结构化规范,将传统思维中使用自然语言描述的接口的功能逻辑,变更为程序可以解析的结构化信息。接下来,解析接口文档,以自动生成测试报文并执行,可以自动地验证接口处理逻辑,实现了接口的自动化测试,避免了测试人员在阅读接口文档的基础上重新编写测试案例再手动测试的麻烦。而且,只要接口的功能逻辑编写正确且完善,就能够保证测试的全面性。尤其是当接口发生变更的情况下,只要接口程序变更的同时,接口文档能够描述变更后的接口(即,接口中的接口的功能逻辑也正确),就可以对接口进行自动化的全面测试。现有技术中当接口程序变动后,测试人员要重新阅读接口文档重新编写测试案例,这种情况下测试人员往往会选择性的测试部分与接口改动相关的测试案例,难免会导致测试疏漏。本公开实施例的方法在接口文档的编写过程,就将接口的功能逻辑通过类编程语言编写成可以解析的结构化格式,使得接口可以自动化全面地进行解析。
图5示意性示出了根据本公开另一实施例的接口自动化测试方法的流程图。
根据本公开的一些实施例,为了避免在操作S230中解析接口文档中的接口功能逻辑时,出现因为接口功能逻辑的编写错误到时的解析报错的情形,可以在操作S230之前,校验接口文档中接口的功能逻辑。具体地,如图5所示,根据该实施例的接口自动化测试方法可以包括操作S210,操作S221~操作S222,操作S230和操作S250。
首先在操作S210,获取接口文档。接口文档中,按照结构化规范利用预定义的类编程语言编写了接口的功能逻辑。其中,接口的功能逻辑用于描述接口在各种情形下的输入和输出之间的对应关系。具体可以参考前文关于操作S210的详细描述,此处不再赘述。
接下来通过操作S221~操作S222,校验接口文档中接口的功能逻辑的撰写规范性。
具体地,在操作S221,获取接口文档中接口的所有请求参数的定义及属性。
然后在操作S222,逐句校验接口文档中的每一句类编程语言,其中,当每一句类编程语言满足校验通过条件时,确定该句类编程语言编写正确;否则确定该句类编程语言的编写存在错误。
其中,校验通过条件至少包括:第一类关键字前存在接口文档中定义的请求参数,通过第一类关键字所限定的请求参数的取值范围满足该请求参数的属性,以及每一句类编程语言的结尾包括第三类关键字。
以上述例1所示,先获取接口文档中接口的请求参数的定义及属性等描述,如下表1所示。
类型 字段名称 必输 数据字典 字段描述
Integer X 30,50,100 第一次充值金额
Integer Y 30,50,100 第二次充值金额
表1
然后逐句校验例1中的类编程语言。例如,校验除了关键字(如:=)以外字段名称是否是表1中所列的请求参数。若不是说明类编程语言存在错误。若是则之后验证关键字(如:=)之后的数值范围是否是预定义的范围。例如在例1中校验x、y的取值是否整数,取值范围实施在表1的数据字典内,不在范围内说明类编程语言存在错误。最后校验每句类编程语言是否以ret结尾,如不存在ret,或者不以ret结尾则说明语句不完整,类编程语言存在错误。
当校验发现某一句类编程语言的编写存在错误时,将该错误推送给终端设备101、102、103的用户,由用户对错误进行更正。当所有的类编程语句均校验通过后,则进行后的解析和测试。
接下来在操作S230,解析接口文档中接口的功能逻辑,以得到在各种情形中的每种情形下接口的输入和输出。
以及在操作S250,基于解析得到的每种情形下接口的输入和输出,自动测试接口。
该实施例中,操作S230和操作S250可以参考前文的具体描述,此处不再赘述。
可以理解,在一些实施例中,服务器104在操作S210中获取到的接口文档可以是已经校验通过的,从而在进行接口自动化测试的过程中可以跳过操作S221~操作S222,进行后续的解析和测试过程,即如图2所示的方法流程。在另一些实施例中,服务器104在操作S210中获取到的接口文档是否经过校验未知,或者明确知道未校验过,则在解析之前又必要先通过操作S221~操作S222进行校验,这样使用校验通过的接口文档进行解析,可以避免解析报错或者测试出错后,搞不清楚究竟是接口程序功能的问题,还是接口文档编写的问题。
图6示意性示出了根据本公开一实施例的接口自动化测试装置600的结构图。
如图6所示,根据本公开的一些实施例,该装置600包括获取模块610、接口文档解析模块620以及接口测试模块630。根据本公开的另一些实施例,该装置600还可以进一步包括接口文档结构化校验模块640。该装置600可以用于实现参考图2~图5所描述的方法。
获取模块610用于获取接口文档。接口文档中,按照结构化规范利用预定义的类编程语言编写了接口的功能逻辑。其中,接口的功能逻辑用于描述接口在各种情形下的输入和输出之间的对应关系,其中,接口的输入包括每种情形下接口的所有请求参数的取值范围及其组合方式,接口的输出包括每种情形下接口的返回值。在一个实施例中,获取模块610可以执行前文描述的操作S210。
接口文档解析模块620用于解析接口文档中接口的功能逻辑,以得到在各种情形中的每种情形下接口的输入和输出。在一个实施例中,接口文档解析模块620可以执行前文描述的操作S230。
接口测试模块630用于基于解析得到的每种情形下接口的输入和输出,自动测试接口。在一个实施例中,接口测试模块630可以执行前文描述的操作S250。
接口文档结构化校验模块640用于在接口文档解析模块解析接口文档中接口的功能逻辑之前,校验接口文档中接口的功能逻辑。接口文档结构化校验模块具体用于:获取接口文档中接口的所有请求参数的定义及属性;逐句校验接口文档中的每一句类编程语言,其中,当每一句类编程语言满足校验通过条件时,确定该句类编程语言编写正确;否则确定该句类编程语言的编写存在错误。其中,校验通过条件至少包括:第一类关键字前存在接口文档中定义的请求参数;通过第一类关键字所限定的请求参数的取值范围满足该请求参数的属性,以及每一句类编程语言的结尾包括第三类关键字。在一个实施例中,接口文档结构化校验模块640可以执行前文描述的操作S221~操作S222。
根据本公开的实施例,获取模块610、接口文档解析模块620、接口测试模块630和接口文档结构化校验模块640中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块610、接口文档解析模块620、接口测试模块630和接口文档结构化校验模块640中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块610、接口文档解析模块620、接口测试模块630和接口文档结构化校验模块640中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图7示意性示出了根据本公开另一实施例的接口自动化测试装置700的工作流程。具体地,图7示意了接口自动化测试装置700在获取到接口文档701后的处理流程。该接口自动化测试装置700为图6所示的装置600的一个具体实施例。
结合图6和图7,在装置700中,接口测试模块630被拆分为测试报文生成模块731、接口执行模块732以及一致性校验结果输出模块732。因此,图7是示意的接口自动化测试装置700可以包括获取模块610(图7中未示出)、接口文档解析模块620、接口文档结构化校验模块640、测试报文生成模块731、接口执行模块732和一致性校验结果输出模块733。各个模块的工作过程详述如下。
获取模块610获取的接口文档701使用类编程语言按照结构化规范编写接口的功能逻辑。其中,类编程语言的书写规范中,可以制定通用的类编程语言关键字,将以自然语言描述或表达的接口的功能逻辑转换为程序可以解析的类编程语言,为后续生成接口测试报文提供基础。类编程语言可以有效的描述基于上送字段的处理逻辑,以及处理逻辑预期的返回值,从而有效提升接口文档701的可读性。
接口文档结构化校验模块640,用于校验接口文档701中类编程语言书写的正确性,避免无效的字段、不正确的上送字段名称、不完整的表达式。
接口文档解析模块620,用于打开并解析接口文档701,逐条读取接口文档701中的接口名称、请求参数、类编程语言,从每句类编程语言中读取请求参数的取值(或取值范围)和组合方式,以及预期返回值,并传递给测试报文生成模块731。
测试报文生成模块731:依据接口名称、请求参数的取值(或取值范围)和组合方式,生成测试报文,并将预期返回值一同送给接口执行模块732。
接口执行模块732,配置运行环境的信息,如接口测试平台105的IP地址及端口号。在实际运行环境中,逐条将测试报文送给接口,并将接口的实际执行后返回的测试结果和预期返回值,传递给一致性校验结果输出模块733。
一致性校验结果输出模块733,针对每一条测试结果与预期返回值进行对比,输出并标识出每个测试案例验证是否成功,如果测试结果与预期返回值相同,则视为成功,如果不相同,则视为失败。
本公开实施例通过对接口文档701中关于接口的功能逻辑的规范化、结构化处理,使得接口文档中的接口的功能逻辑可以被程序解析,结合接口文档中对请求参数的描述,自动生成接口测试报文,逐一执行各种情形对应的测试报文,将测试结果与预期结果进行比较,从而自动化验证接口处理逻辑的正确性。
图8示意性示出了适于实现根据本公开实施例的接口自动化测试方法的电子设备800的方框图。
如图8所示,根据本公开实施例的电子设备800包括处理器801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。处理器801例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器801还可以包括用于缓存用途的板载存储器。处理器801可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 803中,存储有电子设备800操作所需的各种程序和数据。处理器801、ROM802以及RAM 803通过总线804彼此相连。处理器801通过执行ROM 802和/或RAM 803中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 802和RAM 803以外的一个或多个存储器中。处理器801也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备800还可以包括输入/输出(I/O)接口805,输入/输出(I/O)接口805也连接至总线804。电子设备800还可以包括连接至I/O接口805的以下部件中的一项或多项:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 802和/或RAM 803和/或ROM 802和RAM 803以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的方法。
在该计算机程序被处理器801执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分809被下载和安装,和/或从可拆卸介质811被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被处理器801执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (10)

1.一种接口自动化测试方法,包括:
获取接口文档;所述接口文档中,按照结构化规范利用预定义的类编程语言编写了接口的功能逻辑;其中,所述接口的功能逻辑用于描述所述接口在各种情形下的输入和输出之间的对应关系,其中,所述接口的输入包括每种情形下所述接口的所有请求参数的取值范围及其组合方式,所述接口的输出包括每种情形下所述接口的返回值;
解析所述接口文档中所述接口的功能逻辑,以得到在所述各种情形中的每种情形下所述接口的输入和输出;以及
基于解析得到的每种情形下所述接口的输入和输出,测试所述接口。
2.根据权利要求1所述的方法,其中,所述结构化规范包括通过每一句类编程语言来编写一种情形下所述接口的输入和输出之间的对应关系,其中,每一句类编程语言中至少包括:
用于限定每个请求参数的取值范围的第一类关键字;
用于限定不同请求参数的组合关系的第二类关键字;以及
用于表示所述接口的返回值的第三类关键字。
3.根据权利要求2所述的方法,其中,在所述解析所述接口文档中所述接口的功能逻辑之前,所述方法还包括校验所述接口文档中所述接口的功能逻辑,具体包括:
获取所述接口文档中所述接口的所有请求参数的定义及属性;
逐句校验所述接口文档中的每一句类编程语言,其中,当每一句类编程语言满足校验通过条件时,确定该句类编程语言编写正确;否则确定该句类编程语言的编写存在错误;
其中,所述校验通过条件至少包括:
所述第一类关键字前存在所述接口文档中定义的请求参数;
通过所述第一类关键字所限定的请求参数的取值范围满足该请求参数的属性;以及
每一句类编程语言的结尾包括所述第三类关键字。
4.根据权利要求2或3所述的方法,其中,所述解析所述接口文档中所述接口的功能逻辑,以得到在所述各种情形中的每种情形下所述接口的输入和输出包括:
基于所述接口文档中的每一句类编程语言中的所述第一类关键字,提取所述接口中的所有请求参数的取值范围;
基于所述接口文档中的每一句类编程语言中的所述第二类关键字,提取所述接口中所有请求参数的组合方式;以及
基于所述接口文档中的每一句类编程语言中的所述第三类关键字,得到所述接口的返回值。
5.根据权利要求1所述的方法,其中,所述基于解析得到的每种情形下所述接口的输入和输出,测试所述接口包括:
基于解析得到的每种情形下所述接口的所有请求参数的取值范围及其组合方式,得到该情形下的测试报文;
基于解析得到的每种情形下所述接口的返回值,得到该情形下的预期返回值;以及
基于所述测试报文和所述预期返回值,测试所述接口。
6.根据权利要求5所述的方法,其中,所述基于所述测试报文和所述预期返回值,测试所述接口包括:
将所述测试报文发送到所述接口;
获得所述接口针对所述测试报文返回的测试结果;
当所述测试结果与所述预期返回值一致时,确定所述接口测试成功;以及
当所述测试结果与所述预期返回值不一致时,确定所述接口测试失败。
7.一种接口自动化测试装置,包括:
获取模块,用于获取接口文档;所述接口文档中,按照结构化规范利用预定义的类编程语言编写了所述接口的功能逻辑;其中,所述接口的功能逻辑用于描述所述接口在各种情形下的输入和输出之间的对应关系,其中,所述接口的输入包括每种情形下所述接口的所有请求参数的取值范围及其组合方式,所述接口的输出包括每种情形下所述接口的返回值;
接口文档解析模块,用于解析所述接口文档中所述接口的功能逻辑,以得到在所述各种情形中的每种情形下所述接口的输入和输出;
接口测试模块,用于基于解析得到的每种情形下所述接口的输入和输出,测试所述接口。
8.一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行权利要求1~6中任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现权利要求1~6中任一项所述的方法。
10.一种计算机程序产品,包括计算机程序指令,所述计算机程序指令被处理器执行时实现权利要求1~6中任一项所述的方法。
CN202210996209.2A 2022-08-18 2022-08-18 接口自动化测试方法、装置、设备和介质 Pending CN115357491A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210996209.2A CN115357491A (zh) 2022-08-18 2022-08-18 接口自动化测试方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210996209.2A CN115357491A (zh) 2022-08-18 2022-08-18 接口自动化测试方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN115357491A true CN115357491A (zh) 2022-11-18

Family

ID=84002339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210996209.2A Pending CN115357491A (zh) 2022-08-18 2022-08-18 接口自动化测试方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN115357491A (zh)

Similar Documents

Publication Publication Date Title
CN110018955B (zh) 通过转换手动测试用例来生成自动化测试脚本
CN111428462B (zh) 通讯协议模板构建的方法及终端设备
US10229042B2 (en) Detection of meaningful changes in content
US20080295085A1 (en) Integrated code review tool
CN109634841B (zh) 电子装置、接口自动化测试方法及存储介质
CN113157572B (zh) 一种测试案例生成方法、系统、电子设备及存储介质
US20070245313A1 (en) Failure tagging
CN117632710A (zh) 测试代码的生成方法、装置、设备及存储介质
CN113535577B (zh) 基于知识图谱的应用测试方法、装置、电子设备和介质
CN114816993A (zh) 一种全链路接口测试方法、系统、介质及电子设备
US20210286706A1 (en) Graph-based method for inductive bug localization
CN113032256A (zh) 自动化测试方法、装置、计算机系统和可读存储介质
CN111078529B (zh) 客户端写入模块测试方法、装置、电子设备
CN115357491A (zh) 接口自动化测试方法、装置、设备和介质
CN115470152A (zh) 测试代码生成方法、测试代码生成装置以及存储介质
US8819645B2 (en) Application analysis device
CN114691527A (zh) 单元测试案例生成方法、装置、设备、介质和程序产品
CN114942887A (zh) 一种程序安全测试方法、装置、设备和介质
US11449412B2 (en) Automated unit testing in a mainframe CICS environment
CN113419738A (zh) 接口文档的生成方法、装置及接口管理设备
CN113672512A (zh) 代码检查规则生成方法、代码检查方法、装置、介质
CN113238940A (zh) 一种接口测试结果的比对方法、装置、设备和存储介质
CN113722229A (zh) 软件测试方法、装置、电子设备和存储介质
CN113138767A (zh) 代码语言转换方法、装置、电子设备及存储介质
US20240054232A1 (en) Build process security framework

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination