CN113342679A - 接口测试方法及测试装置 - Google Patents

接口测试方法及测试装置 Download PDF

Info

Publication number
CN113342679A
CN113342679A CN202110726729.7A CN202110726729A CN113342679A CN 113342679 A CN113342679 A CN 113342679A CN 202110726729 A CN202110726729 A CN 202110726729A CN 113342679 A CN113342679 A CN 113342679A
Authority
CN
China
Prior art keywords
interface
test
case
information
script
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
CN202110726729.7A
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 Pnr Co ltd
Original Assignee
China Pnr 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 Pnr Co ltd filed Critical China Pnr Co ltd
Priority to CN202110726729.7A priority Critical patent/CN113342679A/zh
Publication of CN113342679A publication Critical patent/CN113342679A/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

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

Abstract

本发明揭示了一种接口测试方法,包括:接口信息获取步骤,获取待测试接口的接口信息并保存。脚本生成步骤,基于接口信息和测试要求,自动生成测试脚本。用例生成步骤,基于接口信息、用例规则和期望结果,自动生成数个测试用例,测试运行步骤,获取经配置的测试条件,在测试条件满足时,调用并执行测试脚本和测试用例,对待测试接口进行测试,并记录测试结果,其中测试运行步骤是在分布式架构上运行,测试脚本和测试用例以基于负载均衡的算法被分配到分布式架构上的目标节点。本发明还揭示了一种接口测试装置,包括接口信息获取组件、脚本生成组件、用例生成组件和测试运行组件。

Description

