快速回归测试工具 diffy

一、简介

1. diffy是什么

摘自官网在这里插入图片描述

diffy作为一个代理,把接收到的请求转发到每个运行的服务,并且收集每个服务的返回值进行比较

2. 工作原理

2.1 概念了解

在这里插入图片描述

  1. diffy就是图中的proxy,负责接收请求

    请求可以来自手动请求、自动化测试、线上的流量

  2. 图中的candidate、promary、secondary代表三个服务
    • candidate: 要回归的服务,比如重构后的服务
    • primary: 与线上版本一致的服务
    • secondary: 和primary服务一致

2.2 工作原理

  1. diffy接收到请求后,分别转发到上述3个服务;
  2. 其中primary、secondary两个服务代码版本是与线上一致的,secondary用来降噪,比如时间戳、日期等动态变化的值,这些需要排除掉;
  3. 把噪音消除掉后,再来对比candidate与primary,就会比较出不同,以便测试人员去对比

二、实战

1 部署被测服务

本地环境演示,以端口号区分服务

  • 部署primary,端口号9990
  • 部署secondary,端口号9991
  • 部署candidate,端口号9992

2 启动diffy(选用docker方式)

docker run -d --name diffy-test \
-p 8880:8880 -p 8881:8881 -p 8888:8888 \
  	diffy/diffy \
    -candidate=localhost:9992 \
    -master.primary=localhost:9990 \
    -master.secondary=localhost:9991 \
    -responseMode='primary' \
    -service.protocol=http \
    -serviceName="Tier-Service" \
    -proxy.port=:8880 \
    -admin.port=:8881 \
    -http.port=:8888 \
    -rootUrl=localhost:8888 \
    -summary.email='' "\
    -summary.delay="5"

参数说明

  • -p 8880:8880 作为代理接收请求的端口,所有请求访问这个端口
  • -p 8881:8881 管理diffy服务可视化页面
  • -p 8888:8888 查看结果的web页面

备注
-allowHttpSideEffects=true 展示POST, PUT, DELETE,为了安全默认不被展示
-service.protocol=https 通过https协议运行
-https.port=123 默认443,可以手动配置

3 执行测试

http://localhost:8880/接口路径

4 查看结果

diffy结果:http://localhost:8888
在这里插入图片描述

diffy服务管理:http://localhost:8881/admin

三、踩坑记录

第一次是从twitter的github地址获取docker启动命令,报错
在这里插入图片描述
解决:

参考opendiffy中的docker启动命令,后面会有-summary.email参数,加上后启动成功

四、参考资料

  • twitter的github地址

    https://github.com/twitter-archive/diffy

  • opendiffy的github地址

    https://github.com/opendiffy/diffy

    现在在维护opendiffy,所以可以opendiffy为主查阅资料

猜你喜欢

转载自blog.csdn.net/dabaoting/article/details/114555737
今日推荐