CN118152293A - 接口测试方法、装置、电子设备及计算机可读存储介质 - Google Patents

接口测试方法、装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN118152293A
CN118152293A CN202410369423.4A CN202410369423A CN118152293A CN 118152293 A CN118152293 A CN 118152293A CN 202410369423 A CN202410369423 A CN 202410369423A CN 118152293 A CN118152293 A CN 118152293A
Authority
CN
China
Prior art keywords
test
interface
test method
array
target test
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
CN202410369423.4A
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.)
China Construction Bank Corp
CCB Finetech Co Ltd
Original Assignee
China Construction Bank Corp
CCB Finetech Co Ltd
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 China Construction Bank Corp, CCB Finetech Co Ltd filed Critical China Construction Bank Corp
Priority to CN202410369423.4A priority Critical patent/CN118152293A/zh
Publication of CN118152293A publication Critical patent/CN118152293A/zh
Pending legal-status Critical Current

Links

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/3688Test management for test execution, e.g. scheduling of test suites
    • 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

Landscapes

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

Abstract

本申请提供一种接口测试方法、装置、电子设备及计算机可读存储介质,涉及软件测试技术领域。该方法包括:获取测试配置文件,并根据该测试配置文件获取待测试接口数组;遍历待测试接口数组中的测试接口,并确定当前遍历到的目标测试接口对应的测试方法数组;遍历该测试方法数组中的测试方法,并为当前遍历到的目标测试方法建立独立事务;在该独立事务的上下文中执行上述目标测试方法。本申请提供的方法,解决了现有技术中针对数据库持久层接口的单元测试,测试流程复杂、测试效率低下且容易出错的技术问题。

Description

