契约测试Pact实践

契约测试开发总览

  • 为什么要使用契约测试(Pact)

    目前开发过程中存在的问题
    联调成本过高,要双方开发到某一阶段后放在同一个环境上才能进行,要同时把握双方的进度,造成资源和时间上的浪费。
    对于接口的变动把控相当困难。由于接口变动是普遍存在的,尤其对于调用关系复杂的接口,一旦发生变动,如果没有一套机制进行控制,验证的成本巨大。更不必说持续集成了,只能成为空谈。
    
    契约测试能给我们带来什么
    通过使用契约测试,接口调用双方协商接口后就可以并行开发,并且在开发过程中就利用契约进行预集成测试,不用等到联调再来集成拉通接口,一旦成熟,在保证质量的前提下,联调的成本可以减低到几乎为0。
    因为契约的存在,让接口的变动有迹可循,即使变动也可以确保变动的安全性和准确性。
    与CI的集成是这一整套流程的关键,我们在构建的过程中来完成接口的联调测试,接口变动的验证测试。如果规范整个的开发流程,正确使用契约测试,就可以真正实现持续集成,来达到任何时候构建出来的程序都是真正可发布的状态。
    Pact工具非常的轻量化,易使用,学习成本低,带来的效果显著。
    
  • Pact 介绍

  • Pact 开发术语

    Consumer:微服务接口的调用者
    Provider:微服务接口的提供者
    契约:是由consumer端和provider端共同定义的接口规范,包括接口访问的路径,输入和输出数据。在具体的实施中,是由consumer端生成的一个json文件,并存放在pact broker上
    Pact Broker:保存契约文件的服务器

  • Pact 开发流程

    .制定契约
    制定契约就是双方定义接口的过程,完成接口文档的编写。
    .接口双方的命名

    这里的命名在后续写测试用例的时候需要使用
    .代码实现

    .构建过程
    Maven构建的过程会跑测试用例,所以可以自动完成契约文件的生成,上传broker,契约文件的验证等一系列过程
    这里要先构建consumer,用来确保先生成契约文件,以免provider的验证的时候取不到。
    provider构建时,会启动真实的服务来进行验证。
    完成各自构建,联调在出包的时候就已经完成,意味着构建后出的包就基本是一个可发布的状态。

时间: 2024-11-09 11:09:02

契约测试Pact实践的相关文章

阿里技术专家:持续交付与微服务背后的实践逻辑

讲师介绍 崔力强 阿里巴巴技术专家   <微服务设计>中文译者之一:曾在ThoughtWorks任职软件交付和敏捷顾问: 对持续集成.自动化测试有丰富经验:目前专注于持续交付SaaS产品的开发,提供精益需求管理.软件设计.敏捷转型相关咨询服务.    前言 大家好,我是崔力强.目前在阿里巴巴任职.负责一款持续交付领域的SaaS产品的开发.非常高兴能够和大家分享持续交付和微服务的话题. 本次分享的重点是持续交付.也会提到一些微服务的概念,以及持续交付和微服务之间的关系.今天会涉及的一些实践可能大

《Web测试囧事》——第1章 功能测试:技术篇 1.1 输入框中输入超过最大允许值造成页面跳转溢出

第1章 功能测试:技术篇 提到测试,大家首先会想到的就是功能性的测试,因为只有保证了产品的基本功能和流程,产品才具备给用户提供使用价值的能力,从而才有可能确定产品的核心竞争力.基于这一点,不仅测试人员和开发人员,还有产品经理.项目经理.业务方对功能完备性和正确性的重视程度也往往都是最高的.这也使得功能测试成为任何测试类型的基础. 在进行功能测试时,我们会使用诸如边界值分析.等价类划分.因果分析.组合测试(Pairwise Testing)等测试方法来设计和规划测试用例,但是这些方法大多都是从书本

《Web测试囧事》——3.3 前后台分离测试时需要注意测试隔离

