质量内建2.0,从自働化到及时化:契约测试,接口随时一致

2023-11-21 12:50

本文主要是介绍质量内建2.0,从自働化到及时化:契约测试,接口随时一致,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

定义

契约测试是一种以自动化测试作为技术手段,解决团队间因存在明显沟通边界,由沟通不畅和代码变更而造成的系统间接口不匹配问题的最佳实践。

56d65e791afb6d2fe482a4be26c45d61.jpeg

通过测试驱动生成服务间的契约文档,利用该契约文档和Mock Server(银行业常称之为“挡板”)分别对契约的消费者和提供者进行自动化测试,以确保双方能够按照契约实现满足规格要求的接口,并利用持续集成流水线实现对双方变更影响的快速反馈。

契约测试是基于契约或者使用契约来测试被测系统,其核心是契约,包括如何制定契约,如果更改契约以及如何使用契约等。首先定义契约必须有 API 的消费者(Consumer)和 API 的提供者(Provider)两端,其次契约还要包含这个 API 的 Request 和 Response 的定义细节,见下图:

4a44c899d71ebd106a71d50437d3c498.png

场景

然后再分别使用这个契约里面的内容生成测试用例来测试消费者者对于 Web API 消费代码和提供者对于 Web API 的实现代码,见下图:

8ead8da0aaf4dc37aa9ee6f56ec50837.png

框架

如果要实践契约测试,首先要沟通契约,并且编写契约。首先沟通契约一般有两种方式,一种是提供者驱动(Provider Driven),另一种是消费者驱动(Consumer Driven)。而编写契约的方式也有两种,一种是使用工具手动编写契约;另外一种是使用特定的契约测试框架或者工具,然后编写代码来动态生成契约。业界最常用的三个契约测试框架是 Pact,Swagger 和 Spring Cloud Contract。其中 Pact 是一个支持多种语言的框架,包括 Java,JavaScript,Golang,#C 等多种语言开源免费框架,主要通过编写测试代码来动态生成契约,并主要用于消费者驱动契约类型的测试;而 Swagger 主要是通过手动编写契约来做提供者驱动契约类型的测试;最后 Spring Cloud Contract 主要用于基于 Spring 框架开发的 Web 系统,也是主要通过编写测试代码来动态生成契约来做消费者驱动契约类型的测试。并使用契约生成相应的测试用例和自动化测试。其次,当生成了大量的契约之后,一定要集中化的管理契约,并且最好能可视化出来,如下图:

3a52816ae2e43a0301668032f435c6c2.png

步骤

契约测试实施的主要步骤总结如下:

  1. 制定明确的契约沟通,设计和变更流程

  2. 各服务开发团队之间必须同意并遵守此流程

  3. 集中化管理契约

  4. 可视化展现服务的依赖和调用链

  5. 自动化契约测试并加入持续构建流水线中

参考公众号:

胡皓老师 枪炮与代码

刘冉老师 刘冉的思辨悟

这篇关于质量内建2.0,从自働化到及时化:契约测试,接口随时一致的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/402446

相关文章

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase