掌桥专利:专业的专利平台
掌桥专利
首页

一种通用API自动化测试系统

文献发布时间:2024-04-18 19:59:31


一种通用API自动化测试系统

技术领域

本发明涉及无线通信技术领域,具体涉及一种通用API自动化测试系统。

背景技术

进行API接口测试的方法有很多,例如针对特定产品特定场景编写特定的测试脚本(如Python脚本、Shell脚本等),或者使用主流的API测试工具(如进行HTTP API测试的Postman等),或者机械地进行人工测试等。

上述的这些API测试方法中:

若使用编写测试脚本的方式,则只适用于开发人员,对于没有编程技能的测试人员或其他人员,这项工作是很困难的。另外,在产品或测试场景发生变更时,可能需要额外投入成本来维护测试脚本。

若使用主流的测试工具,则面临着通用性或兼容性差的情况,要么只能特定于某个测试场景或某类产品,要么只能特定于某种通信协议。

对于需要测试大量用例的,或者需要反复进行多次测试的,则人工测试的方式显然是效率低下的。

鉴于此,在中国专利CN202011509272.6公开了一种用于服务开放平台的API测试方法及系统,包括:基于Kubernetes命名空间将生产环境网关与沙盒环境网关进行隔离,确定沙盒环境网关的最小资源需求,并根据所述最小资源需求基于yaml文件实现沙盒环境网关服务的快速部署;发布者通过服务开放平台将已在生产环境创建的API同步到沙盒环境;当发布者进行API测试时,在沙盒环境网关创建匿名用户,使得发布者利用所述匿名角色通过修改参数值发起服务调用请求,并获取服务调用响应信息,以确定API调试结果;当调用者进行API测试时,在沙盒环境网关创建临时用户,使得调用能利用所述临时用户角色通过修改参数值发起服务调用请求,并获取服务调用响应信息,以使得调用者确定API测试结果。该专利是运用于云部署场景下的应用的API测试,其需要有云部署能力的专业运维人员或开发人员进行,仅支持HTTP协议的API,仅支持向其部署目标上的后端程序发起API测试请求,仅支持其所述SDK指定格式的API指令,通用性强和兼容性相对较差。

在中国专利CN 202110220017.8中公开了一种应用程序接口API测试方法以及装置,在申请中,API测试装置先获取用户传输的API文件,解析API文件,生成API操作关系图和测试先知;API测试装置根据API操作关系图生成第一测试用例集合,触发服务节点执行该第一测试用例集合中的测试用例,获取执行第一测试用例集合中测试用例的过程中所发起的API请求和对应的API响应。向用户提供执行第一测试用例集合中的测试用例的过程中所发起的API请求和API响应与测试先知的匹配情况。从测试用例生成、触发执行测试用例、以及测试结果的提供,由API测试装置自行完成的,无须人为参与,能够高效的完成API测试过程。该专利虽然是以自动化的形式提高API的测试效率,但在在测试用例来源上是通过API文档或实际流量的形式来自动生成测试用例,虽然自动化程度更高但同时误差也较大,且通用性和兼容性也很一般。

在中国专利CN202011276265.6公开了一种API测试方法及装置、电子设备、计算机可读存储介质。本申请一实施例中,API测试方法包括:监控银行系统与其交互方之间的API的变化;在API发生变化时,通知所述银行系统修改所述API;在修改所述API之后,启动机器人流程自动化RPA程序,由所述RPA程序完成测试工具的配置操作并调用所述测试工具针对所述API进行测试。本申请实施例能够实时监控银行系统相关API的变更情况并针对发生更改的API进行自动化接口测试,不仅可以节省时间,而且可以有效提高API的测试效率。该专利表述的是一种特定场景下的应用,其专门用于监控外界系统的API变更,既无法在通用场景下进行自动化测试应用,又无法创建各种不同的测试场景,无法用于验证被测系统的API是否符合预期设计或是否存在缺陷。

综上所述,有必要对现有技术做进一步完善。

发明内容

针对上述背景技术中存在的技术问题,本发明提出了一种通用API自动化测试系统,其易于操作,通用性强,兼容性强,易于排错,测试高效,可以在一个图形界面程序中方便高效地创建或编辑相关的数据项,并能够对不同产品、不同测试场景、使用不同通信协议、不同风格API的目标设备进行统一的API接口测试,且能够直观地展示或导出最终测试结果以及期间的详细日志信息。