接口测试方法及测试装置
技术领域
本发明涉及软件技术领域,更具体地说,涉及频繁交付的软件的测试技术。
背景技术
随着分布式架构和微部署方式的兴起,软件面临频繁的升级部署和版本更新。对于需要频繁交付、更新和部署的软件,需要开发人员、技术运营人员和质量保障人员三者更好的配合。软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。针对这种需求,DevOps成为炙手可热的技术。DevOps(Development和Operations的组合词)是一组过程、方法与***的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。DevOps它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作模式。通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。DevOps可以认为是开发(应用程序/软件工程)、技术运营和质量保障(QA)三者的交集。
传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而却需要极其紧密的多部门协作。
例如在传统的接口测试项目中,需要手动编写测试脚本和测试用例,然后运行测试脚本来执行测试用例,得到测试结果。在这个过程中,涉及到多种不同的工作,测试脚本的编写时代码编写,通常开发人员有编写代码的能力,但运营和保障人员一般并不懂代码编写。测试用例的编写需要对实际的运行环境有很深的理解,运营人员能够编写测试用例,但开发人员未必了解运行环境,所以对测试用例的编写并不精通。最后测试结果的解析和评价时保障人员的专长。于是,在现有技术中,一个接口测试项目需要三类不同人员的密切配合和协作才能实现,同时具备三种能力的人员由于门槛过高而极为稀少,所以需要安排多部门的协作。多部门的协作不可避免地会存在沟通协调的问题,因此会增加项目的成本、延长测试的周期,与快节奏、高速迭代、高质量稳定交付的需求有所不符。
发明内容
本发明提出一种能自动生成脚本、自动生成测试用例并按照设置条件自动运行的接口测试技术。
根据本发明的一实施例,提出一种接口测试方法,包括下述的步骤:
接口信息获取步骤,获取待测试接口的接口信息并保存;
脚本生成步骤,基于接口信息和测试要求,自动生成测试脚本;
用例生成步骤,基于接口信息、用例规则和期望结果,自动生成数个测试用例;
测试运行步骤,获取经配置的测试条件,在测试条件满足时,调用并执行所述测试脚本和测试用例,对待测试接口进行测试,并记录测试结果,其中所述测试运行步骤是在分布式架构上运行,测试脚本和测试用例以基于负载均衡的算法被分配到分布式架构上的目标节点。
在一个实施例中,接口信息包括接口基本信息和接口参数信息,接口信息获取步骤中,为待测试接口生成接口文档,并将该待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中。
在一个实施例中,接口基本信息包括:接口名称、接口请求类型、接口地址、重试次数、超时时间、可选的异步请求和返回数据,接口基本信息以方法级注解的形式记载在接口的源代码中。接口参数信息包括:参数名称、参数类型、是否必填、参数结构路径、数据类型、参数特殊属性,接口参数信息以参数级注解的形式记载在接口的源代码中。
在一个实施例中,将待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中的步骤中包括同名区分处理,同名区分处理包括:对于不同的程序项目,为每个项目的不同包路径和相同包路径中的各个接口添加全局唯一标识命名以区分不同项目中的同名接口。对于复杂的嵌套接口参数,存储参数间的父子级关系,通过父子级关系,能够在后续的用例生成步骤中,在生成测试用例时更加快速准确地定位到指定接口参数。设置标记区分接口请求数据和返回数据的类型用以区分请求数据和返回数据中的参数同名的情况。
在一个实施例中,生成测试脚本时考虑的测试要求包括:输入数据的随机生成规则、用以在不同测试或者生产环境下运行脚本的多环境配置信息、查询获取用例数据库中存储的测试用例的用例数据库配置信息、定义输入数据的数据生成规则、在请求发送时根据数据生成规则生成相应的请求数据替换脚本中占位符、返回数据的正则提取、返回数据和预期数据的匹配。
在一个实施例中,可在使用时添加定制脚本特性,定制脚本特性包括请求报文或者请求数据、响应数据的加解密、脚本运行的前置依赖脚本优先运行、前置数据清理和后置数据恢复、请求redis数据添加。
在一个实施例中,用例生成步骤中,根据用例规则调用对应的用例规则引擎,获取待测试接口的接口基本信息和接口参数信息,根据所述接口基本信息和接口参数信息运行用例规则引擎,产生数个满足期望结果的测试数据,所述数个测试数据为测试用例。
在一个实施例中,每一测试用例被赋予全局唯一的测试用例编号并被保存在用例数据库中。
在一个实施例中,经配置的测试条件包括:脚本路径、用例路径、运行环境、运行周期时间和反馈路径。在测试条件满足时,调用测试脚本和测试用例,基于负载均衡算法在分布式架构上寻找合适的目标节点来执行测试脚本和测试用例,测试结果生成测试报告并依据反馈路径进行反馈。
在一个实施例中,所述测试报告包括:项目接口数、成功用例数、失败用例数以及用例执行的详细结果、成功失败步骤数和具体的用例步骤展示。
根据本发明的一实施例,提出一种接口测试装置,包括:
接口信息获取组件,接口信息获取组件获取待测试接口的接口信息并保存;
脚本生成组件,脚本生成组件基于接口信息和测试要求,自动生成测试脚本;
用例生成组件,用例生成组件基于接口信息、用例规则和期望结果,自动生成数个测试用例;
测试运行组件,测试运行组件以分布式架构部署,测试运行组件获取经配置的测试条件,在测试条件满足时,调用所述测试脚本和测试用例,以基于负载均衡的算法将测试脚本和测试用例分配到分布式架构上的目标节点,目标节点执行测试脚本和测试用例,并记录测试结果。
在一个实施例中,接口信息包括接口基本信息和接口参数信息,接口信息获取组件包括接口文档生成模块和接口信息保存模块,接口文档生成模块为待测试接口生成接口文档,接口信息存储模块将该待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中。
在一个实施例中,接口基本信息包括:接口名称、接口请求类型、接口地址、重试次数、超时时间、可选的异步请求和返回数据,接口基本信息以方法级注解的形式记载在接口的源代码中。接口参数信息包括:参数名称、参数类型、是否必填、参数结构路径、数据类型、参数特殊属性,接口参数信息以参数级注解的形式记载在接口的源代码中。
在一个实施例中,接口信息存储模块在将待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中时包括同名区分处理,同名区分处理包括:对于不同的程序项目,为每个项目的不同包路径和相同包路径中的各个接口添加全局唯一标识命名以区分不同项目中的同名接口。对于复杂的嵌套接口参数,存储参数间的父子级关系,通过父子级关系,能够在后续的用例生成步骤中,在生成测试用例时更加快速准确地定位到指定接口参数。设置标记区分接口请求数据和返回数据的类型用以区分请求数据和返回数据中的参数同名的情况。
在一个实施例中,脚本生成组件在生成测试脚本时考虑的测试要求包括:输入数据的随机生成规则、用以在不同测试或者生产环境下运行脚本的多环境配置信息、查询获取用例数据库中存储的测试用例的用例数据库配置信息、定义输入数据的数据生成规则、在请求发送时根据数据生成规则生成相应的请求数据替换脚本中占位符、返回数据的正则提取、返回数据和预期数据的匹配。
在一个实施例中,脚本生成组件可在使用时添加定制脚本特性,定制脚本特性包括请求报文或者请求数据、响应数据的加解密、脚本运行的前置依赖脚本优先运行、前置数据清理和后置数据恢复、请求redis数据添加。
在一个实施例中,用例生成组件包括用例规则引擎库、用例生成引擎和用例数据库,用例生成引擎根据用例规则从用例规则引擎库中调用对应的用例规则引擎,并获取待测试接口的接口基本信息和接口参数信息,用例生成引擎根据接口基本信息和接口参数信息运行所调用的用例规则引擎,产生数个满足期望结果的测试数据,所述数个测试数据为测试用例,数个测试用例被保存在用例数据库中。
在一个实施例中,每一测试用例被赋予全局唯一的测试用例编号。
在一个实施例中,测试运行组件包括测试条件配置模块、调度模块、以分布式架构部署的数个执行节点和反馈模块。测试条件配置模块配置的测试条件包括:脚本路径、用例路径、运行环境、运行周期时间和反馈路径。在测试条件满足时,调度模块调用测试脚本和测试用例,基于负载均衡算法在分布式架构上寻找合适的执行节点作为目标节点,将测试脚本和测试用例发送给目标节点。目标节点执行测试脚本和测试用例,测试结果发送给反馈模块。反馈模块生成测试报告并依据反馈路径进行反馈。
在一个实施例中,所述测试报告包括:项目接口数、成功用例数、失败用例数以及用例执行的详细结果、成功失败步骤数和具体的用例步骤展示。
本发明的接口测试方法和接口测试装置能够自动生成针对待测试接口的测试脚本和测试用例,并且按照设定的测试条件自动运行。本发明的自动生成脚本和测试用例的功能有助于降低开发人员的门槛,不精通测试脚本和测试用例设计的人员也可以进行接口测试。该接口测试方法和接口测试装置部署在分布式架构上,能够以负载均衡的方式运行,具有更高的执行效率。测试数据表明,以分布式架构部署的测试装置的执行效率比单节点部署高400%以上。接口测试项目的整体用时能够节省30%以上。
附图说明
图1揭示了根据本发明的一实施例的接口测试方法的流程图。
图2揭示了根据本发明的一实施例的接口测试装置的结构框图。
具体实施方式
参考图1所示,图1揭示了根据本发明的一实施例的接口测试方法的流程图。该接口测试方法包括如下的步骤:
S101、接口信息获取步骤。在接口信息获取步骤S101中,获取待测试接口的接口信息并保存。在一个实施例中,接口信息包括接口基本信息和接口参数信息。在接口信息获取步骤S101中,首先为待测试接口生成接口文档,然后再将该待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中。在一个实施例中,接口基本信息包括:接口名称、接口请求类型、接口地址、重试次数、超时时间、可选的异步请求和返回数据。接口基本信息以方法级注解的形式记载在接口的源代码中。接口参数信息包括:参数名称、参数类型、是否必填、参数结构路径、数据类型、参数特殊属性。接口参数信息以参数级注解的形式记载在接口的源代码中。在待测试接口的源代码中,会对待测试接口添加相应的注解,注解有两种方式,包括方法级注解和参数级注解。方法级注解主要针对接口基本信息,包括但不限于接口名称、接口请求类型、接口地址、重试次数、超时时间、可选的异步请求和返回数据。参数级注解主要针对接口参数信息,包括但不限于参数名称、参数类型、是否必填、参数结构路径、数据类型、参数特殊属性。其中参数特殊属性是设置该接口参数生成自动化脚本的时候需要替换入参占位符的随机值生成规则。在执行该接口测试方法时,对代码进行编译时会触发插件扫描所有添加了注解的接口,获取接口基本信息和接口参数信息。
首先为每一个接口生成接口文档并保存接口文档,在接口信息变更时,会触发修改相应的接口文档。各个接口的接口文档按照不同应用、不同环境对接口文档进行归类。接口文档中记载的信息分为两个部分,接口基本信息描述和接口参数信息描述。然后将待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中。在实际的使用环境中,可能会在不同的程序项目中使用同名接口或者同名参数,在进行接口基本信息和接口参数信息保存时,需要进行同名区分处理,以区分同名接口或者同名参数。在一个实施例中,同名区分处理包括:对于不同的程序项目,为每个项目的不同包路径和相同包路径中的各个接口添加全局唯一标识命名以区分不同项目中的同名接口。对于复杂的嵌套接口参数,存储参数间的父子级关系,通过父子级关系,能够在后续的用例生成步骤中,在生成测试用例时更加快速准确地定位到指定接口参数。设置标记区分接口请求数据和返回数据的类型用以区分请求数据和返回数据中的参数同名的情况。
S102、脚本生成步骤。在脚本生成步骤S102中,基于接口信息和测试要求,自动生成测试脚本。在一个实施例中,生成测试脚本时考虑的测试要求包括:输入数据的随机生成规则、用以在不同测试或者生产环境下运行脚本的多环境配置信息、查询获取用例数据库中存储的测试用例的用例数据库配置信息、定义输入数据的数据生成规则、在请求发送时根据数据生成规则生成相应的请求数据替换脚本中占位符、返回数据的正则提取、返回数据和预期数据的匹配。
下面举一个自动生成脚本的示例:
功能名称:bindpes&添加个人银行卡.jmx
场景:测试计划
获取环境配置信息,读取环境配置文件environment.jmx测试服务器IP和端口_公用步骤;
获取数据库配置信息,读取数据库配置文件db.jmx中数据库连接地址、用户名和密码_公用步骤;
获取循环控制器循环次数,循环遍历数据库中待执行测试用例数totalNum为“5”次和待执行测试用例的请求数据和预期数据_公用步骤;
执行输入数据自定义规则生成赋值jmeter请求数据变量${I_requestSeqId}为“ST202101134”_公用步骤;
执行接口请求,替换请求中变量名称为变量值,请求包含请求服务器IP地址和端口号、请求接口路径、方法名和请求数据等_公用步骤;
正则提取相应数据结果R_respCode返回码为“000”返回成功,与预期数据${E_respCode}值相等,则用例运行成功_公用步骤;
其中,当totalNum大于1时,循环执行上述3个步骤,直到所有用例执行完成。
在一个实施例中,可在使用时添加定制脚本特性,定制脚本特性包括请求报文或者请求数据、响应数据的加解密、脚本运行的前置依赖脚本优先运行、前置数据清理和后置数据恢复、请求redis数据添加。每一个接口请求都可以根据需求选择添加需要的定制组件,极大的满足了不同接口的定制化需求。
S103、用例生成步骤,基于接口信息、用例规则和期望结果,自动生成数个测试用例。在一个实施例中,用例生成步骤中S103中,根据用例规则调用对应的用例规则引擎,获取待测试接口的接口基本信息和接口参数信息,根据接口基本信息和接口参数信息运行用例规则引擎,产生数个满足期望结果的测试数据,该数个测试数据即为测试用例。在一个实施例中,每一测试用例被赋予全局唯一的测试用例编号并被保存在用例数据库中。
生成测试用例的示例如下:
比如对于请求数据的长度这个参数,生成长度校验用例。长度校验用例可以是定长用例或者可变长度用例。定长用例,例如请求数据的长度为8,生成三个测试用例,长度分别为7、8、9。其中长度为8的是满足要求的测试用例(成功用例),长度为7和9的是不满足要求的测试用例(失败用例)。可变长度用例,例如请求数据的长度为[3,12],生成六个测试用例,长度分别为2、3、4、11、12、13。其中长度为3、4、11、12的是满足要求的测试用例(成功用例),长度为2和13的是不满足要求的测试用例(失败用例)。比如对于请求数据必填项参数,生成请求数据必填项校验用例。测试用例包括字段为空和非空的用例。比如对于参数类型,生成参数枚举值类型测试用例。包括在枚举值范围的数据和不在枚举值范围内数据的用例。比如字段特殊字符校验用例,会生成特殊格式比如时间格式、数字格式等的正向校验和反向校验等测试用例。总之,针对某一个指定的参数的测试需求,会生成足够数量的测试用例,测试用例中的一部分是满足测试要求的用例(成功用例),另一部分是不满足测试要求的用例(失败用例)。
如前面所描述的,测试用例时根据接口基本信息和接口参数信息运行用例规则引擎而生成,规则引擎可以从规则引擎库中调用。根据测试规则选择调用合适的规则引擎,在一个实施例中,用户还可以根据专业知识添加定制的规则引擎。规则引擎的示例如下:比如对于固定值10的测试,生成输入数据为10和非10的用例,随机日期、时间、随机数、***、邮箱、身份证、手机号对应的用例和上述随机用例,依赖其他数据的生成值,依赖的输入数据和非依赖数据数据,以上三种自定义固定值、随机值、依赖其他输入数据可选择0个或者多个使用。对于需要加密处理的数据,还可以调用加密规则引擎,比如加密机2.0、MD5加密、3DES、SHA256、AES、FileBase64等加密规则,生成对应加密数据用例和非加密数据用例。对于接口间有调用关系且依赖数据传递的测试,还提供依赖脚本的设置,依赖脚本优先运行,返回的参数值传递为该脚本的输入数据。规则引擎调用并设置好之后,根据接口信息、输入数据个数、规则引擎数和预期数据结果数排列组合生成对应的数个测试用例。每一测试用例被赋予全局唯一的测试用例编号并被保存在mysql格式的用例数据库中。
S104、测试运行步骤,获取经配置的测试条件,在测试条件满足时,调用并执行测试脚本和测试用例,对待测试接口进行测试,并记录测试结果。其中测试运行步骤是在分布式架构上运行,测试脚本和测试用例以基于负载均衡的算法被分配到分布式架构上的目标节点。在一个实施例中,经配置的测试条件包括:脚本路径、用例路径、运行环境、运行周期时间和反馈路径。在测试条件满足时,自动执行测试。测试执行时调用测试脚本和测试用例,基于负载均衡算法在分布式架构上寻找合适的目标节点来执行测试脚本和测试用例,测试结果生成测试报告并依据反馈路径进行反馈。在一个实施例中,测试报告包括:项目接口数、成功用例数、失败用例数以及用例执行的详细结果、成功失败步骤数和具体的用例步骤展示。
测试的自动运行也可以理解为是脚本定时运行,设置项目脚本路径、用例路径、运行环境、运行周期时间和反馈路径(即需要通知的负责人)。项目设置后发送定时任务。测试的执行节点采用分布式架构部署,任务运行时读取项目脚本配置和测试用例发送给脚本调度机,调度机通过负载均衡算法唤起目标执行机运行脚本。执行机调用执行脚本文件并写入脚本执行步骤到mongoDB,执行结果写入到mysql数据库中。当脚本执行完成后脚本执行结果被写入到数据库中。从数据库中提取数据可发送到前端服务器,供运行配置中相关负责人及时审查。测试报告中还包括测试的具体细节:项目接口数、成功用例数、失败用例数以及用例执行的详细结果、成功失败步骤数和具体的用例步骤展示,提供更加清晰明了的报告返回给用户。
图2揭示了根据本发明的一实施例的接口测试装置的结构框图。该接口测试装置是与前述的接口测试方法相对应的,该接口测试装置通常是由软件实现,运行该接口测试装置,即会执行前述的接口测试方法。如图所示,该接口测试装置,包括:接口信息获取组件201、脚本生成组件202、用例生成组件203和测试运行组件204。
接口信息获取组件201获取待测试接口的接口信息并保存。在一个实施例中,接口信息包括接口基本信息和接口参数信息。接口基本信息包括:接口名称、接口请求类型、接口地址、重试次数、超时时间、可选的异步请求和返回数据,接口基本信息以方法级注解的形式记载在接口的源代码中。接口参数信息包括:参数名称、参数类型、是否必填、参数结构路径、数据类型、参数特殊属性,接口参数信息以参数级注解的形式记载在接口的源代码中。接口信息获取组件201包括接口文档生成模块211和接口信息保存模块212。接口文档生成模块211为待测试接口生成接口文档,接口信息存储模块212将该待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中。在一个实施例中,接口信息存储模块212将待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中时包括同名区分处理,同名区分处理包括:对于不同的程序项目,为每个项目的不同包路径和相同包路径中的各个接口添加全局唯一标识命名以区分不同项目中的同名接口。对于复杂的嵌套接口参数,存储参数间的父子级关系,通过父子级关系,能够在后续的用例生成步骤中,在生成测试用例时更加快速准确地定位到指定接口参数。设置标记区分接口请求数据和返回数据的类型用以区分请求数据和返回数据中的参数同名的情况。
脚本生成组件202基于接口信息和测试要求,自动生成测试脚本。在一个实施例中,脚本生成组件202生成测试脚本时考虑的测试要求包括:输入数据的随机生成规则、用以在不同测试或者生产环境下运行脚本的多环境配置信息、查询获取用例数据库中存储的测试用例的用例数据库配置信息、定义输入数据的数据生成规则、在请求发送时根据数据生成规则生成相应的请求数据替换脚本中占位符、返回数据的正则提取、返回数据和预期数据的匹配。在一个实施例中,脚本生成组件202还允许在使用时添加定制脚本特性,定制脚本特性包括请求报文或者请求数据、响应数据的加解密、脚本运行的前置依赖脚本优先运行、前置数据清理和后置数据恢复、请求redis数据添加。
用例生成组件203基于接口信息、用例规则和期望结果,自动生成数个测试用例。在一个实施例中,用例生成组件203包括用例规则引擎库231、用例生成引擎232和用例数据库233。用例生成引擎232根据用例规则从用例规则引擎库231中调用对应的用例规则引擎,并获取待测试接口的接口基本信息和接口参数信息,用例生成引擎232根据接口基本信息和接口参数信息运行所调用的用例规则引擎,产生数个满足期望结果的测试数据,数个测试数据为测试用例,数个测试用例被保存在用例数据库233中。在一个实施例中,每一测试用例被赋予全局唯一的测试用例编号。
测试运行组件204以分布式架构部署,测试运行组件获取经配置的测试条件,在测试条件满足时,调用测试脚本和测试用例,以基于负载均衡的算法将测试脚本和测试用例分配到分布式架构上的目标节点,目标节点执行测试脚本和测试用例,并记录测试结果。在一个实施例中,测试运行组件204包括测试条件配置模块241、调度模块242、以分布式架构部署的数个执行节点243和反馈模块244。测试条件配置模块241配置的测试条件包括:脚本路径、用例路径、运行环境、运行周期时间和反馈路径。在测试条件满足时,调度模块242调用测试脚本和测试用例,基于负载均衡算法在分布式架构上寻找合适的执行节点243作为目标节点,将测试脚本和测试用例发送给目标节点243。目标节点243执行测试脚本和测试用例,测试结果发送给反馈模块244。反馈模块244生成测试报告并依据反馈路径进行反馈。在一个实施例中,反馈模块244生成的测试报告包括:项目接口数、成功用例数、失败用例数以及用例执行的详细结果、成功失败步骤数和具体的用例步骤展示。
接口测试装置的具体实现细节与前述的接口测试方法对应,所以具体细节此处不再重复描述。
本发明的接口测试方法和接口测试装置具备如下的优势:
目标代码库部署时同步接口信息,自动生成脚本。无需测试人员设计脚本的代码能力,降低脚本设计时间的成本。通过接口信息输入与测试专业知识转化的规则引擎,智能生成测试用例。帮助测试人员缩短设计用例的时间、杜绝测试用例点的遗漏;降低了开发人员设计测试用例的门槛,解决了开发人员不懂设计测试用例的问题,为角色互换奠定了基础。本发明无需使用者输入接口信息、请求方式、参数类型等,与目标代码库接口描述文件同步接口相关信息自动生成脚本;接口信息变更会同步更新脚本,保证脚本的正确性、完整性。本发明基于接口信息,包括不限于使用了测试方法等价类、边界值、错误推测等转化成规则引擎,自动生成全测试点的参数用例。
本发明支持参数、报文两种维度多种加解密方式,比如3DES、MD5、SHA256、CFCA、AES、FILEBASE64等。本发明提供数据库数据断言模型,支持多种数据库多表校验,比如MYSQL、ORACLE、SQL Service、REDIS、MangoDB等。本发明支持版本发布持续集成,每次发布调用脚本自动化测试,自动生成测试报告。本发明支持定时批量调度,使用分布式架构部署,多节点执行机并行执行任务,缩减回归测试的时间,跟单节点部署相比执行效率提升400%以上。
本发明的接口测试方法和接口测试装置能够自动生成针对待测试接口的测试脚本和测试用例,并且按照设定的测试条件自动运行。本发明的自动生成脚本和测试用例的功能有助于降低开发人员的门槛,不精通测试脚本和测试用例设计的人员也可以进行接口测试。该接口测试方法和接口测试装置部署在分布式架构上,能够以负载均衡的方式运行,具有更高的执行效率。测试数据表明,以分布式架构部署的测试装置的执行效率比单节点部署高400%以上。接口测试项目的整体用时能够节省30%以上。
还需要注意的是,以上所列举的实施例仅为本发明的具体实施例。显然本发明不局限于以上实施例,随之做出的类似变化或变形是本领域技术人员能从本发明公开的内容直接得出或者很容易便联想到的,均应属于本发明的保护范围。上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的,熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。

