当前位置: 首页 > Web前端 > HTML

引流工具GoReplay简介和在猪齿鱼效能平台中的应用

时间:2023-04-02 18:27:13 HTML

引流工具GoReplay介绍及其在蛇齿鱼性能平台的应用系统正式上线前,通过在线请求对待上线系统进行测试,检查正常请求下是否有错误,了解系统的性能瓶颈系统在多个请求下。常用的引流工具有GoReplay、tcpcopy等,猪牙鱼性能平台自动测试模块的流量回归测试功能主要使用GoReplay记录产品界面中操作产生的HTTP请求和响应,生成流量文件,然后将它们导入Choerodon平台,生成用例进行管理和执行。本文通过GoReplay的介绍和GoReplay在牙鱼性能平台的实践,帮助大家理解牙鱼的流回归测试的概念和使用。关于GoReplayGoReplay,原名gor,简单易用,功能齐全,所以我们用GoReplay来做路况记录。GoReplay是在投入生产之前用真实流量测试您的应用程序的最简单和最安全的方法。随着应用程序的增长,测试所需的工作量呈指数增长。GoReplay提供了复用现有流量进行测试的简单思想,这使得它非常强大。可以在不影响应用程序的情况下分析和记录应用程序流量,从而消除将第三方组件置于关键路径中的风险。GoReplay工作原理框图:GoReplay安装下载地址:https://github.com/buger/goreplay/releases在环境中输入命令:--wgethttps://github.com/buger/goreplay/releases/download/v1.1.0/gor_1.1.0_x64.tar.gz这样我们就可以得到gor_1.1.0_x64.tar.gz压缩包。然后解压,输入命令:--tarvxfgor_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-用于调试,将所有数据输出到标准输出。GoReplay在猪齿鱼表演平台的实践1、记录流量1.1首先,我们先在服务器中安装Gor_1.1.0;默认网关的端口是8080)-http-allow-methodGET\#只记录GET、POST、PUT、DELETE四种方法的请求-http-allow-methodPOST\-http-allow-methodPUT\-http-allow-methodDELETE\-input-raw-track-response\#捕获响应消息-input-raw-timestamp-typePCAP_TSTAMP_HOST\#指定时间戳格式-input-raw-buffer-size32mb\#用于保存TCP包的控件systemcachesize-prettify-http\#自动解码Content-Encoding:gzip和Transfer-Encoding:chunkedrequestsandresponses-output-file-append\#附加到文件,这样最后只生成一个.gor文件-output-filerequests.gor&#指定结果文件名。这些命令的意思是监听服务的端口,开始记录指定的请求类型。比如这里记录的请求类型有:GET、PSOT、PUT和DELETE。捕获响应消息并将这些请求附加到文件中,例如此处生成的文件称为“requests.gor”。1.3命令执行后输出结果如下:[1]这里显示的19436是GoReplay程序的进程PID。录制完成后,我们可以使用这个PID来终止GoReplay。1.4此时GoReplay已经开始记录流量。这时候测试人员就可以开始对被测系统进行测试了,测试期间发送的请求都会被记录下来。在正式录制相关功能之前,建议测试者刷新页面请求自接口获取当前用户信息。该接口的响应方便后面导入流量文件时解析用例。如果导入时既没有记录self接口,也没有提供用户如果没有使用信息获取接口,则无法解析请求所属的用户,请求产生的用例也会被忽略。1.5录制一段时间流量后,我们执行以下命令终止GoReplay的录制。输入命令:sudokill-15${gor`processPID}`就像我们输入的sudokill-15${19436}来终止gor进程。1.6此时可以看到在执行记录命令的目录下,得到了一个名为requests.gor的流量文件。至此,录制完成。2.导入流量文件2.1我们进入猪齿鱼流量回归测试页面:2.2点击流量回归测试右上角的导入流量文件,进入流量导入界面:2.3选择放置生成用例的目录,我们选择testcollectionhere目录,点击上传按钮,上传我们刚刚录制的requests.gor文件。确认上传文件后,下方会立即生成文件导入记录。如果导入用例为0,可能有以下原因:①__在记录期间,被测系统没有关闭主密钥加密功能;②__备案期间未请求自接口获取用户信息,导入时未提供用户信息获取接口;③__提供获取用户信息的接口,但是记录的流量文件过长,超过了用户Token的过期时间,导致流量文件中涉及的请求的认证信息过期,无法识别用户,因此无法生成用例;④__所有的请求都不是json类型的请求⑤__所有的请求方式都不是GET、POST、PUT、DELETE。2.4文件导入成功后,会在选择的目录下生成对应的用例。列表中显示了每个用例对应的路径、请求方式、菜单、用户、请求时间。路径:用例中请求的路径。请求方法:用例中请求的请求方法。菜单:用例中对应的请求所属的菜单。User:录制过程中执行该请求的用户名。请求时间:录制过程中请求对应的执行时间。3.批量处理用例3.1由于导入流量文件得到的用例,每次请求使用的ID参数在后续执行过程中会发生变化。因此,我们需要通过用例批处理功能,将请求体中的各个请求路径、请求参数、ID参数替换成变量。在此之前,我们还需要选择一个POST类型的请求,将响应体中生成的ID提取出来作为变量,供后续用例参考。首先在页面左侧的树形结构中选择一个流量回归集合,然后点击最上方的用例批处理按钮,右侧会出现批处理页面。3.2使用搜索栏过滤用例。支持的搜索方式有:Entersearchcriteriaquery:你可以搜索任意内容,下面的列表会显示路径、请求、响应中包含搜索值的对应用例。快速过滤器:预设的快速过滤器是一个包含值的用例,可以直接搜索路径、请求、响应中所有包含值的用例,用于帮助进一步缩小ID查询的范围。同时,保存的自定义过滤条件也会存储在快速过滤的下拉框中。请求方法过滤:允许过滤掉GET、POST、PUT和DELETE类型的用例请求。用例状态过滤:支持过滤掉已处理或未处理的用例请求。正则过滤器:支持使用正则表达式过滤掉符合条件的用例请求。目录过滤:支持过滤出每个目录下的用例请求。菜单过滤:支持过滤出相应菜单下的用例请求。特定字段:用于指定搜索值的定位有效区域。支持定位:路径、请求头、请求参数、请求体、响应头、响应体。3.3提取页面中的变量。在该接口中,需要找到生成ID的用例请求,将响应体中的ID参数提取为变量。具体步骤如下:通过搜索栏中的各个选项定位目标用例。这里的大致步骤是:-在快速过滤器的搜索栏中选择包含数值的用例,首先过滤掉所有包含数值的用例。-在特定字段中,选择as:POST以过滤出目标用例。-选择要处理的功能块所在的菜单,或在搜索条件中输入相关内容,进一步缩小搜索范围。-最后,从过滤后的用例请求中逐一找到目标用例。勾选一个目标用例,点击下方添加变量抽取按钮,右侧会弹出变量抽取界面。选择提取的来源:通常是响应体JSON,这里取决于提取的目标变量的位置和格式;支持选择响应体JSON、响应体XML、响应体文本和响应头。输入变量名:此处输入的变量名将作为后续用例引用的变量。选择器:需要使用选择器来定位提取变量的位置。变量提取成功后,需要对请求中使用ID参数的用例进行批量ID替换,替换为提取的变量。使用该功能,可以批量提取可配置的参数作为变量,例如提取请求中常见的项目ID、租户ID或其他资源ID。值替换功能:选择替换区域:支持选择路径、请求参数、请求头、请求体、响应头、响应体;它用于为所有选定的用例定位需要替换的特定区域。输入源值:前一个ID参数的准确值。稍后,此ID值将替换为提取的变量。输入替换值:在这里输入需要引用的变量即可。示例:之前提取的变量名是id,这里输入:${id}用例状态替换:直接在下拉框中选择需要更改所选用例请求的目标状态;对于已经处理完的用例请求,直接设置为批量处理完成状态。返回列表后,这些用例的状态变为处理完成。小结猪齿鱼全场景性能平台的流量回归测试,使用GoReplay批量记录产品界面操作,对获取的用例进行集中管理,方便后续批量回归测试,大大减少了测试人员编写脚本的需求并收集测试数据等重复且耗时的任务,以提高团队的测试效率。参考资料https://www.cnblogs.com/sunsky303/p/9072871.htmlhttps://blog.csdn.net/xqtesting/article/details/109722583本文由猪齿鱼技术团队原创,转载请注明出处转载:Choerodon官网关于ChoerodonChoerodon提供系统的方法论和协作、测试、DevOps和容器工具,帮助企业一站式打通需求、设计、开发、部署、测试和运营流程,提升管理效率和质量。从团队协作到DevOps工具链,从平台工具到系统化方法论,Hogtooth充分满足协同管理和工程效率需求,贯穿端到端全流程,帮助团队执行得更快、更强、更稳.单击此处尝试牙鱼