背景介绍

系统重构、拆分、底层依赖变更,变更影响范围大,测试回归冗余而繁杂,测试如何进行高效率的回归测试?

为了解决上述问题,我们结合了公司内部资源及一些优秀的开源工具,开发了kudiffy平台。

首先,先来介绍一下两个开源工具。

1.Diffy

Twitter公司发布的自动化测试开源工具,可以将请求分发到不同版本的服务器上,通过对比运行结果来进行接口回归,不用再通过接口测试用例手动校验。详见:http://www.github.com/twitter/diffy

image

2. Goreplay

流量回放的开源工具,支持HTTP请求的录制和重放,详见:https://github.com/buger/goreplay/wiki。

image

使用这两种工具可以帮助我们提升一定的工作效率,但经过一段时间的使用,发现存在一些问题,如:

  1. 上手需要一定的时间成本,需要手动下载并安装

  2. 服务杂乱无章,可维护性差

基于上述问题,我们开发了kudiffy平台用于统一管理diffy和goreplay服务,并且不用手动安装下载,无接入成本。接下来,我将详细介绍强大的kudiffy平台!

kudiffy平台

系统介绍

diffy平台:

image

整体架构:

image

流程图

image

实现功能:

  1. diffy服务管理平台化,统一管理

  2. goreplay和diffy结合,实现实时流量回放并对比结果

  3. 打通公司内部devops,获取SOA、接口等信息

  4. 权限控制,接入sso及cmdb,获取用户权限信息

  5. 打通公司部署系统,每次部署完成自动重启diffy服务

  6. 对接接口自动化平台,自动校验不同服务版本返回值

使用方法

一.diffy服务创建:

1.接入零成本,对接公司内部服务权限,筛选登录用户可操作的服务器及ip

image

2.接入后平台状态展示,判断diffy服务存活状态,如果被kill,可手动重启

image

3.页面直接查看运行结果

image

4.将diffy与接口自动化框架结合,返回结果自动校验,无需手动编码对比

二.goreplay与diffy的结合

1.导流服务接入,支持特定接口筛选

image

2.接入页面展示

image

3.开始导流后,会将目标服务器上的流量录制,并发送到对应的diffy服务上,自动对比运行结果,无需手动发送请求

后续计划

目前kudiffy平台已经在多个业务组实践,很好的提高了大家的回归效率。但仍然还有可以优化的部分,例如:

1.mock功能,对于调用链路很长的请求,上下游服务的稳定性会影响diffy对比的结果,mock请求可支持diffy结果更稳定和准确;数据库mock功能,也可解决post接口回放数据污染问题

2.根据业务特性,支持定制化改造

3.流程优化,如推动研发利用工具自测,将diffy运行结果加入质量卡点等

共同参与开发者:肖邦,夏灵,三笠,惜寒,少安,思思

服务推荐

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