【Jmeter】使用Jmeter进行接口测试、跨线程组获取参数

Jmeter接口测试

相信打算从事测试工程师的同学们,肯定对Jmeter是耳熟能详的。使用Jmeter可以进行接口测试、性能测试、压力测试等等;这个章节介绍如何使用Jmeter针对【登录查询图纸组】的相关接口测试。

Jmeter设置成中文

Jmeter语言设置如下,可设置为中文简体

Jmeter首页:打开Jmeter首页默认为下方所示,左侧默认一个"测试计划",点击测试计划,右侧显示如下,一定要勾选上"独立运行每个线程组(例如在一个组运行结束后启动下一个)",不然,比如在登录场景,后面的接口需要获取到登录的令牌token进行验证,点击执行可能会出现一些难以发现的错误,而这些错误其实就是因为执行的顺序出现了错误,导致有些参数获取不到。

实操练习-跨线程组提取参数,使用值

1. 创建一个线程组: 鼠标右击测试计划,选择添加,选择线程,选择线程组


HTTP请求默认值&HTTP信息头管理器

当我们在jmeter上创建多个http的请求时,每个请求都需要重新的在请求里添加协议,端口号和路径等,会重复操作很多次,因此使用jmeter上的http请求默认值可以解决这个麻烦。所有在该请求默认值层级下的HTTP请求都会默认带上这个请求值,于是我们只需要选择每个HTTP的请求方法和路径即可。

2. 创建一个HTTP请求默认值: 表示当前层级下所有HTTP请求都会默认带上这个请求默认值;

操作步骤: 右击测试计划、选择添加、选择配置元件、选择HTTP请求默认值。
Jmeter的作用域: 在测试计划层级下创建一个HTTP请求默认值,表示测试计划层级下的所有HTTP请求都会带上这个默认值,如果该层级下某个HTTP请求填写了协议、域名,那么不会去拿请求默认值里的协议、域名,以自己填写的值为准。类似于全局变量和局部变量的作用域。

  • 字段解释 :以这类接口为例https://www.ceshi.com:8080/auth/password

    1. 协议:即当前接口遵守的是HTTP协议 还是 HTPPS协议,此处填写https
    2. 服务器名称或IP:填写当前接口的前缀域名,那么此处就填写www.ceshi.com
    3. 端口号:没有就不填写,此处可填写8080
    4. 路径:可不填写
    5. 内容编码:可填写utf8

创建一个HTTP信息头管理器: 如果不创建信息头管理器,那么后续的HTTP请求可能就会报错,原因就是HTTP请求里的请求头错误。此操作也是有作用域,Jmeter的每个操作都存在作用域。笔者是在测试计划下创建的信息头管理器,那么意味着所有的HTTP请求都会带上这个请求头内容。


3. 添加一个HTTP请求: 鼠标右击线程组、选择取样器、选择HTTP请求

4. 添加接口路径 :由于在HTTP请求默认值里填写了协议类型和IP,所有后面的HTTP请求我们只能填写请求方法类型和路径;这里的参数是JSON格式的,于是可以选择 "消息体数据"。

{username}、 {password}:是Jmeter的固定语法,用于获取自定义参数、获取从其他接口里提取到的参数;不会Jmeter语法的同学可以搜索自学一下哦~

5. 创建一个自定义参数: 右击HTTP请求,选择添加,选择配置元件,选择用户定义的变量。

名称(变量):即上一步操作写的$ {username} 里的username

值(变量取值):就是username里存放的值。

6. 添加一个查看结果树:可以查看每个HTTP请求的返回内容,根据返回的内容,在下一步里的JSON提取器里填写JSON Path expressions,前提是返回的内容必须是JSON格式的。当然如果不是JSON格式,那么需要使用其他的提取器。

  • 右击测试计划,创建一个"查看结果树",那么所有线程组里的HTTP请求返回的响应都可以在这个结果树里查看。
  • 点击运行,查看结果树内容

