Diffy 开源项目教程
diffyFind potential bugs in your services with Diffy项目地址:https://gitcode.com/gh_mirrors/di/diffy
项目介绍
Diffy 是一个由 Twitter 开发的开源项目,用于自动发现潜在的软件缺陷。它通过将新代码和旧代码并行运行,并比较它们的响应,来检测可能的回归问题。Diffy 作为一个代理,将接收到的请求多播到每个运行的实例,然后比较响应并报告任何可能出现的回归问题。
项目快速启动
环境准备
在开始之前,确保你的环境已经安装了以下软件:
- Java 8
- SBT (Scala Build Tool)
编译和部署
-
克隆项目仓库
git clone https://github.com/twitter-archive/diffy.git cd diffy
-
编译项目
sbt assembly
-
启动 Diffy
java -jar diffy-server.jar \ -candidate='127.0.0.1:80' \ -master.primary='127.0.0.1:81' \ -master.secondary='127.0.0.1:82' \ -service.protocol='http' \ -serviceName='My Diffy Service' \ -proxy.port=:8880 \ -admin.port=:8881 \ -http.port=:8888 \ -allowHttpSideEffects=true \ -excludeHttpHeadersComparison=false
应用案例和最佳实践
应用案例
假设你有一个基于 Django 的 REST API 服务,并且你希望在不编写额外测试代码的情况下,使用 Diffy 来检测新版本和旧版本之间的差异。你可以按照以下步骤操作:
-
部署稳定版本
python manage.py runserver 81
-
部署稳定版本副本
python manage.py runserver 82
-
部署候选版本
python manage.py runserver 80
-
启动 Diffy
java -jar diffy-server.jar \ -candidate='127.0.0.1:80' \ -master.primary='127.0.0.1:81' \ -master.secondary='127.0.0.1:82' \ -service.protocol='http' \ -serviceName='My Diffy Service' \ -proxy.port=:8880 \ -admin.port=:8881 \ -http.port=:8888 \ -allowHttpSideEffects=true \ -excludeHttpHeadersComparison=false
-
发送请求并查看结果
http http://127.0.0.1:8880/api/
最佳实践
- 使用 Charles 或类似工具记录线上请求,然后通过 Rewrite 功能将请求重定向到 Diffy 的代理服务器地址。
- 忽略非关键差异,如请求头部的差异,可以在命令行中设置
-excludeHttpHeadersComparison=true
。
典型生态项目
Diffy 可以与以下项目结合使用,以增强其功能:
- Goreplay: 用于捕获和重放线上流量,可以与 Diffy 结合使用,进行更全面的测试。
- Postman: 用于手动发送请求,可以与 Diffy 结合使用,进行手动测试和验证。
- Django: 用于构建 REST API 服务,可以与 Diffy 结合使用,进行 API 的回归测试。
通过这些生态项目的结合使用,可以更全面地利用 Diffy 进行软件质量保证。
diffyFind potential bugs in your services with Diffy项目地址:https://gitcode.com/gh_mirrors/di/diffy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考