文章目录
-
- 背景
- Goreplay 介绍
- 实操过程
-
- 安装
- 执行
- 命令解释
- Q&A
- 附录
背景
??在模块开发阶段完成后,进入到测试阶段,一般是 QA 同学通过设计各种逻辑场景 CASE 进行测试。但在一些比较核心的模块测试中,尤其是新模块,单单仅靠 QA 人工 CASE 是远远不够的。
在验证系统的正确性和可靠性上,无法全面覆盖生产环境中的所有场景!
??那么如何模拟线上全部场景呢?
最简单的做法就是 Mock 一份和线上一致的请求做测试。
??有些公司通过搭建预览机 或 DEV 环境,上线前做全流量的回归测试处理。那没有这样的环境该如何是好呢?
??下面推荐分享一款强悍的引流工具 —— Goreplay !
Goreplay 介绍
??Goreplay 原名是 Gor ,是一款引流工具,提供了重复使用现有流量进行测试的方法。
??Goreplay 通过监听服务端口进行 http 流量的捕获,进而进行转发或重放。其工作流图如下
??下面我们已简单的实操来介绍具体使用,详细深层介绍见官方文档
实操过程
安装
wget https://github.com/buger/goreplay/releases/download/v0.16.1/gor_0.16.1_x64.tar.gz
tar xvf gor_0.16.1_x64.tar.gz //解压
执行
??进入到 goreplay 目录下,执行命令即可。
sudo /tmp/goreplay --input-raw “:8083” --output-file ~/tmp/file
命令解释
可用输入:
- –input-raw - 用于捕获HTTP流量,您应该指定IP地址或接口和应用程序端口。有关捕获和重放流量的更多信息。
- –input-file- 接受之前使用的文件–output-file。更多关于保存和从文件重播
- –input-tcp - 如果您决定将来自多个转发器Gor实例的流量转发给它,则由Gor聚合实例使用。阅读关于使用Aggregator-forwarder设置。
可用输出: - –output-http - 重放HTTP流量到给定的端点,接受基础URL。阅读[关于它的更多信息](重播HTTP流量)
- –output-file - 记录传入的流量到文件。更多关于保存和从文件重播
- –output-tcp- 将传入数据转发给另一个Gor实例,并与其一起使用–input-tcp。阅读关于Aggregator-forwarder设置的更多信息。
- –output-stdout - 用于调试,输出所有数据到stdout。
Q&A
1、Goreplay 可以进行流量转发吗?转发的话就不需要保存文件了吧!
对,Goreplay 支持直接将流量进行转发至多个 API ,不需要进行文件缓存;文件缓存用于数据需要进一步手动处理时采用
2、Goreplay 可以进行流量过滤吗?测试用本地跑,线上流量太大,机器扛不住!
可以,Goreplay 支持流量限速、流量过滤策略,可以根据实际场景进行调整
3、…
本文只是以常用的实操分享 Goreplay ,更多细节可以参见官方文档
附录
软件生产,沟通成本是最大的!