【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. 最后点击运行,查看结果树,发现可以提取参数值,跨线程组使用这个值
相关推荐
小张认为的测试21 分钟前
Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表
linux·服务器·测试工具·自动化·php·excel·压力测试
字节程序员2 小时前
Jmeter分布式压力测试
分布式·jmeter·压力测试
美团测试工程师13 小时前
九大高效的前端测试工具与框架
软件测试·测试工具·jmeter
小白学大数据14 小时前
如何使用Selenium处理JavaScript动态加载的内容?
大数据·javascript·爬虫·selenium·测试工具
weixin_4193497914 小时前
selenium 报错 invalid argument: invalid locator
selenium·测试工具
程序猿000001号14 小时前
Selenium 深度解析:自动化浏览器操作的利器
selenium·测试工具·自动化
love静思冥想16 小时前
JMeter 使用详解
java·jmeter
Blankspace学1 天前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
低调之人1 天前
Fiddler勾选https后google浏览器网页访问不可用
前端·测试工具·https·fiddler·hsts
测试老哥1 天前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例