JMeter扩展Java请求
本文将通过WebRTC本地音视频流压测脚本,来说明JMeter如何扩展Java请求。
本文将通过WebRTC本地音视频流压测脚本,来说明JMeter如何扩展Java请求。
JMeter断言用来对服务器的响应数据进行验证,其中的响应断言基本能完成大多数的验证工作,但是JMeter还是提供了适用于多个不同场景的断言元件,一共16个,如下图所示:
JMeter定时器一般用来设置延迟与同步。它的作用域和优先级如下:
JMeter逻辑控制器可以对元件的执行逻辑进行控制,就像编程一样,实现业务需求。
JMeter内置了36个函数,这些函数可以通过函数助手进行编辑和测试。了解这些函数,不仅能提高JMeter的使用熟练度,也有助于知晓测试工具或测试框架通用的函数有哪些,在自主设计时,作为参考借鉴。
JMeter参数化是指把固定的数据动态化,这样更贴合实际的模拟用户请求,比如模拟多个不同账号。JMeter一共有四种参数化方式,分别是:
本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 JMeter关联是什么 JMeter关联,这几个字看着可能会有点陌生,实际上却是工作中经常会做的一件事情,尤其是接口自动化,它指的是把一个接口的响应作为另一个接口的参数,从而把接口关联起来。 JMeter关联是通过后置处理器来实现的,本文将介绍两个主流提取器:正则表达式提取器和JSON JMESPath提取器。 正则表达式提取器 Name 最好有业务含义的名称。 Comments 可以为空的注释。 Apply to 匹配范围。 Main sample and sub-samples 匹配当前父取样器及其子取样器。 Main sample only 仅匹配当前父取样器。 Sub-samples only 仅匹配子取样器。 JMeter Variable Name to use 匹配JMeter变量。 Field to check 匹配响应的字段,共七个选项。 Body:主体,最常用。 Body(unescaped) :替换了所有的html转义符的响应主体内容,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用。 Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能。 Response Headers:响应Headers。 Request Headers:请求Headers。 URL:请求URL。 Response Code:响应代码,比如200、404返回码。 Response Message:响应信息,比如“成功”、“OK”字样。 Name of created variable 创建的变量名,比如变量名为token,通过${token}进行访问。 Regular Expression 正则表达式。 正则表达式可阅读这篇文章进一步了解:https://dongfanger.gitee.io/blog/未分类/001-5分钟轻松学正则表达式.html Template($i$ where i is capturing group number, starts at 1) 用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的),则可以是$1$、$2$等等,$1$指第一个模板,$2$指第二个模板,依次类推,$0$指全文匹配,$1$$2$指同时取第一个和第二个模板。 ...
线程组编辑区如下:
测试计划(Test Plan),是JMeter目录树的初始根节点,它的编辑区如下:
本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 从一个问题说起 对于以下测试脚本: 为了能调用进入房间接口,需要从考场接口获取考场token。为了调用考场接口,需要从登陆接口获取登陆token。元件说明如下: 学生登录,提取登录${token}传入下个接口参数。 添加HTTP Header Manager: 考场token,提取考场${exam_token}传入下个接口参数。 添加HTTP Header Manager: 进入房间 貌似挺合理,HTTP Header Manager会给下方的接口添加请求头,运行结果真的如我们所料么? 运行顺序 在回答这个问题之前,有必要搞懂JMeter元件的运行顺序,它是由2 个维度来决定的:从上往下和元件类型。 从上往下,即目录树从上往下。元件类型,分为3类: 线程组、逻辑控制器。 取样器。 配置元件、前置处理器、定时器、后置处理器、断言、监听器。 它们的运行顺序如下: 配置元件(如果存在) 前置处理器(如果存在) 定时器(如果存在) 取样器(如果存在) 后置处理器(如果存在且取样器的结果不为空) 断言(如果存在且取样器的结果不为空) 监听器(如果存在且取样器的结果不为空) 换句话说,假设我们新建了1个线程,想用这个线程去发请求。 第一步,初始化配置,比如参数化、设置Header、Cookie等,用到配置元件。 第二步,可能需要给线程加点参数,比如用户参数,用到前置处理器。 第三步,在发送请求前可能会等待一段时间,用到定时器。 第四步,发送请求,用到取样器。 第五步,可能需要提取响应数据,比如正则表达式提取器、JMESPath提取器,用到后置处理器。 第六步,验证结果符合预期,用到断言。 第七步,查看请求响应数据和测试结果,用到监听器。 实践指南 对于以下所列元件: JMeter会按以下步骤运行: 线程组(如果有多个线程组可以在测试计划设置是顺序执行还是同时执行) 简单控制器(父节点) HTTP Cookie管理器(配置元件) 用户参数(前置处理器) Synchronizing Timer(定时器) HTTP 请求1(取样器) 正则表达式提取器(后置处理器) 响应断言(断言) HTTP Cookie管理器(配置元件) 用户参数(前置处理器) Synchronizing Timer(定时器) HTTP 请求2(取样器) 正则表达式提取器(后置处理器) 响应断言(断言) HTTP 请求3(取样器) 察看结果树(严格来讲是与第 6 步并行,也就是取样器之后) 作用域 其中有个观察作用域实际效果的关键元件:HTTP请求2,它的前后并没有元件,但是也被作用上了。在JMeter中,同一层级的元件具有相同的作用域! ...