为解决上述技术问题,本发明提供的一种通用API自动化测试系统,包括用户接口、执行器、执行配置、连接配置库、方案库、用例库和文件系统;所述用户接口为人机交互的图形界面,其负责将来自用户的交互指令作用在所述执行器、所述执行配置、所述连接配置库、所述方案库、所述用例库和所述文件系统上;且所述执行器的状态和结果会反馈到所述用户接口上;所述执行器为所述自动化测试系统的核心模块,其依赖于所述用例库、连接配置库、方案库和执行配置;所述执行器与目标设备进行双向数据交互;所述执行器响应所述用户接口的控制指令,并向所述用户接口反馈其执行过程中的状态以及执行结果;所述执行器将其执行过程中的状态以及执行结果持久化存储到所述文件系统中;所述执行配置用于配置所述执行器的行为;所述方案库依赖于所述用例库。

所述通用API自动化测试系统,其中:所述执行器在执行过程中产生的信息数据会持久化存储到所述文件系统中,用户可从所述文件系统中导入所述用例库、方案库和连接配置库中任意一个。

所述通用API自动化测试系统,其中:所述执行器是通过选定的所述连接配置库与目标设备建立交互通信,然后根据选定的方案读取一条用例并发送给目标设备,然后根据用例的描述对目标设备响应回来的结果进行判别,以确定该条用例是否测试通过。

所述通用API自动化测试系统,其中:所述连接配置库包含有若干个连接配置,每个连接配置描述了对应目标设备的属性以及如何与该目标设备建立连接和进行登录。

所述通用API自动化测试系统,其中:所述自动化测试系统是通过所述连接配置库的连接配置中所描述的登录用户名和密码进行登录。

所述通用API自动化测试系统,其中:所述方案库包含有若干个方案,每个方案描述了该由哪些用例有序组成以及每个用例的测试行为。

所述通用API自动化测试系统,其中:所述用例库包含有若干个测试用例,每个测试用例描述一个特定的API接口测试实例。

所述通用API自动化测试系统,其中:所述文件系统为所述自动化测试系统运行的操作系统的文件系统,所述用户接口将从所述文件系统导入数据。

所述通用API自动化测试系统,其中:所述用户接口还可导出数据包文件至所述文件系统。

所述通用API自动化测试系统,其中:所述执行器将导出测试报告和测试日志到所述文件系统。

所述通用API自动化测试系统,其中,测试流程具体为:

(1)结合测试场景和测试目标,在图形界面程序中创建或导入相关的用例和连接配置,用例将存储在用例库中,连接配置将存储在连接配置库中;

(2)结合测试场景,通过图形界面程序从用例库中选定一系列用例,构成测试方案,创建的测试方案将存储在方案库中;

(3)结合测试场景,在图形界面程序中修改执行配置中的数据,选定某个连接配置作为目标测试对象,选定某个方案作为测试用例集;

(4)运行执行器,此时执行器会根据所选的连接配置与目标设备进行通信,然后根据所选的方案中的用例集向目标设备发起API测试,并对目标设备的响应结果进行解析和判别,从而得出测试结果,然后展示在图形界面程序上;

(5)测试完毕后,可通过图形界面程序导出相关的数据和结果到文件系统中进行持久化存储。

采用上述技术方案,本发明具有如下有益效果:

本发明通用API自动化测试系统结构设计简单、合理,可以在一个图形界面程序中方便高效地创建或编辑相关的数据项,并能够对不同产品、不同测试场景、使用不同通信协议、不同风格API的目标设备进行统一的API接口测试,且能够直观地展示或导出最终测试结果以及期间的详细日志信息;具体优点如下:

(1)易于操作

提供简单直观的用户界面,不管是开发人员、测试人员还是毫无计算机基础的其他人员都可快速上手该软件。

(2)通用性强

本发明能支持多种不同的通信协议,不针对特定的产品或场景;本发明可支持TCP、HTTP、Telnet、SSH、Serial Port等多种协议,可在连接配置库中自由定义,且后期有新协议需要支持时也非常容易扩展;可根据连接配置库的定义,向任何一台目标设备发起API测试请求;可根据用例库的定义支持任何格式的API指令;本发明给出了一个通用场景下的自动化测试应用,使用者可通过自行定义用例库、连接配置库、方案库以及执行配置来创建各种不同的测试场景,主要用于验证被测系统的API是否符合预期设计或是否存在缺陷。

