首页> 中国专利> 一种实时高效自动化契约测试的方法及系统

一种实时高效自动化契约测试的方法及系统

摘要

本发明公开了一种实时高效自动化契约测试的方法及系统,其方法包括:执行引擎接收包含多个契约测试用例编号的测试请求,并根据所述测试请求中的多个契约测试用例编号,从数据库中读取所述每个契约测试用例编号所对应的多个契约测试用例;所述执行引擎将所读取的每个契约测试用例编号所对应的多个契约测试用例发送到用例解析器,以便所述用例解析器将所述每个契约测试用例转为unittest可执行的测试用例;所述执行引擎接收所述用例解析器发送的多个unittest可执行的测试用例,并通过调用规则校验器对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果。

著录项

说明书

技术领域

本发明涉及自动化测试技术领域,特别涉及一种实时高效自动化契约测试的方法及系统。

背景技术

消费者驱动的契约测试(CDC测试)是服务的消费者和提供者之间数据格式的测试,当前的契约测试框架是基于消费者端创建契约文档,服务提供者将根据创建的契约文档提供对应格式的数据并返回给消费者,通过契约检查判断服务提供者提供的数据和消费者生成的契约是否匹配。

目前契约测试框架存在如下问题:

1、缺少契约用例、用例执行、执行记录、测试报告的全过程管理功能。

2、数据格式校验单一,无法支撑对复杂响应信息的完整性、准确性、返回值格式及返回值类型的校验,导致测试覆盖度低,测试数据准确度率低下。需要通过编码方式生成不同格式的校验规则,缺乏灵活性。

3、目前的契约测试框架不具备实时感知功能,只有手工运行测试才能够发现微服务接口的修改对其它所有使用者造成的影响。

4、契约用例无法批量执行,执行效率较低。用例仅支持手动触发执行,无法满足自动化构建执行的需求。

5、契约测试框架缺乏图形化操作界面,对测试人员编码能力有要求,且测试结果以控制台输出,不能持久化保存,造成历史结果无法查询。结果输出不够清晰、可读性差,不利于快速定位问题。

发明内容

为了解决现有的测试工具断言类型有限,无法支撑响应信息的完整性、返回值格式及返回值类型的校验功能,开源契约测试框架效率低、普适性差,微服务接口变动把控困难,且变动后验证成本巨大等问题,本发明提供了一种实时高效自动化契约测试方法及系统。

根据本发明实施例提供的一种实时高效自动化契约测试的方法,包括:

执行引擎接收包含多个契约测试用例编号的测试请求,并根据所述测试请求中的多个契约测试用例编号,从数据库中读取所述每个契约测试用例编号所对应的多个契约测试用例;

所述执行引擎将所读取的每个契约测试用例编号所对应的多个契约测试用例发送到用例解析器,以便所述用例解析器将所述每个契约测试用例转为unittest可执行的测试用例;

所述执行引擎接收所述用例解析器发送的多个unittest可执行的测试用例,并通过调用规则校验器对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果。

优选地,所述契约测试用例包括一个或多个测试步骤,所述每个测试步骤包括测试步骤名称、接口请求、响应头校验以及响应体格式校验。

优选地,所述执行引擎接收包含多个契约测试用例编号的测试请求之前,还包括:

设置所述执行引擎的执行触发方式;

其中,所述触发方式包括手动触发方式和自动触发方式。

优选地,所述执行引擎接收包含多个契约测试用例编号的测试请求之前,还包括:

为所述规则校验器配置校验规则;

其中,所述校验规则包括响应头校验规则和响应体校验规则。

优选地,所述执行引擎通过调用规则校验器对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果包括:

所述执行引擎通过调用规则校验器中的校验规则对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果、校验明细及错误信息;

所述执行引擎根据所述每个契约测试用例的校验结果、校验明细及错误信息,生成每个契约用例测试的分析报告。

根据本发明实施例提供的一种实时高效自动化契约测试的系统,包括:

执行引擎,用于接收包含多个契约测试用例编号的测试请求,并根据所述测试请求中的多个契约测试用例编号,从数据库中读取所述每个契约测试用例编号所对应的多个契约测试用例;将所读取的每个契约测试用例编号所对应的多个契约测试用例发送到用例解析器;接收所述用例解析器发送的多个unittest可执行的测试用例,并通过调用规则校验器对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果;

