写点什么

软件测试学习笔记丨 Goreplay 流量回放

作者:测试人
  • 2024-04-01
    北京
  • 本文字数:1320 字

    阅读完需:约 4 分钟

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/30429

GoReplay 介绍

  • GoReplay 是一个开源工具,用于捕获实时 HTTP 流量并将其重播到测试环境中,以便使用真实数据持续测试您的系统。它可用于增加对代码部署、配置更改和基础架构更改的信心。

  • GoRepaly 是一个开源网络监控工具,可以记录您的实时流量,并将用于跟踪、负载测试、监控和详细分析。

GoReplay 价值

  • 使用 GoReplay 准确模拟生产环境,使您的部署和基础架构更改可预测

  • GoReplay 是一种创新的开源解决方案,它允许您捕获现有用户的活动并将其重新用于测试您的应用程序。

  • 使用 GoReplay,您可以执行跟踪、负载测试或详细分析和监控

技术架构


下载

预编译版本https://github.com/buger/goreplay/releases

编译代码https://github.com/buger/goreplay

容器版本比较老旧https://hub.docker.com/search?q=goreplay&type=image

演练环境

可以利用 gor python nginx 等各种工具搭建多套环境 python3 -m http.server 8001./gor file-server :8000

dev 环境 http://127.0.0.1:8001stage 环境 http://127.0.0.1:8002prod 环境 http://127.0.0.1:8000
复制代码

快速开始 Quick Start

  • 监听模式

  • sudo ./gor --input-raw :8000 --output-stdout

  • 转发模式

  • sudo ./gor --input-raw :8000 --output-http=“http://localhost:8001”

  • 重放模式

  • gor --input-file requests.gor --output-http=“http://localhost:8001”

  • 性能模式

  • gor --input-file “requests.gor|200%” --output-http “staging.com”

使用流程


核心参数


请求过滤

gor --input-raw :8080 --output-http staging.com \    --http-allow-url /api
gor --input-raw :8080 --output-http staging.com \ --http-disallow-url /api
gor --input-raw :8080 --output-http staging.com \ --http-allow-header api-version:^1.0\d
gor --input-raw :80 --output-http "http://staging.server" \ --http-allow-method GET \ --http-allow-method OPTIONS
复制代码

请求重写

gor --input-raw :8080 --output-http staging.com \    --http-rewrite-url /v1/user/([^\/]+)/ping:/v2/user/$1/ping
gor --input-raw :8080 --output-http staging.com \ --http-set-param api_key=1
gor --input-raw :80 --output-http "http://staging.server" \ --http-header "User-Agent: Replayed by Gor" \ --http-header "Enable-Feature-X: true"
复制代码

经典案例

tcpdump(监听)模式

sudo ./gor --input-raw :8000 --output-stdout --input-raw-track-response sudo ./gor --input-raw :8000 --output-file=requests.gor
复制代码

线上流量同步

sudo ./gor --input-raw :8000 --output-http="http://127.0.0.1:8002"
复制代码

压测

#录制并保存sudo ./gor --input-raw :8000 --output-file=requests.gor#加速回放./gor --input-file "requests_0.gor|1000%" --http-allow-url json  --output-http "http://127.0.0.1:8003"#持续加压./gor --input-file "requests_0.gor|1000%" --http-allow-url json  --output-http "http://127.0.0.1:8003" -input-file-loop
复制代码

总结

  • 利用流量同步实现预发布测试

  • 利用流量回放进行回归测试

  • 利用流量放大进行压力测试

免费领取:测试资料+测试用例+简历模板+测试文档


发布于: 刚刚阅读数: 4
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试学习笔记丨Goreplay流量回放_软件测试_测试人_InfoQ写作社区