(3)兼容性强

可选择匹配预期响应数据、使用高级函数、使用正则表达式三种方式进行结果的匹配,以兼容各种复杂的API用例;本发明提供了一种简单易用的用户接口,使得任何非专业人员均可轻松上手使用本系统;本发明提供图形界面编辑区域让用户手动输入,能够更精准地定义测试用例;本发明能够根据多种测试场景定义多种测试方案,且能够方便选用某个测试方案进行测试执行。

(4)协作性强

可通过导入/导出数据包、数据合并的方式,实现团队协作;

(5)易于排错

输出显示和持久化保存详细的交互数据、测试日志以及用例的状态信息,并对关键信息进行高亮显示,且测试失败的用例能够快递定位到相应的日志区域和交互数据区域,便于快速排查那些测试失败的用例。

(6)高效

系统将根据用户的录入习惯,在新建连接配置、用例或方案时,会自动填充一些信息字段,以减少用户反复输入同样内容的频度;在创建用例时,提供“联机录入”功能,使用户能够更快速地创建用例,且更有效地降低输入错误的概率;由于本发明可导入导出数据包,因此对于有大量API用例的情况,可以由多个人员在多台电脑上并行创建用例,然后再合并成一个数据包,以提高工作效率。

本发明通用API自动化测试系统中的用例编写,则可以采用自动化测试APP的UI连接目标设备或者目标系统,在UI中与目标设备或目标系统进行API交互,并将交互的过程(包括请求和响应)记录为一条用例。本发明将API的使用和用例的撰写联系起来(记录API的使用过程),可以更直观高效的撰写用例。另外,结合本发明中支持可选择匹配预期响应数据、使用高级函数、使用正则表达式三种方式进行结果的匹配,以兼容各种复杂的API用例等设计,让用例的撰写会更简单。

附图说明

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

图1为本发明通用API自动化测试系统的整体架构图;

图2为本发明通用API自动化测试系统在常规操作时的交互及内部运行的时序图;

图3为本发明通用API自动化测试系统的测试流程图。

具体实施方式

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

下面结合具体的实施方式对本发明做进一步的解释说明。

实施例1

如图1、2所示,本实施例提供的通用API自动化测试系统,包括用户接口1、执行器2、执行配置3、连接配置库4、方案库5、用例库6和文件系统8。

该用户接口1为便于人机交互的图形界面,其负责将来自用户的交互指令作用在执行器2、执行配置3、连接配置库4、方案库5、用例库6和文件系统8上。该用户接口1便于用户与计算机程序进行交互,例如点击界面上某个按钮后,程序内部则会执行相应的功能,又例如程序的状态或执行结果会通过文字或图像的形式在图形界面上展现出来。

该执行器2依赖于连接配置库4、方案库5、用例库6和执行配置3,并负责与目标设备7进行通信以及执行测试相关的动作。该执行器2是通过选定的连接配置库4与目标设备7建立交互通信,然后根据选定的方案读取一条用例并发送给目标设备7,然后根据用例的描述对目标设备7响应回来的结果进行判别,以确定该条用例是否测试通过。

该执行配置3用于配置执行器2的一些行为(如执行次数、遍历方式、异常反馈模式等)。

该连接配置库4包含有若干个连接配置(每个连接配置描述了一台设备的属性,如IP地址、通信协议、登录的用户名和密码等),每个连接配置描述了对应目标设备7的属性以及如何与该目标设备7建立交互通信和进行登录。

该方案库5与用例库6交互通信,该方案库5依赖于用例库6,包含有若干个方案,每个方案描述了该由哪些用例有序组成,以及每个用例的测试行为。

该用例库6包含有若干个测试用例,每个测试用例描述一个特定的API接口测试实例(包括API指令、反馈模式、反馈匹配等)。

该目标设备7为实际被执行API测试的硬件设备,执行器2与目标设备7进行通信和信息交互。

该文件系统8为本发明所运行于的操作系统的文件系统,用户接口1将从文件系统8导入数据包或导出数据包文件到文件系统8,执行器2将导出测试报告和测试日志到文件系统8。