6.1 添加一个JSON提取器: 方便后面的查询操作,有权限访问查询接口。右击HTTP请求,选择添加,选择后置处理器吗,选择JSON提取器。

  • 填写提取器里的内容:Names of created variables=token,JSON Path expressions=$.data,Match No. (0 for Random)=1,Defaylt Values=null;关于不会这个Json语法表达式的同学,可以去度娘搜索一下,学习一下~
  • Names of created variables: 自定义一个变量名,把提取到的值存放在这个变量里。可以多个,用分号;进行分隔。
  • JSON Path expressions: 使用JSON语法的表达式,提取值。可以填写多个,要求与变量名数量一致,用分号;进行分隔。
  • Match No. (0 for Random): 表示提取几个值。
    • 此处取值有:0代表随机、-1代表所有,1则代表取值第1个,2则代表取值第2个,以此类推。
  • Compute conxatenation var (suffix_ALL): 该选项如果勾选,则将所有的值用逗号拼接,并保存到一个变量中。注意只有Match NO为-1时该功能打钩才有效果。
  • Defaylt Values: 当提取不到值时,返回一个默认值,用户自定义,可以多个,注意当变量名为多个时,默认值也要求多个。

Apply to:作用范围(返回内容的取值范围)

  • Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器。

  • Main sample only:仅作用于父节点的取样器。(选默认的 main sample only 就行了)

  • Sub-samples only:仅作用于子节点的取样器。

  • JMeter Variable Name to use:作用于JMeter变量(输入框内可输入JMeter的变量名称),从指定变量中提取需要的值。

  • 和JSON提取器配套使用的操作有:调试取样器。右击当前的线程组,选择添加,选择取样器,选择Debug Sampler,可以在结果树里查看这个调试取样器的结果,方便查看JSON提取器提取到的值是否正确

  1. 添加一个BeanShell 后置处理程序,用于跨线程组获取参数值


  • 生成一个函数
  • 把函数字符串复制到BeanShell 后置处理程序里
  1. 设置一个断言:在对应的HTTP请求下,右击,选择添加, 选择断言,选择响应断言,添加测试模式(可以填写这个HTTP请求响应里的内容,一般填写code:200和msg:成功)
  1. 重复前面的创建线程组的步骤,在该线程组下创建一个HTTP请求用来操作查询图纸

10.在HTTP请求下,创建一个HTTP信息头管理器:右击HTTP请求,选择添加,选择配置元件,选择HTTP信息头管理器

  • 点击函数助手,选择property,此处的Name of Property填写BeanShell 后置处理程序的Name of Property,点击生成,最后把函数字符串复制下来。
  • 在刚才第10步创建的HTTP信息头管理器里新增一条信息:
  1. 最后点击运行,查看结果树,发现可以提取参数值,跨线程组使用这个值
相关推荐
deli0070078 小时前
正则表达式可视化测试工具:输入即匹配,高亮一目了然
git·测试工具·正则表达式
测试19981 天前
接口自动化测试的全面解析与实战指南
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
川石课堂软件测试1 天前
自动化测试常见的异常处理
python·jmeter·mysql·docker·容器·单元测试·grafana
YakProject1 天前
如何让 AI Agent 跑得更快???
人工智能·测试工具·网络安全·agent·yakit·yaklang
wuhuhuan2 天前
JMeter 性能测试教程
jmeter
测试19982 天前
Selenium 无法定位元素的几种解决方案
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
慧都小项2 天前
夜间Web回归跑到一半停了?TestComplete 15.83提升批量测试稳定性
前端·测试工具·数据挖掘·回归·汽车·web
Luminbox紫创测控2 天前
汽车前照灯阳光灼烧:光学热仿真与太阳光模拟器验证
人工智能·测试工具·汽车·安全性测试·测试标准
东莞市奥普新音频技术有限公司2 天前
国产音频分析仪怎么选?从性能参数、测试软件到自动化能力
人工智能·科技·测试工具·自动化·音视频·音频
flower_drop2 天前
测试 Android,不必再在 ADB、投屏、日志之间来回切换
测试工具