jck28 - 小柒 - diffy 接口 diff 测试工具

一, Diffy介绍

Twitter Diffy工具技术架构图

Diffy需要部署三个版本的系统来实现它的噪声过滤和对比功能,这三个版本分别是:候选版本(candidate)、稳定版本(primary)和稳定版本副本(secondary)。

  • 候选版本是待测版本,有着最新待测代码;
  • 稳定版本通常是已经上线的版本,或者是已知功能正常的版本;
  • 稳定版本副本是稳定版本的副本,和稳定版本运行相同的代码,主要用于排除噪声。

当Diffy接收到请求后,会把请求分发到这三个地方:被测服务(候选版本)、稳定版本服务和稳定版本副本服务。然后,候选版本服务与稳定版本服务的返回结果进行diff,生成原始diff结果(raw differences),即原始区别。接着,稳定版本与稳定版本副本的返回结果进行diff,生成噪声diff差异值结果(non-deterministic noise),即噪声。通过对这些差异值做减法来消除噪声。最后,通过比对原始的diff结果与消除噪声后的结果,得到最终的diff结果。

二,Diffy下载安装

三,Diffy使用

  • (1)下载完成后后,进入diffy目录,执行 ./sbt assembly 进行编译,编译完成后在/diffy/target/scala-2.12目录下会生成diffy-server.jar文件,需要使用该jar包启动diffy代理服务。

  • (2)在diffy/example文件夹下有diffy启动的配置文件,先启动downstream.sh,后启动run.sh。


    • run.sh配置文件主要参数如下,修改好参数后可以通过 ./run.sh 启动diffy服务:
    --candidate='localhost:9000' \            candidate环境的地址,为测试环境的服务地址
    --master.primary='localhost:9100' \       primary环境的地址,通常是已经上线版本,或者是已知功能正常的版本
    --master.secondary='localhost:9200' \     secondary环境的地址,和primary环境的地址一致即可
    --allowHttpSideEffects='true' \
    --responseMode='candidate' \              diffy代理返回的结果为测试环境的结果
    --service.protocol='http' \
    --serviceName='ExampleService' \          diffy展示报告的名称
    --proxy.port=8880 \                       diffy的代理端口,请求需要发给该端口
    --http.port=8888                          展示报告的端口

  • (3)diff数据比对的结果展示
    • 红色框内的按钮为降噪功能,打开降噪,会将时间戳,日期等存在差异的噪音字段不进行diff比对