51Testing软件测试论坛

标题: 测试小白:靠Jmeter录制摆脱搬运工角色 [打印本页]

作者: lsekfe    时间: 2021-10-21 11:20
标题: 测试小白:靠Jmeter录制摆脱搬运工角色
我们都是搬运工?
  很多接口自动化测试人员都知道,实际上我们进行接口自动化时,大部分人都是依赖于开发维护的接口设计文档,或者是直接使用抓包工具获取需要的接口数据。
  然后再去按照ULR、headers、body进行各种组装请求,将接口的基础配置从文档或者抓包工具复制搬运到到对应的接口自动化工具(例如Postman、Jmeter、Robotframework等)上面进行二次组合,最后再通过工具自身发起接口请求。
  实际上Jmeter自身提供了“录制”的功能,测试人员可以直接通过“录制”自己的一系列操作,然后对录制起来的请求进行二次优化设计,可以大大减少前期的基础编辑的时间。

  前期物料准备
  接口自动化流程和功能测试流程一样,在开始测试之前都需要进行一些物料准备,例如功能测试需要确定测试环境(测试1、测试2或者直接预生产测试)、测试设备(Android系统、ios系统等),对应的今天要实践的接口自动化,需要准备以下物料:
  1.Jmeter工具安装
  2.代码环境
  3.测试系统的账号/密码等信息

  摆脱搬运的神器
  Jmeter的录制功能原理和抓包工具一样,都是通过HTTP代理服务器进行,所以在进行录制之前需要设置代理HTTP(S) Test Script Recorder,主要设置的内容如下:
  1.代理的ip和port,一般ip使用默认的,端口可定义8888(注意浏览器代理端口需要跟Jmeter的保持一致,如下第一图);
  2.设置录制下来的请求保存的路径,选择保存到“测试计划TestPlan-线程组Thread Group”下(如下第一图);
  3.(重点)设置过滤,过滤掉不必要的请求,过滤可选择两种模式:一种是只录制某规则的请求,一直是不录制某规则的请求。
  (如下第二图)。
[attach]134892[/attach]

[attach]134893[/attach]
启动录制:
[attach]134894[/attach]
 项目实战
 录制数据
[attach]134895[/attach]
去除多余数据
去除不必要的接口请求,仅保留本次自动化的目的的接口:登录+获取XX详情页数据。
[attach]134896[/attach]
优化脚本
1.优化HTTP Header Manager
  Jmeter脚本录制成功后,每个HTTP请求下都会自动带一个默认的HTTP信息头管理器,但是很多数据实际接口需要的信息头是通用的且只需要两个字段就可以,所以优化前后对比如下:
[attach]134897[/attach]
优化完后,将该管理器移动到线程组同一级别,这样该测试计划下的所有请求可共用一个信息头管理器HTTP Header Manager。

  2.处理接口依赖
由于录制时,打开XX详情页需要依赖于登录信息,所以需要在回放脚本前需要手动处理接口上下依赖的登录信息。
  本文案例的依赖有两个,子系统的登录依赖于主系统登录成功返回的token,而打开XX详情页接口依赖于子系统登录成功返回的token,所以需要分别通过jemter自带的后置处理器提取登录成功的信息。

  2.1主系统和子系统登录依赖:
 i.使用后置处理器Regular Expression Extractor通过正则表达式提取Token;
  ii.在下一个接口中直接引用提取的Token变量。

  2.2引用HTTP Cookie Manager统一管理子系统下的接口请求:
子系统登录成功后,接下来子系统内的所有请求均使用同一个登录信息,所以可引用HTTP Cookie Manager统一管理。
  接口之间的依赖处理详细如下图:









欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2