实施例2

基于实施例1,结合图2,本发明具有以下的细节特征:

(1)能够支持多种不同的通信协议(包括但不限于串口、TCP、Telnet、SSH、HTTP等),并能够实现自动登录(通过连接配置库4的连接配置中所描述的登录用户名和密码进行登录;同时考虑到兼容性,对于何时应该发送登录用户名,何时应该发送密码,何时判定为已登录成功,何时判定为登录失败,也是在连接配置中进行描述),通过连接配置来定义具体如何与目标设备7建立交互通信以及如何进行登录。

(2)连接配置库、用例库和方案库可方便打包成数据包文件导出(在用户接口1上点一个按钮就可导出,导出后可将数据包文件发送或拷贝给其他人),然后在另一台安装有本软件的电脑上导入,实现“一人编辑,多人使用”或“多人编辑,合并数据”的团队协作要求。

(3)测试用例的结果匹配,除常规的字符串比对外,还支持高级函数匹配和正则表达式匹配,以应付各种复杂的API用例。

(4)测试的反馈方式有自动反馈、被动反馈和人工反馈。其中主动反馈指的是执行器2自动根据预期响应数据或匹配函数或正则表达式进行测试结果匹配;被动反馈是指执行器2发送一条测试的API指令后,再发送另一条查询指令去查询前一条API指令是否生效;人工反馈是指执行器2发送一条测试API指令后,弹框提示用户自己去察看实际的测试现象并让用户决定这条用例是否通过。

(5)编辑用例的时候可以进行联机录入,即连接上目标设备,发送API指令,然后本发明通用API自动化测试系统会自动填充相应的用例字段,以提高用户创建/编辑测试用例的效率,并降低用例输入错误的概率。

(6)测试过程中执行器2产生的日志、每条用例的状态、与目标设备的交互数据等(执行器2在工作的过程中会更新系统的状态,如空闲状态、正在运行状态、出错状态等;在与目标设备7交互的过程中会产生交互数据,如与目标设备7选项协商的数据、发送给目标设备7的数据,以及从目标设备7接收来的数据等;在执行用例的过程中也会更新用例的状态,如尚未测试、正在测试、测试通过、测试失败、跳过测试、测试异常等;同时为了便于后期分析测试用例,执行器2也会记录目标设备7在工作过程中的所有活动即日志)都会实时展现在用户接口1的图形界面中,并持久化保存,以便用户观察和后期排错。

实施例3

如图3所示,本发明通用API自动化测试系统的测试流程或方法为:

(1)结合测试场景和测试目标,在图形界面程序中创建或导入相关的用例和连接配置,用例将存储在用例库中,连接配置将存储在连接配置库中;

(2)结合测试场景,通过用户接口1上的人机交互的图形界面从用例库中选定一系列用例,构成测试方案,创建的测试方案将存储在方案库中;

(3)结合测试场景,在用户接口1上的人机交互的图形界面中修改执行配置中的数据,选定某个连接配置作为目标测试对象,选定某个方案作为测试用例集;

(4)运行执行器,此时执行器会根据所选的连接配置与目标设备进行通信,然后根据所选的方案中的用例集向目标设备发起API测试,并对目标设备的响应结果进行解析和判别,从而得出测试结果,然后展示在用户接口1上的人机交互的图形界面上;

(5)测试完毕后,可通过用户接口1上的人机交互的图形界面导出相关的数据和结果到文件系统中进行持久化存储。

词汇说明:

API:应用程序编程接口,其主要目的是提供应用程序与开发人员以访问一组例程的能力。

联机录入:指在创建用例的时候,可以连接到目标设备,然后在控制台中直接输入被测API的指令内容,得到设备的实际响应结果,然后程序会自动地将输入的内容作为用例的“发送数据”,将设备实际响应结果作为用例的“预期响应”。

本发明易于操作,通用性强,兼容性强,易于排错,可以在一个图形界面程序中方便高效地创建或编辑相关的数据项,并能够对不同产品、不同测试场景、使用不同通信协议、不同风格API的目标设备进行统一的API接口测试,且能够直观地展示或导出最终测试结果以及期间的详细日志信息。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

技术分类

06120116522793