用例解析器,用于将所述每个契约测试用例转为unittest可执行的测试用例。

优选地,所述契约测试用例包括一个或多个测试步骤,所述每个测试步骤包括测试步骤名称、接口请求、响应头校验以及响应体格式校验。

优选地,所述执行引擎还用于设置所述执行引擎的执行触发方式;

其中,所述触发方式包括手动触发方式和自动触发方式。

优选地,所述执行引擎还用于为所述规则校验器配置校验规则;

其中,所述校验规则包括响应头校验规则和响应体校验规则。

优选地,所述执行引擎具体用于通过调用规则校验器中的校验规则对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果、校验明细及错误信息,并根据所述每个契约测试用例的校验结果、校验明细及错误信息,生成每个契约用例测试的分析报告。

根据本发明实施例提供的方案,实现web可视化全栈式管控。将契约用例、用例执行、执行记录、测试报告进行统一的图形化的管理,提升了工具的易用性,降低了契约测试编写的难度,解决了现有契约测试框架管理功能缺失的问题。通过对Pactverify改造,实现了灵活丰富的接口数据校验规则。解决了对复杂响应信息完整性、返回值格式及返回值类型的校验问题,实现了更高的测试覆盖率。通过与Jenkins的集成实现了服务提供者变更对服务消费者影响的快速感知。当一个Service同时被多个使用者调用的时候,保证service的修改对其它所有使用者造成影响都被快速感知,及时发现违背接口契约的问题。基于unittest实现契约用例的批量执行,执行效率更高。除手工触发运行外还支持无人值守的自动化运行方式,通过自动化构建测试解放人力、提升工作效率。提供丰富清晰的测试报告。通过测试概览、测试明细能够方便获取测试结果,帮助于开发人员及测试人员快速定位问题。支持测试结果统计分析,通过对历史测试结果的汇总统计,有助于了解测试结果的变化趋势,进而分析服务接口的质量情况。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于理解本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例提供的一种实时高效自动化契约测试的方法流程图;

图2是本发明实施例提供的一种实时高效自动化契约测试的系统示意图;

图3是本发明实施例提供的自动化契约测试工具的创建、测试和查询流程图;

图4是本发明实施例提供的用例执行逻辑架构图;

图5是本发明实施例提供的契约测试报告示意图;

图6是本发明实施例提供的功能结构图;

图7是本发明实施例提供的实时高效自动化契约测试的方法的实现逻辑图;

图8是本发明实施例提供的用例集的示意图;

图9是本发明实施例提供的实时高效自动化契约测试的系统示意图;

图10是本发明实施例提供的执行引擎调用规则校验器的示意图;

图11是本发明实施例提供的测试报告的示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1是本发明实施例提供的一种实时高效自动化契约测试的方法流程图,如图1所示,包括:

步骤S101:执行引擎接收包含多个契约测试用例编号的测试请求,并根据所述测试请求中的多个契约测试用例编号,从数据库中读取所述每个契约测试用例编号所对应的多个契约测试用例;

步骤S102:所述执行引擎将所读取的每个契约测试用例编号所对应的多个契约测试用例发送到用例解析器,以便所述用例解析器将所述每个契约测试用例转为unittest可执行的测试用例;

步骤S103:所述执行引擎接收所述用例解析器发送的多个unittest可执行的测试用例,并通过调用规则校验器对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果。

优选地,所述契约测试用例包括一个或多个测试步骤,所述每个测试步骤包括测试步骤名称、接口请求、响应头校验以及响应体格式校验。

优选地,所述执行引擎接收包含多个契约测试用例编号的测试请求之前,还包括:设置所述执行引擎的执行触发方式;其中,所述触发方式包括手动触发方式和自动触发方式。

优选地,所述执行引擎接收包含多个契约测试用例编号的测试请求之前,还包括:为所述规则校验器配置校验规则;其中,所述校验规则包括响应头校验规则和响应体校验规则。

优选地,所述执行引擎通过调用规则校验器对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果包括:所述执行引擎通过调用规则校验器中的校验规则对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果、校验明细及错误信息;所述执行引擎根据所述每个契约测试用例的校验结果、校验明细及错误信息,生成每个契约用例测试的分析报告。