Claims (10)

1.一种接口测试方法,其特征在于,包括:
接口信息获取步骤,获取待测试接口的接口信息并保存;
脚本生成步骤,基于接口信息和测试要求,自动生成测试脚本;
用例生成步骤,基于接口信息、用例规则和期望结果,自动生成数个测试用例;
测试运行步骤,获取经配置的测试条件,在测试条件满足时,调用并执行所述测试脚本和测试用例,对待测试接口进行测试,并记录测试结果,其中所述测试运行步骤是在分布式架构上运行,测试脚本和测试用例以基于负载均衡的算法被分配到分布式架构上的目标节点。
2.如权利要求1所述的接口测试方法,其特征在于,所述接口信息包括接口基本信息和接口参数信息,所述接口信息获取步骤中,为待测试接口生成接口文档,并将该待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中。
3.如权利要求2所述的接口测试方法,其特征在于,
所述接口基本信息包括:接口名称、接口请求类型、接口地址、重试次数、超时时间、可选的异步请求和返回数据,接口基本信息以方法级注解的形式记载在接口的源代码中;
所述接口参数信息包括:参数名称、参数类型、是否必填、参数结构路径、数据类型、参数特殊属性,接口参数信息以参数级注解的形式记载在接口的源代码中。
4.如权利要求3所述的接口测试方法,其特征在于,所述用例生成步骤中,根据用例规则调用对应的用例规则引擎,获取待测试接口的接口基本信息和接口参数信息,根据所述接口基本信息和接口参数信息运行用例规则引擎,产生数个满足期望结果的测试数据,所述数个测试数据为测试用例。
5.如权利要求1所述的接口测试方法,其特征在于,所述经配置的测试条件包括:脚本路径、用例路径、运行环境、运行周期时间和反馈路径;
在测试条件满足时,调用测试脚本和测试用例,基于负载均衡算法在分布式架构上寻找合适的目标节点来执行测试脚本和测试用例,测试结果生成测试报告并依据反馈路径进行反馈。
6.一种接口测试装置,其特征在于,包括:
接口信息获取组件,接口信息获取组件获取待测试接口的接口信息并保存;
脚本生成组件,脚本生成组件基于接口信息和测试要求,自动生成测试脚本;
用例生成组件,用例生成组件基于接口信息、用例规则和期望结果,自动生成数个测试用例;
测试运行组件,测试运行组件以分布式架构部署,测试运行组件获取经配置的测试条件,在测试条件满足时,调用所述测试脚本和测试用例,以基于负载均衡的算法将测试脚本和测试用例分配到分布式架构上的目标节点,目标节点执行测试脚本和测试用例,并记录测试结果。
7.如权利要求6所述的接口测试装置,其特征在于,所述接口信息包括接口基本信息和接口参数信息,所述接口信息获取组件包括接口文档生成模块和接口信息保存模块,接口文档生成模块为待测试接口生成接口文档,接口信息存储模块将该待测试接口的接口基本信息和接口参数信息保存到对应的接口文档中。
8.如权利要求7所述的接口测试装置,其特征在于,
所述接口基本信息包括:接口名称、接口请求类型、接口地址、重试次数、超时时间、可选的异步请求和返回数据,接口基本信息以方法级注解的形式记载在接口的源代码中;
所述接口参数信息包括:参数名称、参数类型、是否必填、参数结构路径、数据类型、参数特殊属性,接口参数信息以参数级注解的形式记载在接口的源代码中。
9.如权利要求8所述的接口测试装置,其特征在于,所述用例生成组件包括用例规则引擎库、用例生成引擎和用例数据库,用例生成引擎根据用例规则从用例规则引擎库中调用对应的用例规则引擎,并获取待测试接口的接口基本信息和接口参数信息,用例生成引擎根据接口基本信息和接口参数信息运行所调用的用例规则引擎,产生数个满足期望结果的测试数据,所述数个测试数据为测试用例,数个测试用例被保存在用例数据库中。
10.如权利要求6所述的接口测试装置,其特征在于,所述测试运行组件包括测试条件配置模块、调度模块、以分布式架构部署的数个执行节点和反馈模块;
测试条件配置模块配置的测试条件包括:脚本路径、用例路径、运行环境、运行周期时间和反馈路径;
在测试条件满足时,调度模块调用测试脚本和测试用例,基于负载均衡算法在分布式架构上寻找合适的执行节点作为目标节点,将测试脚本和测试用例发送给目标节点;
目标节点执行测试脚本和测试用例,测试结果发送给反馈模块;
反馈模块生成测试报告并依据反馈路径进行反馈。
CN202110726729.7A 2021-06-29 2021-06-29 接口测试方法及测试装置 Pending CN113342679A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110726729.7A CN113342679A (zh) 2021-06-29 2021-06-29 接口测试方法及测试装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110726729.7A CN113342679A (zh) 2021-06-29 2021-06-29 接口测试方法及测试装置

