HTTP引流神器GoReplay的安装及使用
itomcoil 2025-04-01 19:01 13 浏览
背景
校验系统的正确性和可靠性时,仅靠用例场景无法覆盖全生产环境下的所有场景,需要一套引流工具,在系统正式上线前用线上的请求测试待上线系统,在正常请求下了解是否有报错、在数倍请求下了解系统的性能瓶颈。常用的引流工具有GoReplay、tcpcopy等。
猪齿鱼效能平台自动化测试模块流量回归测试功能,主要使用GoReplay录制产品界面中的操作产生的HTTP请求及响应用于生成流量文件,然后将其导入Choerodon平台生成用例进行管理与执行。本文通过GoReplay的介绍及GoReplay在猪齿鱼效能平台中的实践,帮助大家理解猪齿鱼流量回归测试的概念及使用。
关于GoReplay
GoReplay,原名叫gor,因为其易上手,且功能比较全所以我们使用GoReplay进行流量录制。GoReplay是在投入生产之前使用真实流量测试应用程序最简单和最安全的方式。
随着应用程序的增长,测试所需的工作量也呈指数增长。GoReplay提供了重复使用现有流量进行测试的简单想法,这使得它非常强大。可以分析和记录应用程序流量,且不影响应用,消除了将第三方组件置于关键路径中带来的风险。
GoReplay的安装
1. 下载地址:
https://github.com/buger/goreplay/releases
2. 在环境中输入指令:
--wget https://github.com/buger/goreplay/releases/download/v1.1.0/gor_1.1.0_x64.tar.gz
这样我们就能获取到gor_1.1.0_x64.tar.gz压缩文件。
3. 然后对其解压输入指令:
--tar vxf gor_1.1.0_x64.tar.gz
文件解压过分我们得到了一个gor文件;我们将gor文件移动到path环境下,这样我们就可以使用gor命令进行流量录制了。
GoRePlay的基本指令
- --input-raw- 用于捕获HTTP流量,您应该指定IP地址或接口和应用程序端口。
- --input-file- 接受之前使用的文件--output-file。
- --input-tcp- 如果您决定将来自多个转发器GoReplay实例的流量转发给它,则由GoReplay聚合实例使用。
可用输出:
- --output-http- 重放HTTP流量到给定的端点,接受基础URL。
- --output-file- 记录传入的流量到文件。
- --output-tcp- 将传入数据转发给另一个GoReplay实例。
- --output-stdout- 用于调试,输出所有数据到stdout。
GorePlay在猪齿鱼效能平台中的实践
1.录制流量
1.1 首先我们先在服务器中安装Gor_1.1.0;
1.2 然后输入命令以下命令:
sudo nohup gor --input-raw :8080 \ # 监听服务的端口(默认网关的端口为8080) -http-allow-method GET \ # 只录制GET,POST,PUT,DELETE四种方法的请求 -http-allow-method POST
-http-allow-method PUT
-http-allow-method DELETE
-input-raw-track-response \ # 捕获响应报文 -input-raw-timestamp-type PCAP_TSTAMP_HOST \ # 指定时间戳格式 -input-raw-buffer-size 32mb \ # 控制用于持有TCP包的系统缓存大小 -prettify-http \ # 自动解码 Content-Encoding:gzip 和 Transfer-Encoding:chunked的请求和响应 -output-file-append \ # 追加到文件,使得最终只生成一个.gor文件 -output-file requests.gor & # 指定结果文件名称。
这些命令的含义是监听服务的端口并开始录制指定的请求类型的请求,例如这里录制的请求类型是:GET,PSOT,PUT和DELETE。捕获响应报文并把这些请求追加到文件,像这里生成的文件名叫“requests.gor”。
1.3 在命令执行后,输出如下:
这里显示的【1】19436是GoReplay程序的进程PID,在我们录制完成后可以利用此PID进行终止GoReplay。
1.4 这时GoReplay已经开始进行流量录制了,此时测试人员可以开始在被测系统进行测试,此段时间的测试发出的请求会被录制。
测试人员在正式录制相关的功能之前,建议刷新页面以请求 self 接口获取当前用户信息,这个接口的响应便于之后导入流量文件时解析用例,如果既没有录制到 self 接口,也没有在导入时提供用户信息获取接口,则无法解析请求所属用户、请求生成的用例也将被忽略。
1.5 在录制一段时间的流量后,我们执行以下命令终止GoReplay的录制输入一下命令:
sudo kill -15 ${gor进程PID}
像我们这里的输入sudo kill -15 ${19436}命令就可以终止gor进程。
1.6 此时,可以看到执行录制指令的目录下,得到一份文件名为 requests.gor 的流量文件。到此,录制完毕。
2.导入流量文件
2.1 我们进入猪齿鱼流量回归测试页面:
2.2 点击流量回归测试右上方的导入流量文件,进入流量导入界面:
2.3 选择用于放置生成用例的目录,我们这里选择的是测试合集目录,点击上传按钮,上传我们刚才录制的requests.gor文件,确定上传文件后,下方会立刻生成一条文件的导入记录。
如果导入用例为0条,可能有以下原因: ①录制期间,被测系统未关闭主键加密功能; ②录制期间,未请求 self 接口获取用户信息,且导入时未提供用户信息获取接口; ③提供用户信息获取接口,但是录制的流量文件时间过长,超过了用户的 Token 过期时间,导致流量文件中涉及到的请求的认证信息已经过期了,无法识别用户,所以无法生成用例; ④所有的请求都不是 json 类型的请求 ⑤所有的请求的方法都不是 GET、POST、PUT或DELETE。
2.4 待文件导入成功后,所选的目录下将会生成对应的用例。列表中会展示各个用例对应的路径、请求方式、菜单、用户以及请求时间。
- 路径:即用例中请求的路径。
- 请求方式:即用例中请求的请求方式。
- 菜单:即用例中对应请求所属的菜单。
- 用户:即在录制过程中,执行此次请求的用户名。
- 请求时间:即录制过程中,该请求对应的执行时间。
3.用例批量处理
3.1 由于我们通过导入流量文件得到的用例内,各个请求使用的ID参数在之后的执行过程中会产生变化。因此我们需要通过用例批量处理的功能将用例内各个请求路径、请求参数、请求体中的ID参数替换为变量。
在此之前,我们还需要选择一个POST类型的请求,将其响应体中生成的ID作为变量提取出来,以供后续的用例进行引用。
首先在页面左侧的树结构内选中一个流量回归集合,而后点击顶部的用例批量处理按钮,右侧会出现批量处理的页面。
3.2 使用搜索栏进行用例筛选,支持的搜索方式有:
- 输入搜索条件查询:可搜索任意内容,下方的列表中将会显示出路径、请求与响应中含有搜索值的对应用例。
- 快速筛选:预置的快速筛选为含数值用例,可直接搜索出路径、请求与响应中含有数值的所有用例,用于帮助进一步缩小ID查询范围。同时,保存的自定义筛选条件也将存放到快速筛选的下拉框中。
- 请求方式筛选:允许筛出GET、POST、PUT与DELETE类型的用例请求。
- 用例状态筛选:支持筛选出处理完成或未处理状态的用例请求。
- 正则筛选:支持使用正则表达式来筛选出满足条件的用例请求。
- 目录筛选:支持筛选出各个目录下的用例请求。
- 菜单筛选:支持筛选出对应菜单下的用例请求。
- 具体字段:用于指定搜索值的定位生效区域。支持定位到:路径、请求头、请求参数、请求体、响应头与响应体。
3.3 提取页面中的变量,在此界面中,需要将生成ID的用例请求找到,并将其响应体中的ID参数作为变量提取出来。具体步骤如下:
(1) 通过搜索栏中的各个选项定位到目标用例。
- 此处的一般步骤为: - 在快速筛选的搜索栏中选择含数值用例,先筛出所有含有数值的用例。 - 在具体字段中,选择为:POST,以筛出目标用例。 - 选择想要处理的功能块所在的菜单,或在搜索条件中输入相关内容,来进一步缩小搜索的范围。 - 最后,在筛出的用例请求中逐一找出目标用例。
(2) 勾选出一个目标用例,点击下方的添加变量提取的按钮,右侧会弹出变量提取的界面。
- 选择提取的来源:一般为响应体JSON,此处需根据提取的目标变量的位置与格式而定;支持选择响应体JSON、响应体XML、响应体文本与响应头。
- 输入变量名称:此处输入的变量名称,会作为后续用例引用的变量。
- 选择器:需通过选择器定位到提取的变量所在的位置。
变量提取成功后,还需要对请求中使用了ID参数的用例进行批量的ID替换,将其替换为提取出的变量。使用此功能,可以批量地将可以配置的参数提取为变量,例如提取请求中常见的项目ID、租户ID或者其它的资源ID。
O 值替换功能:
o 选择替换区域:支持选择路径、请求参数、请求头、请求体、响应头、响应体;用于定位所有选中的用例需要进行替换的具体区域。
o 输入源值:即之前的ID参数的准确值。后续会将这个ID数值替换为已经提取出的变量。
o 输入替换值:在此输入需要引用的变量即可。
例:之前提取出的变量名称为id,此处就输入:${id}
O 用例状态替换:直接在下拉框中选择需要将所选的用例请求变为的目标状态;对于已经处理完成的用例请求,直接批量将其置为处理完成的状态即可。回到列表之后,这些用例的状态就变为了处理完成。
总结
猪齿鱼全场景效能平台流量回归测试通过GoReplay批量录制产品界面操作,并将得到的用例进行集中管理,便于后续进行批量的回归测试,从很大程度上减轻了测试人员编写脚本、收集测试数据等重复且耗时的工作,提升团队的测试效能。
灵魂拷问环节:
不知道大家平时都用哪个引流工具来做流量回归测试呢?小编亲测使用GoRepaly这款引流神器不但提高了回归测试的效率,还极大的提高了新功能发布的信心。欢迎大家一起来交流。
相关推荐
- PS小技巧 调整命令,让人物肤色变得更加白皙 #后期修图
-
我们来看一下如何去将人物的皮肤变得更加的白皙。·首先选中图层,Ctrl键加J键复制一层。·打开这里的属性面板,选择快速操作删除背景,这样就会将人物进行单独的抠取。·接下来在上方去添加一个黑白调整图层,...
- 把人物肤色提亮的方法和技巧
-
PS后期调白肤色提亮照片的方法。一白遮百丑,所以对于Photoshop后期来说把人物肤色调白是一项非常重要的任务。就拿这张素材图片来说,这张素材图片人脸的肤色主要偏红、偏黄,也不够白皙,该怎样对它进行...
- 《Photoshop教程》把美女图片调成清爽色彩及润肤技巧
-
关注PS精品教程,每天不断更新~~室内人物图片一般会偏暗,人物脸部、肤色及背景会出现一些杂点。处理之前需要认真的给人物磨皮及美白,然后再整体润色。最终效果原图一、用修补工具及图章工具简单去除大一点的黑...
- PS后期对皮肤进行美白的技巧
-
PS后期进行皮肤美白的技巧。PS后期对皮肤进行美白的技巧:·打开素材图片之后直接复制原图。·接下来直接点击上方的图像,选择应用图像命令。·在通道这里直接选择红通道,混合这里直接选择柔光,然后点击确定。...
- 493 [PS调色]调模特通透肤色
-
效果对比:效果图吧:1、光位图:2、拍摄参数:·快门:160;光圈:8;ISO:1003、步骤分解图:用曲线调整图层调出基本色调。用可选颜色调整图层调整红色、黄色、白色和灰色4种颜色的混合比例。用色彩...
- 先选肤色再涂面部,卡戴珊的摄影师透露:为明星拍完照后怎么修图
-
据英国媒体12月17日报道,真人秀明星金·卡戴珊终于承认,她把女儿小北P进了家族的圣诞贺卡,怪不得粉丝们都表示这张贺卡照得非常失败。上周,这位39岁的女星遭到了一些粉丝针对这张照片的批评,她于当地时间...
- 如何在PS中运用曲线复制另一张照片的色调
-
怎样把另一张作品的外观感觉,套用到自己的照片上?单靠肉眼来猜,可能很不容易,而来自BenSecret的教学,关键是在PS使用了两个工具,让你可以准确比较两张照片的曝光、色调与饱和度,方便你调整及复制...
- PS在LAB模式下调出水嫩肤色的美女
-
本PS教程主要使用Photoshop使用LAB模式调出水嫩肤色的美女,教程调色比较独特。作者比较注重图片高光部分的颜色,增加质感及肤色调红润等都是在高光区域完成。尤其在Lab模式下,用高光选区调色后图...
- 在Photoshop图像后期处理中如何将人物皮肤处理得白皙通透
-
我们在人像后期处理中,需要将人物皮肤处理的白皙通透,处理方法很多,大多数都喜欢使用曲线、磨皮等进行调整,可以达到亮但是不透,最终效果往往不是很好,今天就教大家一种如何将任务皮肤处理得白皙通透,希望能帮...
- PS调色自学教程:宝宝照片快速调通透,简单实用!
-
PS调色自学教程:宝宝照片快速调通透。·首先复制图层,然后选择进入ACR滤镜,选择曲线锁定照片的亮部,也就高光位置,其他部位补亮一点,尤其是阴影的部位补亮多一些,让画面的层次均匀一点。·然后回到基本项...
- 【干货】如何利用PS进行人物美化
-
人物图像美化在Photoshop中非常常用,Photoshop作为一款功能强大的图像处理软件,不仅可以对人像进行基本的调色、美化和修复等处理,还可以改变人物的线条和幅度,如调整脸部器官和脸型的大小、调...
- 教大家一种可以快速把肤色处理均匀的方法@抖音短视频
-
快速把肤色处理均匀的方法。今天教大家一种可以快速把肤色处理均匀的方法。像这张照片整体肤色走紫红色,但是局部偏黄缘处理起来非常的麻烦。其实我们只需要新建空白图层,图层混合模式更改为颜色,再选择画笔工具把...
- PS调色教程 利用RAW调出干净通透的肤色
-
要么不发,要么干货。后期教程来噜~用RAW调出干净通透的肤色。这次终于不会原片比PS后好看了吧。如果你依然这么觉得,请不要残忍的告诉我这个事实,泪谢TAT)附送拍摄花絮,感谢各位的支持更多风格请关注m...
- photoshop后期皮肤变白的技巧
-
PS后期皮肤变白的技巧。1.PS后期让皮肤变白的方法有很多种,接下来教你一种非常简单容易上手的方法。2.打开素材图片之后,直接在小太极下拉框的位置添加一个纯色调整图层,颜色设置一个纯白色,点击...
- Photoshop调出人物的淡雅粉嫩肤色教程
-
本教程主要使用Photoshop调出人物的淡雅粉嫩肤色教程,最终的效果非常的通透迷人,下面让我们一起来学习.出自:86ps效果图:原图:1、打开原图复制一层。2、用Topaz滤镜磨皮(点此下载)。3、...
- 一周热门
- 最近发表
- 标签列表
-
- ps像素和厘米换算 (32)
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)