接口测试方法、装置、电子设备及计算机可读存储介质
技术领域
本申请涉及软件测试技术领域,尤其涉及一种接口测试方法、装置、电子设备及计算机可读存储介质。
背景技术
在软件开发过程中,单元测试指对软件中的最小可测试单元进行检查和验证,是确保软件质量和稳定性的重要环节。
数据库持久层接口在编程中通常指的是与数据库交互的接口,它定义了对数据库进行增、删、改、查等操作的方法。目前,针对数据库持久层接口的单元测试,通常采用接口自动化测试工具来进行测试。
然而,现有技术中所采用的接口自动化测试工具大多是采用python语言编写的,这类工具虽然提供了丰富的功能集,但同时也可能带来了测试流程复杂、测试效率低以及错误率高等问题。
发明内容
本申请提供一种接口测试方法、装置、电子设备及计算机可读存储介质,可以解决现有技术中针对数据库持久层接口的单元测试,存在测试流程复杂、测试效率低下且容易出错的技术问题。
第一方面,本申请提供一种接口测试方法,包括:
获取测试配置文件,并根据所述测试配置文件确定待测试接口数组;所述测试配置文件为轻量级数据交换格式文件,所述待测试接口数组中包括至少一个测试接口;
遍历所述待测试接口数组中的测试接口,并根据所述测试配置文件确定当前遍历到的目标测试接口对应的测试方法数组;所述测试方法数组中包括至少一种测试方法;
遍历所述测试方法数组中的测试方法,并为当前遍历到的目标测试方法建立独立事务;
在所述独立事务的上下文中执行所述目标测试方法。
在一种可能的设计中,所述方法还包括:
在所述目标测试方法执行完成后,回滚所述独立事务,以撤销所述目标测试方法所执行的操作。
在一种可能的设计中,所述根据所述测试配置文件确定待测试接口数组,包括:
在所述测试配置文件中提取出待测试接口对应的测试请求报文;
将所述测试请求报文转换为轻量级数据交换格式的对象;
在所述轻量级数据交换格式的对象中获取待测试接口,并基于获取到的待测试接口,生成所述待测试接口数组。
在一种可能的设计中,所述根据所述测试配置文件确定当前遍历到的目标测试接口对应的测试方法数组,包括:
确定所述目标测试接口是否有效;
在确定所述目标测试接口有效的情况下,基于所述测试配置文件获取第一属性参数,所述第一属性参数包括所述待测试接口数组中的各个测试接口的公共入参字段;
获取所述目标测试接口的第二属性参数,并根据所述第一属性参数与所述第二属性参数生成待测试实例,所述第二属性参数包括所述目标测试接口的全类名;
基于所述待测试实例,确定所述测试方法数组。
在一种可能的设计中,所述遍历所述测试方法数组中的测试方法,并为当前遍历到的目标测试方法建立独立事务,包括:
初始化预设的事务管理器;
遍历所述测试方法数组中的测试方法,并确定当前遍历到的目标测试方法是否有效;
在所述目标测试方法有效的情况下,使用所述事务管理器为所述目标测试方法创建新的独立事务。
在一种可能的设计中,所述在所述独立事务的上下文中执行所述目标测试方法,包括:
获取所述目标测试方法的入参字段,并基于所述入参字段与所述公共入参字段生成入参数据;所述入参数据采用轻量级数据交换格式;
获取所述目标测试方法的第三属性参数数组;所述第三属性参数数组中包括所述目标测试方法对应的入参类全类名;
根据所述第三属性参数数组与所述入参数据,生成入参实例数组;
获取所述目标测试接口的测试方法名称属性,并生成所述目标测试方法对应的测试方法实例;
基于所述入参实例数组,执行所述测试方法实例。
在一种可能的设计中,上述方法还包括:
获取所述目标测试方法预先配置的预期执行数据;所述预期执行数据包括预期异常信息和/或预期返回数据;
检测所述目标测试方法的执行过程是否存在异常;
在所述目标测试方法的执行过程存在异常,且产生的异常信息与所述预期异常信息匹配的情况下,或者在所述目标测试方法的执行过程不存在异常,且返回数据与所述预期返回数据匹配的情况下,确定所述目标测试方法执行成功。
第二方面,本申请提供一种接口测试装置,包括:
获取模块,用于获取测试配置文件,并根据所述测试配置文件确定待测试接口数组;所述测试配置文件为轻量级数据交换格式文件,所述待测试接口数组中包括至少一个测试接口;
处理模块,用于遍历所述待测试接口数组中的测试接口,并根据所述测试配置文件确定当前遍历到的目标测试接口对应的测试方法数组;所述测试方法数组中包括至少一种测试方法;
事务建立模块,用于遍历所述测试方法数组中的测试方法,并为当前遍历到的目标测试方法建立独立事务;
执行模块,用于在所述独立事务的上下文中执行所述目标测试方法。
在一种可能的设计中,上述执行模块,还用于:
在所述目标测试方法执行完成后,回滚所述独立事务,以撤销所述目标测试方法所执行的操作。
在一种可能的设计中,上述获取模块,用于:
在所述测试配置文件中提取出待测试接口对应的测试请求报文;
将所述测试请求报文转换为轻量级数据交换格式的对象;
在所述轻量级数据交换格式的对象中获取待测试接口,并基于获取到的待测试接口,生成所述待测试接口数组。
在一种可能的设计中,上述处理模块,用于:
确定所述目标测试接口是否有效;
在确定所述目标测试接口有效的情况下,基于所述测试配置文件获取第一属性参数,所述第一属性参数包括所述待测试接口数组中的各个测试接口的公共入参字段;
获取所述目标测试接口的第二属性参数,并根据所述第一属性参数与所述第二属性参数生成待测试实例,所述第二属性参数包括所述目标测试接口的全类名;
基于所述待测试实例,确定所述测试方法数组。
在一种可能的设计中,上述事务建立模块,用于:
初始化预设的事务管理器;
遍历所述测试方法数组中的测试方法,并确定当前遍历到的目标测试方法是否有效;
在所述目标测试方法有效的情况下,使用所述事务管理器为所述目标测试方法创建新的独立事务。
在一种可能的设计中,上述执行模块,用于:
获取所述目标测试方法的入参字段,并基于所述入参字段与所述公共入参字段生成入参数据;所述入参数据采用轻量级数据交换格式;
获取所述目标测试方法的第三属性参数数组;所述第三属性参数数组中包括所述目标测试方法对应的入参类全类名;
根据所述第三属性参数数组与所述入参数据,生成入参实例数组;
获取所述目标测试接口的测试方法名称属性,并生成所述目标测试方法对应的测试方法实例;
基于所述入参实例数组,执行所述测试方法实例。
在一种可能的设计中,上述装置还包括检测模块,用于:
获取所述目标测试方法预先配置的预期执行数据;所述预期执行数据包括预期异常信息和/或预期返回数据;
检测所述目标测试方法的执行过程是否存在异常;
在所述目标测试方法的执行过程存在异常,且产生的异常信息与所述预期异常信息匹配的情况下,或者在所述目标测试方法的执行过程不存在异常,且返回数据与所述预期返回数据匹配的情况下,确定所述目标测试方法执行成功。
第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器和存储器;所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的接口测试方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的接口测试方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的接口测试方法。
本申请提供的接口测试方法、装置、电子设备及计算机可读存储介质,测试配置文件通过采用轻量级的数据交换格式文件,可以易于技术人员阅读和编写,同时也易于机器解析和生成,可以降低测试复杂度;同时,由于上述测试配置文件可以包含多个待测试接口的测试配置,由此可以对多个待测试接口进行批量化的测试,有利于进一步提升单元测试的效率;另外,各待测试方法拥有独立事务,不相互干扰,还能够确保测试之间的隔离性,提升测试结果的准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例中提供的一种接口测试方法的流程图一;
图2为本申请实施例中提供的一种接口测试方法的流程图二;
图3为本申请实施例中提供的一种接口测试方法的子流程示意图;
图4为本申请实施例中提供的一种接口测试装置的结构示意图;
图5为本申请实施例中提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一指示信息和第二指示信息仅仅是为了区分不同的指示信息,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a--c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请的技术方案中,所涉及的测试数据等信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。需要说明的是,在本申请实施例中,可能提及某些软件、组件、模型等业界已有方案,应当将它们认为是示范性的,其目的仅仅是为了说明本申请技术方案实施中的可行性,但并不意味着申请人已经或者必然用到了该方案。
持久层接口的设计有助于实现业务逻辑与数据访问逻辑的分离,提高代码的可维护性和可扩展性。同时,通过使用统一的接口规范,可以简化数据访问操作,提高开发效率。
例如,在Java的MyBatis框架中,Mapper接口就是典型的持久层接口。Mapper接口中定义了与数据库表对应的操作,如查询、插入、更新和删除等。通过MyBatis的配置,这些接口方法可以与结构化查询语言(Structured Query Language,SQL)语句关联起来,当接口方法被调用时,MyBatis会执行相应的SQL语句并返回结果。
目前,针对持久层接口的单元测试,通常采用接口自动化测试工具来进行测试,然而现有技术中所采用的接口自动化测试工具大多是采用python语言编写的,编写方式较为复杂,且配套工具较多,导致测试效率低下且容易出错。
针对上述技术问题,本申请实施例中提供了一种接口测试方法,通过采用轻量级数据交换格式的测试配置文件,易于技术人员阅读和编写,同时也易于机器解析和生成,可以降低测试复杂度;同时,通过对多个待测试接口进行批量化的测试,可以进一步提升单元测试的效率;另外,各待测试方法采用独立事务,不相互干扰,还能够确保测试之间的隔离性,提升测试结果的准确性。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
参照图1,图1为本申请实施例中提供的一种接口测试方法的流程图一。在一些实施例中,该接口测试方法包括:
S101、获取测试配置文件,并根据该测试配置文件确定待测试接口数组。
可选的,在一些实施方式中,上述测试配置文件为轻量级数据交换格式文件。
可选的,上述轻量级数据交换格式文件为JSON(JavaScript Object Notation,JavaScript对象表示法)文件。
其中,JSON是一种轻量级的数据交换格式。它采用完全独立于编程语言的文本格式来存储和表示数据。
可选的,在一些实施方式中,上述待测试接口数组中可以包括一个或多个测试接口,具体数量可以由测试配置文件中的配置信息确定。
在一些实施方式中,上述测试接口可以为数据库持久层接口。
在一些实施方式中,可以从指定的路径或资源中加载上述测试配置文件,并从该测试配置文件中解析出待测试接口对应的测试请求报文。
在一些实施方式中,可以将上述测试请求报文转换成JSON对象,之后在该JSON对象中获取待测试接口,并基于获取到的待测试接口,生成上述待测试接口数组。
在一些实施方式中,上述测试请求报文可以是测试配置文件中定义的用于Mapper层测试的数据配置。这些配置数据通常以字符串的形式存在,包含了用于测试的数据结构和内容。这些字符串通常会被解析为JSON对象,进而从中提取出测试所需的各种属性和值。
S102、遍历待测试接口数组中的测试接口,并确定当前遍历到的目标测试接口对应的测试方法数组。
可选的,在一些实施方式中,上述测试方法数组中包括至少一种测试方法。
在一些实施方式中,可以先获取目标测试接口的MapperEnabled属性,根据该MapperEnabled属性,确定目标测试接口是否有效。
可选的,上述MapperEnabled属性可以是一个配置选项,用于控制启用或禁用接口。例如,MapperEnabled属性可以是一个布尔值(true或false),用于控制是否应该使用特定的Mapper来执行数据库操作。如果MapperEnabled被设置为true,那么该上述Mapper将被激活并用于处理相关的数据库请求。如果它被设置为false,那么该Mapper将被禁用,并且相关的数据库操作可能不会被执行或者会抛出异常。
在一些实施方式中,若目标测试接口的MapperEnabled属性为false,则可以返回遍历待测试接口数组中的下一个测试接口;若目标测试接口的MapperEnabled属性为true,则可以继续执行以下步骤:
步骤a、获取第一属性参数,该第一属性参数包括待测试接口数组中的各个测试接口的公共入参字段。
在接口测试中,公共入参字段通常指的是那些在多个接口中都会被使用到的输入参数。这些字段对于接口的功能实现和测试都是至关重要的。
可选的,上述公共入参字段可以包括:
用户标识:如用户ID、用户名或邮箱等,用于标识请求来自哪个用户。
认证信息:如API密钥、访问令牌(Token)等,用于验证请求的合法性和权限。
分页参数:如页码(Page)、每页数量(PageSize)等,用于控制返回结果的分页显示。
时间戳:表示请求发起的时间,用于记录请求的时间信息或防止请求重放。
请求来源:标识请求的来源,如应用名称、版本号等,有助于追踪和定位问题。
在一些实施方式中,上述第一属性参数也可以称为TxCommonField属性参数。可选的,上述第一属性参数可以是一个字典或对象,其中包含了多个键值对,每个键代表一个公共入参字段的名称,对应的值则是该字段的值。
在一些实施方式中,上述第一属性参数也可以作为所有测试方法的公共报文。
步骤b、获取目标测试接口的第二属性参数,并根据上述第一属性参数与第二属性参数反射生成待测试实例。
在一些实施方式中,上述第二属性参数包括目标测试接口的全类名。
在一些实施方式中,上述第二属性参数也可以称为MapperClass属性参数,这个属性配置了待测试类的全路径名,即包含完整包路径的类名。
步骤c、基于上述待测试实例,确定测试方法数组。
S103、遍历测试方法数组中的测试方法,并为当前遍历到的目标测试方法建立独立事务。
在一些实施方式中,可以先初始化预设的事务管理器,该事务管理器用于创建、提交或回滚事务;之后遍历测试方法数组中的每个测试方法,并确定当前遍历到的目标测试方法是否有效。
在一些实施方式中,可以先获取目标测试方法的MethodEnabled属性,根据该MethodEnabled属性,确定目标测试方法是否有效。
可选的,上述MethodEnabled属性可以是一个配置选项,用于控制启用或禁用某个测试方法的行为。例如,MethodEnabled属性可以是一个布尔值(true或false),用于控制是否应该使用特定的测试方法来执行单元测试。如果MethodEnabled被设置为true,那么该上述测试方法将被激活并用于单元测试。如果它被设置为false,那么该测试方法将被禁用。
在一些实施方式中,若目标测试方法的MethodEnabled属性为false,则可以返回遍历测试方法数组中的下一个测试方法;若目标测试方法的MethodEnabled属性为true,则可以使用上述事务管理器为目标测试方法创建一个新的独立事务。
可以理解的是,为每个目标测试方法建立一个独立事务,可以确保测试过程的隔离性和准确性,确保每个测试方法都能在一个干净、独立的环境中执行,从而避免测试之间的相互影响。
S104、在上述独立事务的上下文中执行目标测试方法。
在一些实施方式中,在上述独立事务的上下文中执行当前遍历到的目标测试方法,包括了调用之前通过反射生成的待测试实例上的相应方法,并传入TxCommonField属性中定义的公共入参字段。
可以理解的是,由于每个测试方法都在其自己的独立事务中执行,由此可以确保测试之间的隔离性,即使一个测试方法失败,它也不会影响到其他测试方法的执行或结果。
本申请实施例所提供的接口测试方法,测试配置文件通过采用轻量级的数据交换格式文件,可以易于技术人员阅读和编写,同时也易于机器解析和生成,可以降低测试复杂度;同时,由于上述测试配置文件可以包含多个待测试接口的测试配置,由此可以对多个待测试接口进行批量化的测试,有利于进一步提升单元测试的效率;另外,各待测试方法拥有独立事务,不相互干扰,还能够确保测试之间的隔离性,提升测试结果的准确性。
基于上述实施例中描述的内容,在本申请一些实施例中,上述方法还包括:
在目标测试方法执行完成后,回滚上述独立事务,以撤销目标测试方法所执行的操作。
在一些实施方式中,在目标测试方法执行完成后,无论测试成功还是失败,都需要回滚事务,以撤销该目标测试方法所做的所有数据库操作。
在一些实施方式中,在目标测试方法执行完成后,继续遍历下一个目标测试方法,并重复上述步骤,直到测试方法数组中的所有测试方法都被遍历和处理完毕为止。
本申请实施例所提供的接口测试方法,可以使每个测试方法都在其自己的独立事务中执行,从而确保测试之间的隔离性,即使在一个测试方法失败时,也不会影响到其他测试方法的执行或结果。同时,使用事务管理器可以方便地控制事务的提交和回滚,确保测试的准确性和可靠性。
参照图2,图2为本申请实施例中提供的一种接口测试方法的流程图二。在一些实施例中,该接口测试方法包括:
S201、加载测试配置文件。
可选的,上述测试配置文件为JSON格式文件。
S202、获取测试请求报文。
可选的,上述测试请求报文可以是预先配置的待测试方法的公共请求报文。
在一些实施方式中,上述测试请求报文可以为配置字符串。
S203、将测试请求报文转换为轻量级数据交换格式的对象,并确定待测试接口数组。
可选的,上述轻量级数据交换格式的对象为JSON对象。
S204、遍历待测试接口数组,并确定是否结束循环?若是,则执行S214;若否,则继续执行S205。
S205、确定目标测试接口是否有效?若是,则继续执行S206;若否,则返回执行S204,遍历下一个测试接口。
S206、获取公共入参字段。
在一些实施方式中,上述公共入参字段可以作为所有测试方法的公共报文。
S207、获取目标测试接口的类全路径名,反射生成待测试实例。
S208、获取目标测试接口的测试方法数组。
S209、遍历测试方法数组,并确定是否结束循环?若是,则返回执行S204;若否,则继续执行S210。
S210、确定目标测试方法是否有效?若是,则继续执行S211;若否,则返回执行S209。
S211、建立独立事务。
S212、在独立事务的上下文中执行目标测试方法。
S213、在目标测试方法执行完成后,回滚独立事务。返回执行S209。
S214、汇总成功/失败案例数。
本申请提供的接口测试方法,可以通过配置接口的请求报文,即可真实执行SQL语句,以测试SQL语句的正确性;同时支持事务回滚,不会污染数据库,由此可以提升测试结果的准确性。
参照图3,图3为本申请实施例中提供的一种接口测试方法的子流程示意图。在一些实施例中,上述S212中描述的在独立事务的上下文中执行目标测试方法,包括:
S301、获取目标测试方法的入参字段,并基于入参字段与公共入参字段生成入参数据。
在一些实施例中,上述入参数据可以采用JSON格式。
S302、获取目标测试方法的第三属性参数数组。
在一些实施例中,上述第三属性参数数组中包括目标测试方法对应的入参类全类名。
S303、遍历第三属性参数数组,并根据入参数据生成入参实例集合。
在一些实施例中,可以遍历第三属性参数数组,并根据当前遍历到的入参类,以及上述入参数据,生成入参实例集合。
其中,入参实例集合是指在编程中,作为方法或函数输入参数传递的一组实例对象的集合。这个集合可以包含多个同类型的对象实例,它们通常被组织成一个数据结构,如列表(List)、集合(Set)或数组(Array),以便在方法调用时一次性传递多个实例。
S304、获取目标测试接口的测试方法名称属性,并反射生成目标测试方法对应的测试方法实例。
其中,测试方法实例是指在实际测试过程中,针对某个特定功能或模块所创建的具体的测试步骤和测试用例。这些实例通常包括输入参数、预期输出、执行条件以及测试环境的详细描述,以确保测试的一致性和可重复性。
S305、基于入参实例集合,执行测试方法实例。
S306、获取预期执行数据。
在一些实施例中,上述预期执行数据可以包括预期异常信息和/或预期返回数据。
S307、判断是否执行异常?若是,则继续执行S308;若否,则执行S309。
S308、判断产生的异常信息与预期异常信息是否匹配?若是,则确定执行成功;若否,则确定执行失败。
S309、判断返回数据与预期返回数据是否匹配?若是,则确定执行成功;若否,则确定执行失败。
在一些实施例中,上述预期返回数据可配置多种逻辑判断,也可支持数组、对象、字符串等多种类型的返回数据。
可选的,上述预期异常信息可以包括异常返回类型、错误码、错误描述等,本申请实施例中不做限制。
本申请提供的接口测试方法,一个测试配置文件可配置多个待测试类,一个待测试类可配置多个待测试方法,一个待测试方法支持多个且多种入参,且各待测试方法拥有独立事务,可以避免相互干扰,从而有助于提升测试结果的准确性。
图4为本申请实施例提供的接口测试装置的结构示意图。如图4所示,该接口测试装置包括:获取模块401、处理模块402、事务建立模块403和执行模块404。
其中,获取模块1101,用于获取测试配置文件,并根据所述测试配置文件确定待测试接口数组;所述测试配置文件为轻量级数据交换格式文件,所述待测试接口数组中包括至少一个测试接口。
处理模块402,用于遍历所述待测试接口数组中的测试接口,并根据所述测试配置文件确定当前遍历到的目标测试接口对应的测试方法数组;所述测试方法数组中包括至少一种测试方法.
事务建立模块403,用于遍历所述测试方法数组中的测试方法,并为当前遍历到的目标测试方法建立独立事务。
执行模块404,用于在所述独立事务的上下文中执行所述目标测试方法。
在一种可能的设计中,上述执行模块404,还用于:
在所述目标测试方法执行完成后,回滚所述独立事务,以撤销所述目标测试方法所执行的操作。
在一种可能的设计中,上述获取模块401,用于:
在所述测试配置文件中提取出待测试接口对应的测试请求报文;
将所述测试请求报文转换为轻量级数据交换格式的对象;
在所述轻量级数据交换格式的对象中获取待测试接口,并基于获取到的待测试接口,生成所述待测试接口数组。
在一种可能的设计中,上述处理模块402,用于:
确定所述目标测试接口是否有效;
在确定所述目标测试接口有效的情况下,基于所述测试配置文件获取第一属性参数,所述第一属性参数包括所述待测试接口数组中的各个测试接口的公共入参字段;
获取所述目标测试接口的第二属性参数,并根据所述第一属性参数与所述第二属性参数生成待测试实例,所述第二属性参数包括所述目标测试接口的全类名;
基于所述待测试实例,确定所述测试方法数组。
在一种可能的设计中,上述事务建立模块403,用于:
初始化预设的事务管理器;
遍历所述测试方法数组中的测试方法,并确定当前遍历到的目标测试方法是否有效;
在所述目标测试方法有效的情况下,使用所述事务管理器为所述目标测试方法创建新的独立事务。
在一种可能的设计中,上述执行模块404,用于:
获取所述目标测试方法的入参字段,并基于所述入参字段与所述公共入参字段生成入参数据;所述入参数据采用轻量级数据交换格式;
获取所述目标测试方法的第三属性参数数组;所述第三属性参数数组中包括所述目标测试方法对应的入参类全类名;
根据所述第三属性参数数组与所述入参数据,生成入参实例数组;
获取所述目标测试接口的测试方法名称属性,并生成所述目标测试方法对应的测试方法实例;
基于所述入参实例数组,执行所述测试方法实例。
在一种可能的设计中,上述装置还包括检测模块,用于:
获取所述目标测试方法预先配置的预期执行数据;所述预期执行数据包括预期异常信息和/或预期返回数据;
检测所述目标测试方法的执行过程是否存在异常;
在所述目标测试方法的执行过程存在异常,且产生的异常信息与所述预期异常信息匹配的情况下,或者在所述目标测试方法的执行过程不存在异常,且返回数据与所述预期返回数据匹配的情况下,确定所述目标测试方法执行成功。
本申请实施例提供的接口测试装置,可用于执行上述实施例中接口测试方法的技术方案,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。各模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上各模块的功能。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
图5为本申请实施例提供的一种电子设备的结构示意图。如图5所示,该电子设备可以包括:收发器501、处理器502、存储器503。
处理器502通过执行存储器存储的计算机执行指令,可以实现上述实施例中提供的接口测试方法。处理器502可以是通用处理器,包括中央处理器CPU、网络处理器(networkprocessor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器503通过系统总线与处理器502连接并完成相互间的通信,存储器503用于存储计算机执行指令。
收发器501可以用于获取待运行任务和待运行任务的配置信息。
系统总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。收发器用于实现数据库访问装置与其他计算机(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(randomaccess memory,RAM),也可能还包括非易失性存储器(non-volatile memory)。
本申请实施例还提供一种运行指令的芯片,该芯片用于执行上述实施例中描述的接口测试方法的技术方案。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述实施例中描述的接口测试方法的技术方案。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,其存储在计算机可读存储介质中,至少一个处理器可以从计算机可读存储介质读取计算机程序,至少一个处理器执行计算机程序时可实现上述实施例中描述的接口测试方法的技术方案。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电控单元或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (11)

1.一种接口测试方法,其特征在于,包括:
获取测试配置文件,并根据所述测试配置文件确定待测试接口数组;所述测试配置文件为轻量级数据交换格式文件,所述待测试接口数组中包括至少一个测试接口;
遍历所述待测试接口数组中的测试接口,并根据所述测试配置文件确定当前遍历到的目标测试接口对应的测试方法数组;所述测试方法数组中包括至少一种测试方法;
遍历所述测试方法数组中的测试方法,并为当前遍历到的目标测试方法建立独立事务;
在所述独立事务的上下文中执行所述目标测试方法。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述目标测试方法执行完成后,回滚所述独立事务,以撤销所述目标测试方法所执行的操作。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述测试配置文件确定待测试接口数组,包括:
在所述测试配置文件中提取出待测试接口对应的测试请求报文;
将所述测试请求报文转换为轻量级数据交换格式的对象;
在所述轻量级数据交换格式的对象中获取待测试接口,并基于获取到的待测试接口,生成所述待测试接口数组。
4.根据权利要求1或2所述的方法,其特征在于,所述根据所述测试配置文件确定当前遍历到的目标测试接口对应的测试方法数组,包括:
确定所述目标测试接口是否有效;
在确定所述目标测试接口有效的情况下,基于所述测试配置文件获取第一属性参数,所述第一属性参数包括所述待测试接口数组中的各个测试接口的公共入参字段;
获取所述目标测试接口的第二属性参数,并根据所述第一属性参数与所述第二属性参数生成待测试实例,所述第二属性参数包括所述目标测试接口的全类名;
基于所述待测试实例,确定所述测试方法数组。
5.根据权利要求1或2所述的方法,其特征在于,所述遍历所述测试方法数组中的测试方法,并为当前遍历到的目标测试方法建立独立事务,包括:
初始化预设的事务管理器;
遍历所述测试方法数组中的测试方法,并确定当前遍历到的目标测试方法是否有效;
在所述目标测试方法有效的情况下,使用所述事务管理器为所述目标测试方法创建新的独立事务。
6.根据权利要求4所述的方法,其特征在于,所述在所述独立事务的上下文中执行所述目标测试方法,包括:
获取所述目标测试方法的入参字段,并基于所述入参字段与所述公共入参字段生成入参数据;所述入参数据采用轻量级数据交换格式;
获取所述目标测试方法的第三属性参数数组;所述第三属性参数数组中包括所述目标测试方法对应的入参类全类名;
根据所述第三属性参数数组与所述入参数据,生成入参实例数组;
获取所述目标测试接口的测试方法名称属性,并生成所述目标测试方法对应的测试方法实例;
基于所述入参实例数组,执行所述测试方法实例。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
获取所述目标测试方法预先配置的预期执行数据;所述预期执行数据包括预期异常信息和/或预期返回数据;
检测所述目标测试方法的执行过程是否存在异常;
在所述目标测试方法的执行过程存在异常,且产生的异常信息与所述预期异常信息匹配的情况下,或者在所述目标测试方法的执行过程不存在异常,且返回数据与所述预期返回数据匹配的情况下,确定所述目标测试方法执行成功。
8.一种接口测试装置,其特征在于,包括:
获取模块,用于获取测试配置文件,并根据所述测试配置文件确定待测试接口数组;所述测试配置文件为轻量级数据交换格式文件,所述待测试接口数组中包括至少一个测试接口;
处理模块,用于遍历所述待测试接口数组中的测试接口,并根据所述测试配置文件确定当前遍历到的目标测试接口对应的测试方法数组;所述测试方法数组中包括至少一种测试方法;
事务建立模块,用于遍历所述测试方法数组中的测试方法,并为当前遍历到的目标测试方法建立独立事务;
执行模块,用于在所述独立事务的上下文中执行所述目标测试方法。
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至7中任一项所述的接口测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7中任一项所述的接口测试方法。
11.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现如权利要求1至7中任一项所述的接口测试方法。
CN202410369423.4A 2024-03-28 2024-03-28 接口测试方法、装置、电子设备及计算机可读存储介质 Pending CN118152293A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410369423.4A CN118152293A (zh) 2024-03-28 2024-03-28 接口测试方法、装置、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410369423.4A CN118152293A (zh) 2024-03-28 2024-03-28 接口测试方法、装置、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN118152293A true CN118152293A (zh) 2024-06-07

Family

ID=91298310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410369423.4A Pending CN118152293A (zh) 2024-03-28 2024-03-28 接口测试方法、装置、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN118152293A (zh)

Similar Documents

Publication Publication Date Title
US7475387B2 (en) Problem determination using system run-time behavior analysis
EP2936315B1 (en) On-the-fly technical support
CN108763076A (zh) 一种软件自动测试方法、装置、设备及介质
US6185583B1 (en) Parallel rule-based processing of forms
CN109783346B (zh) 基于关键字驱动的自动化测试方法、装置及终端设备
CN110474900B (zh) 一种游戏协议测试方法及装置
WO2012052215A1 (en) Software development
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
CN110688111A (zh) 业务流程的配置方法、装置、服务器和存储介质
CN117632710A (zh) 测试代码的生成方法、装置、设备及存储介质
CN115080433A (zh) 基于流量回放的测试方法及装置
US10042743B2 (en) Computer system testing
CN111767213B (zh) 数据库检查点的测试方法、装置、电子设备及存储介质
CN116467975B (zh) 数据处理方法、装置、电子设备及存储介质
US11176022B2 (en) Health diagnostics and analytics for object repositories
CN118152293A (zh) 接口测试方法、装置、电子设备及计算机可读存储介质
CN113238940B (zh) 一种接口测试结果的比对方法、装置、设备和存储介质
CN114637689A (zh) 应用评估方法、装置、设备及存储介质
CN111858307B (zh) 模糊测试方法和设备
CN113672512A (zh) 代码检查规则生成方法、代码检查方法、装置、介质
CN111428238A (zh) 一种基于安卓组件拒绝服务测试方法、检测终端及介质
CN117688564B (zh) 一种用于智能合约事件日志的检测方法、装置和存储介质
CN115640236B (zh) 一种脚本质量的检测方法及计算设备
CN117667046B (zh) 命令解析方法、装置、电子设备、存储介质及程序产品
CN112364040B (zh) 一种数据的校对方法、装置、介质及电子设备

Legal Events

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