3.3 前后台分离测试时需要注意测试隔离 小蔡测试的产品最近需要更新前后台.对于前台来说,要从之前的JavaScript转换成Angular等新技术,显示样式也要从前几年的拟物化风格转换为扁平化风格:对于后台来说,要从之前和公司内部其他产品通用的6套后台模块系统架构,转换成只包含数据库和后端服务器的2套模块系统架构,而且后台技术要用Node.js重写,如图3-5所示. 基本上这个前后台替换的任务,把整个系统都进行了替换,只是仍然保留了之前的功能.进行前后台替换的任务时间紧,所以整个项目组的开发人

敏捷测试简介

时至今日,还讨论这样一个老话题,是否感觉老调重弹?因为两年前(2010年底)时任谷歌中国测试经理的段念先生就 写了一篇文章<什么是敏捷软件测试>(刊登在InfoQ网站上[1]), 就已经谈到这个话题,"敏捷软件测试更多的是一种 理念,而非过程".在2011年,我自己也写了一篇文章<敏捷测试的思考和新发展>,刊登在<程序员>杂志上,谈到"在 BDD.ATDD和TDD最根本的.共同的思想基础上,构成一个全新的.更完善的敏捷测试框架"[

企业高效研发实践专场,加速研发效能体系升级

2017杭州云栖大会将再度在杭州云栖小镇起航,本届大会共有3场主论坛.22场前沿峰会.100+场分论坛.400+科技企业展,毫无疑问,这将是一场科技界的饕餮盛宴.阿里云云效将于10月14日下午13:30在大会现场开启"企业高效研发实践专场",由来自光大银行.国泰产险.新光互联等企业客户,和阿里技术专家一起从企业实战经验出发,分享传统企业研发转型之路,及企业研发效能快速提升实践.   会议时间:10月14日13:30-17:40 会议地点:杭州云栖小镇国际会展中心E-1-3会议厅   议

MySQL远程代码执行/提取的分析与实践

0x00 背景 2016年9月12日,国外安全研究人员Dawid Golunski发布安全公告发现了MySQL的一个可被远程代码执行/权限提升的漏洞(CVE-2016-6662).笔者在研究了原报告后,做了如下分析和实践. 0x01 分析 漏洞披露原址: http://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.html 影响范围 (漏洞作者9月16日的最新更

网站渗透测试原理及详细过程

网站渗透测试原理及详细过程 原文地址:http://blog.csdn.net/kingmax54212008/article/details/11833059 渗透测试(Penetration Testing)目录 零.前言 一.简介 二.制定实施方案 三.具体操作过程 四.生成报告 五.测试过程中的风险及规避 参考资料 FAQ集     零.前言 渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为. 这里我们提供的所有渗透测试方法均为(假设为)合法的评估服务,也就是通常所说的道德

从传统ERP测试向主流互联网测试转型

昨天晚上微博上有测试同仁@testGM想了解下如何从传统ERP测试向主流互联网测试转型.我本人在来淘宝之前就是做传统ERP测试的,现在在淘宝做了这么长时间,对互联网测试也有一定的了解,就想谈谈自己的看法. 特意说明下,我这边了解到的传统ERP测试就是4或5年前的ERP测试情况,不代表目前的整体情况,说的不对的地方 望谅解. 整体策略: 谈过如何转型,那就是知己知彼了.首先自己要了解传统ERP测试的优点和缺点以及特点,也要了解互联网测试的相关特点,从而给自己设定一个计划来快速转型,目的很简单,发挥

一篇文章带你深入理解什么是负载测试

介绍 任何软件开发项目接近完成的时候,它可能已经通过无数次测试了,特别是在测试和开发同时发生的敏捷测试环境下.无论你已经进行过多少轮测试,一旦你的应用程序已接近完成,那么只有一个办法知道你的软件是否可以满足真实用户群的实际需求,它就是负载测试.你可以使用负载测试工具来完成这项工作.负载测试是指给软件.应用程序或网站加上模拟的需求,以测试其在不同的环境下的运行状态的过程. 负载测试和性能测试 作为大家最了解且最常见的一种性能测试类型,负载测试即包括将常规压力施加到软件应用或 IT 系统,去看它们是