图2是本发明实施例提供的一种实时高效自动化契约测试的系统示意图,如图2所示,包括:执行引擎201,用于接收包含多个契约测试用例编号的测试请求,并根据所述测试请求中的多个契约测试用例编号,从数据库中读取所述每个契约测试用例编号所对应的多个契约测试用例;将所读取的每个契约测试用例编号所对应的多个契约测试用例发送到用例解析器;接收所述用例解析器发送的多个unittest可执行的测试用例,并通过调用规则校验器对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果;用例解析器202,用于将所述每个契约测试用例转为unittest可执行的测试用例。

优选地,所述契约测试用例包括一个或多个测试步骤,所述每个测试步骤包括测试步骤名称、接口请求、响应头校验以及响应体格式校验。

优选地,所述执行引擎还用于设置所述执行引擎的执行触发方式;其中,所述触发方式包括手动触发方式和自动触发方式。

优选地,所述执行引擎还用于为所述规则校验器配置校验规则;其中,所述校验规则包括响应头校验规则和响应体校验规则。

优选地,所述执行引擎具体用于通过调用规则校验器中的校验规则对所述每个unittest可执行的测试用例进行校验处理,得到所述每个契约测试用例的校验结果、校验明细及错误信息,并根据所述每个契约测试用例的校验结果、校验明细及错误信息,生成每个契约用例测试的分析报告。

下面结合附图对本发明的技术方案进行详细说明

本发明建立一种契约测试全栈式管控方法。改变传统契约测试用例编写、执行与管理方式,将独立开展的契约用例、执行方式、测试报告进行统一定制化编写与分析,减少契约测试编码的复杂度与工作量,提升自动化测试执行效率,实现微服务下的测试自动化和高效化,解决了开源契约测试框架功能编写复杂度。

本发明建立一种灵活丰富的微服务接口响应数据校验方法。解决了微服务、微应用复杂接口数据完整性、准确性、返回值格式、返回值类型的校验问题,大大增强了接口数据测试的覆盖度,提高了接口数据准确度的校验效率。

本发明建立一种契约测试实时感知方法。当一个Service同时被多个使用者调用的时候,保证service的修改对其它所有使用者造成影响都被快速感知,及时发现违背接口契约的问题。

本发明建立一种契约测试自动化运行的方式,支持契约用例的批量执行,执行效率更高。除手工触发运行外还支持无人值守的自动化运行方式,通过自动化构建测试解放人力、提升工作效率。

本发明建立一种查询测试报告的方法。通过测试概览、测试明细能够方便获取测试结果,帮助于开发人员及测试人员快速定位问题。解决现有契约测试框架中测试报告易读性差、无历史报告存储的问题。支持测试结果统计分析,通过对历史测试结果的汇总统计,有助于了解测试结果的变化趋势,进而分析微服务接口的质量情况。

本发明建立一种实时高效自动化契约测试方法。技术方案主要包括通过将契约用例、用例执行、执行记录、测试报告进行统一的图形化的管理,建立一种web形式可视化全过程管理的方法;为实现更高的测试覆盖率,通过与Pactverify集成建立一种灵活丰富的数据校验规则的实现方法;通过与Jenkins的集成建立一种服务提供者变更对服务消费者影响的实时快速感知的方法;为实现用例批量执行,提高工作效率,建立一种契约测试自动化运行的方式;建立一种查询测试报告的方法,解决了测试结果不能长久保存、历史结果无法查询的问题。该实时高效自动化契约测试方法的创建、测试和查询流程如图3所示,1)根据接口说明创建用例集及契约用例;2)配置校验规则;3)设置用例执行触发方式;4)解析执行用例;5)生成执行记录及结果明细;6)生成契约测试报告;7)历史数据汇总分析。

针对前面提到的各项技术需求及问题,分别采取了如下各项技术方案予以突破和解决:

根据接口说明创建用例集及契约用例,建立一种契约测试全栈式管控方法。测试人员登录系统,进入契约测试功能模块,根据接口模块创建用例集。选中要添加契约用例的用例集,依据设计阶段定义的服务接口填写契约用例内容。契约用例根据实际系统业务以树形结构进行管理,以二进制格式存入数据库。契约用例内容为json格式,内容包括契约的请求信息、响应信息及校验规则信息。

契约用例内容如下所示:

其中具体参数如下:

·Name为用例步骤名称;