Publications (1)

Publication Number Publication Date
CN113342679A true CN113342679A (zh) 2021-09-03

Family

ID=77481442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110726729.7A Pending CN113342679A (zh) 2021-06-29 2021-06-29 接口测试方法及测试装置

Country Status (1)

Country Link
CN (1) CN113342679A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116340187A (zh) * 2023-05-25 2023-06-27 建信金融科技有限责任公司 规则引擎迁移测试方法、装置、电子设备及存储介质
CN117033234A (zh) * 2023-08-24 2023-11-10 广东保伦电子股份有限公司 一种接口测试方法、装置、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897687A (zh) * 2018-06-29 2018-11-27 泰华智慧产业集团股份有限公司 一种基于数据驱动的api自动化测试方法和***
WO2020082585A1 (zh) * 2018-10-25 2020-04-30 深圳壹账通智能科技有限公司 一种接口测试的方法及设备
CN111221743A (zh) * 2020-03-18 2020-06-02 时时同云科技(成都)有限责任公司 自动化测试方法及***
CN112363907A (zh) * 2020-09-14 2021-02-12 杭州大搜车汽车服务有限公司 Dubbo接口的测试方法、装置、电子装置和存储介质
CN112416743A (zh) * 2020-01-21 2021-02-26 上海哔哩哔哩科技有限公司 一种测试控制***、方法及设备
CN112597003A (zh) * 2020-12-11 2021-04-02 平安普惠企业管理有限公司 自动化测试方法、装置和计算机设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897687A (zh) * 2018-06-29 2018-11-27 泰华智慧产业集团股份有限公司 一种基于数据驱动的api自动化测试方法和***
WO2020082585A1 (zh) * 2018-10-25 2020-04-30 深圳壹账通智能科技有限公司 一种接口测试的方法及设备
CN112416743A (zh) * 2020-01-21 2021-02-26 上海哔哩哔哩科技有限公司 一种测试控制***、方法及设备
CN111221743A (zh) * 2020-03-18 2020-06-02 时时同云科技(成都)有限责任公司 自动化测试方法及***
CN112363907A (zh) * 2020-09-14 2021-02-12 杭州大搜车汽车服务有限公司 Dubbo接口的测试方法、装置、电子装置和存储介质
CN112597003A (zh) * 2020-12-11 2021-04-02 平安普惠企业管理有限公司 自动化测试方法、装置和计算机设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116340187A (zh) * 2023-05-25 2023-06-27 建信金融科技有限责任公司 规则引擎迁移测试方法、装置、电子设备及存储介质
CN116340187B (zh) * 2023-05-25 2023-08-15 建信金融科技有限责任公司 规则引擎迁移测试方法、装置、电子设备及存储介质
CN117033234A (zh) * 2023-08-24 2023-11-10 广东保伦电子股份有限公司 一种接口测试方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
US11099823B2 (en) Systems and methods for transformation of reporting schema
CN108845940B (zh) 一种企业级信息***自动化功能测试方法和***
CN104866599B (zh) 可视化报表的生产方法和***
CN107368503B (zh) 基于Kettle的数据同步方法和***
US7421621B1 (en) Application integration testing
CN111459821B (zh) 一种基于TestNG的软件自动化单元测试方法
WO2019029160A1 (zh) 应用程序构建方法、***、计算机设备和存储介质
CN101908015B (zh) 一种基于构件生成测试案例的装置及方法
CN106021111A (zh) 接口测试方法及***
CN113342679A (zh) 接口测试方法及测试装置
US20200133711A1 (en) Event-Triggered Configuration of Workflow Processes for Computer Software Development Systems
CN104679500B (zh) 实体类自动生成实现方法及装置
CN111737140A (zh) 接口自动化测试方法、装置、设备及计算机可读存储介质
CN110503408B (zh) 一种基于自定义配置的业务流程管理***
CN109857649B (zh) 一种资源测试方法及***
CN103176892A (zh) 一种页面监控方法及***
CN107357721B (zh) 测试***的方法及装置
CN111930354B (zh) 一种用于软件开发的框架组件***及其构建方法
CN102567517A (zh) 发布数据库数据的装置和方法
EP2913757A1 (en) Method, system, and computer software product for test automation
US20090248186A1 (en) Methods and Systems for Matching Configurable Manufacturing Capacity Requirements and Availability
CN112016256A (zh) 一种集成电路开发平台、方法、存储介质及设备
CN102567066A (zh) 业务***开发方法、平台及***
US20090228903A1 (en) Data event sending method and apparatus and event processing system
CN113254399A (zh) 日志查询方法、装置、电子设备及介质

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20210903

RJ01 Rejection of invention patent application after publication