自动化测试系列(四)流量回归测试

x33g5p2x  于2021-12-09 转载在 其他  
字(3.1k)|赞(0)|评价(0)|浏览(360)


校验系统的正确性和可靠性时,仅靠用例场景无法覆盖全生产环境下的所有场景,需要一套引流工具,在系统正式上线前用线上的请求测试待上线系统,在正常请求下了解是否有报错、在数倍请求下了解系统的性能瓶颈。

背景

校验系统的正确性和可靠性时,仅靠用例场景无法覆盖全生产环境下的所有场景,需要一套引流工具,在系统正式上线前用线上的请求测试待上线系统,在正常请求下了解是否有报错、在数倍请求下了解系统的性能瓶颈。常用的引流工具有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压缩文件,。

  1. 然后对其解压输入指令:

--tar vxf gor_1.1.0_x64.tar.gz

文件解压过分我们得到了一个gor文件;我们将gor文件移动到path环境下,这样我们就可以使用gor命令进行流量录制了。

GoReplay的基本指令

  • --input-raw - 用于捕获HTTP流量,您应该指定IP地址或接口和应用程序端口。
  • --input-file- 接受之前使用的文件--output-file
  • --input-tcp - 如果您决定将来自多个转发器Gor实例的流量转发给它,则由Gor聚合实例使用。

可用输出:

  • --output-http - 重放HTTP流量到给定的端点,接受基础URL。
  • --output-file - 记录传入的流量到文件。
  • --output-tcp- 将传入数据转发给另一个Gor实例。
  • --output-stdout - 用于调试,输出所有数据到stdout。

GoReplay在猪齿鱼平台的实践

1. 录制流量

1.1 首先我们先在服务器中安装Gor_1.1.0

1.2 然后输入命令以下命令:

这些命令的含义是监听服务的端口并开始录制指定的请求类型的请求,例如这里录制的请求类型是:GET,PSOT,PUT和DELETE。捕获响应报文并把这些请求追加到文件,像这里生成的文件名叫“requests.gor”。

1.3 在命令执行后,输出如下:

这里显示的【1】19436是gor程序的进程PID,在我们录制完成后可以利用此PID进行终止gor。

1.4 这时gor已经开始进行流量录制了,此时测试人员可以开始在被测系统进行测试,此段时间的测试发出的请求会被录制。

1.5 在录制一段时间的流量后,我们执行以下命令终止gor的录制输入一下命令:

sudo kill -15 ${gor进程PID}

像我们这里的输入sudo kill -15 ${19436}命令就可以终止gor进程。

1.6 此时,可以看到执行录制指令的目录下,得到一份文件名为 requests.gor 的流量文件。到此,录制完毕。

2.导入流量文件

2.1 我们进入猪齿鱼流量回归测试页面:

2.2 点击流量回归测试右上方的导入流量文件,进入流量导入界面:

2.3选择选择用于放置生成用例的目录,我们这里选择的是测试合集目录,点击上传按钮,上传我们刚才录制的requests.gor文件,确定上传文件后,下方会立刻生成一条文件的导入记录。

2.4 待文件导入成功后,所选的目录下将会生成对应的用例。列表中会展示各个用例对应的路径、请求方式、菜单、用户以及请求时间。

  • 路径:即用例中请求的路径。
  • 请求方式:即用例中请求的请求方式。
  • 菜单:即用例中对应请求所属的菜单。
  • 用户:即在录制过程中,执行此次请求的用户名。
  • 请求时间:即录制过程中,该请求对应的执行时间。

3.用例批量处理

3.1 由于我们通过导入流量文件得到的用例内,各个请求使用的ID参数在之后的执行过程中会产生变化。因此我们需要通过用例批量处理的功能将用例内各个请求路径、请求参数、请求体中的ID参数替换为变量。

在此之前,我们还需要选择一个POST类型的请求,将其响应体中生成的ID作为变量提取出来,以供后续的用例进行引用。

首先在页面左侧的树结构内选中一个流量回归集合,而后点击顶部的用例批量处理按钮,右侧会出现批量处理的页面。

3.2使用搜索栏进行用例筛选,支持的搜索方式有:

  • 输入搜索条件查询:可搜索任意内容,下方的列表中将会显示出路径、请求与响应中含有搜索值的对应用例。
  • 快速筛选:预置的快速筛选为含数值用例,可直接搜索出路径、请求与响应中含有数值的所有用例,用于帮助进一步缩小ID查询范围。同时,保存的自定义筛选条件也将存放到快速筛选的下拉框中。
  • 请求方式筛选:允许筛出GET、POST、PUT与DELETE类型的用例请求。
  • 用例状态筛选:支持筛选出处理完成未处理状态的用例请求。
  • 正则筛选:支持使用正则表达式来筛选出满足条件的用例请求。
  • 目录筛选:支持筛选出各个目录下的用例请求。
  • 菜单筛选:支持筛选出对应菜单下的用例请求。
  • 具体字段:用于指定搜索值的定位生效区域。支持定位到:路径、请求头、请求参数、请求体、响应头与响应体。

3.3提取页面中的变量,在此界面中,需要将生成ID的用例请求找到,并将其响应体中的ID参数作为变量提取出来。具体步骤如下:

​ 1.通过搜索栏中的各个选项定位到目标用例。

​ 2.勾选出一个目标用例,点击下方的添加变量提取的按钮,右侧会弹出变量提取的界面。

变量提取成功后,还需要对请求中使用了ID参数的用例进行批量的ID替换,将其替换为提取出的变量。 使用此功能,可以批量地将可以配置的参数提取为变量,例如提取请求中常见的项目ID、租户ID或者其它的资源ID。

  • 值替换功能:

  • 选择替换区域:支持选择路径、请求参数、请求头、请求体、响应头、响应体;用于定位所有选中的用例需要进行替换的具体区域。

  • 输入源值:即之前的ID参数的准确值。后续会将这个ID数值替换为已经提取出的变量。

  • 输入替换值:在此输入需要引用的变量即可。

  • 用例状态替换:直接在下拉框中选择需要将所选的用例请求变为的目标状态;对于已经处理完成的用例请求,直接批量将其置为处理完成的状态即可。回到列表之后,这些用例的状态就变为了处理完成

总结

猪齿鱼全场景效能平台流量回归测试通过GoReplay批量录制产品界面操作,并将得到的用例进行集中管理,便于后续进行批量的回归测试,从很大程度上减轻了测试人员编写脚本、收集测试数据等重复且耗时的工作,提升团队的测试效能。

参考资料

本文由猪齿鱼技术团队原创,转载请注明出处

相关文章