·Request为请求信息,包括请求地址、请求方式、请求头等;·Validate为响应头验证信息;

·Contact为响应体验证信息。

一个契约用例可以包含多个接口契约,使用过程中可根据具体场景灵活使用。如针对一个微服务接口对应多个微服务消费者的情况下,可以在同一用例中设置多个契约测试步骤,如下所示:

通过配置响应头及响应体校验规则,建立一种灵活丰富的微服务接口响应数据校验方法。通过配置校验规则对响应头及响应体进行校验。响应头校验规则在“validate”列表中定义,校验规则为实际响应头结果与预期结果的比较,包含相等、小于、小于等于、大于等于、大于、不相等。响应体验证规则是实际响应体结果与预期结果的比较,基于pactverify实现,在“contract”中定义,校验规则包含值匹配、类型匹配、数组类型匹配、正则匹配、枚举匹配、复杂规则匹配,通过以上丰富的校验规实现了对响应信息的完整性、返回值格式及返回值类型的校验。

建立一种契约测试实时感知方法,并通过设置用例执行触发方式,建立一种契约测试自动化运行的方式。通过手动触发和自动触发两种方式执行契约用例。选中用例集或多个用例,点击“执行”进行手动触发;通过Jenkins流水线插件扩展功能增加契约测试执行节点,在契约测试执行节点中通过数据库查询获取项目中创建的契约用例集,勾选要执行的契约用例。配置定时触发任务或配置源码库变更时自动触发,契约测试会随着jenkins流水线的运行而执行,实现了自动化的持续集成测试。通过流水线频繁的构建、打包、测试,及时发现违背接口契约的问题,保证服务的修改对其它所有使用者造成影响被快速感知。

解析执行契约用例。基于unittest单元测试框架,从数据库读取勾选的契约用例,解析契约用例中每个步骤的请求、参数及校验规则,生成unittest可执行的测试用例,调用PactVerify实现对契约规则的校验,最终实现契约测试的自动化批量执行。用例执行逻辑架构如图4所示。

生成执行记录及结果明细。用例执行后将执行明细(请求信息、响应信息)、Pactverify生成的校验结果(断言信息、错误信息)、执行时间、执行人存入数据库。断言信息包括每个测试步骤的断言结果、断言统计信息;错误信息包含用例执行错误、断言错误。

生成契约测试报告。如图5所示,系统根据后台生成的测试明细数据汇总生成契约测试报告。测试报告展示测试概览信息、测试步骤详情、校验结果及明细、错误信息。通过测试概览、测试明细能够方便获取测试结果,帮助于开发人员及测试人员快速定位问题。

基于数据库历史测试明细进行汇总分析,生成项目契约测试汇总信息,展示项目下所有微服务接口契约的总体结果及测试结果变化趋势。有助于管理人员进行质量评估及研发过程改进。

下面结合图6-图11对本发明进行说明:

如图7所示,本发明主要包含测试用例、用例解析器、执行引擎、jenkins、规则校验器、执行明细及结果等内容。

其中用例管理包括用例集和契约用例。用例集用于组织管理契约用例,按照功能模块、业务场景或流程对测试用例进行分类。用例集包含多个独立的契约用例。如图6所示,每个契约用例包含一个或多个测试步骤,测试步骤之间用逗号进行分隔。测试步骤包括测试步骤名称、接口请求、响应头校验、响应体格式校验,参见图8。

用例执行包含手动触发和自动执行两种方式。用户可以通过浏览器界面选择测试用例手动触发执行引擎执行测试,也可以由jenkins触发定时任务自动触发执行引擎执行测试。执行引擎接收传入的测试用例编号集合,根据用例编号从数据库读取用例内容,通过用例解析器解析用例内容,转化为unittest测试用例,供执行引擎调用执行,参见图9。

执行引擎调用规则校验器(PactVerify模块)验证用例中定义的校验规则,校验规则返回校验结果、校验明细、错误信息,参见图10。

用例执行完成后执行引擎将用例执行明细、执行结果、校验结果、校验明细、错误信息、执行人、执行时间存入数据库。系统根据本次执行引擎返回的以上数据信息渲染生成契约测试报告。报告内容参见图11。

通过对数据库中历史测试结果进行汇总统计,生成项目的总体测试结果及历史测试结果的变化趋势,有助于管理人员进行质量评估及研发过程改进。

尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号