在也不用 Mock 数据测试了!直接 COPY 线上流量岂不美哉 !分流神器 — Goreplay 「你值得拥有,炸墙推荐」

Posted 魏小言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在也不用 Mock 数据测试了!直接 COPY 线上流量岂不美哉 !分流神器 — Goreplay 「你值得拥有,炸墙推荐」相关的知识,希望对你有一定的参考价值。

背景

  在模块开发阶段完成后,进入到测试阶段,一般是 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 ,更多细节可以参见官方文档

附录

软件生产,沟通成本是最大的!

以上是关于在也不用 Mock 数据测试了!直接 COPY 线上流量岂不美哉 !分流神器 — Goreplay 「你值得拥有,炸墙推荐」的主要内容,如果未能解决你的问题,请参考以下文章

【Mock.js】前端模拟假数据,不用在手拼了

fiddler-10-结合 Mock.js 伪接口数据进行测试(下)

单元测试之Mock(Moq)

理解Linux文档的默认安全机制隐藏属性特殊权限,妈妈在也不用担心你从删库到跑路!!!

接口测试---mock变量自定义变量的使用

理解Linux文档的默认安全机制隐藏属性特殊权限,妈妈在也不用担心你从删库到跑路!!!