目录
注:mac下运行jmeter访问内网trpc-go服务是通的(至少内网下是通的)。
四、jmeter的可视化—— +influxdb+grafana
2、jmeter通过Backend Listener连接influxdb
官网: Apache JMeter - Download Apache JMeter
零、jmeter介绍
系列文章可以参考: jmeter常用配置元件介绍总结之逻辑控制器_jmeter if吞吐量控制器-优快云博客
0.1、梳理下jmeter出现的概念与层级关系
(1) 层级关系其实就如下图所示:
(1)测试计划:位于最外层,对应一个.jmx文件;
(2)线程组:理解为模拟多少个用户;测试计划→右键可以添加一个个线程组。
(3)取样器/逻辑控制器/监听器等:线程组 → 右键 添加。
注:取样器/逻辑控制器/监听器 都有很多花样后面介绍。
0.2、取样器
理解对我们输入的数据进行取样,并构建对应协议的数据。这些既然要发送数据肯定要先采样获得想要发送的数据(取样用户数据),所以“sampler”还是很直观的。
“sampler”:取样器、采样员。理解成取样器就很直观了。
0.3、定时器
顾名思义:起到定时的作用。
0.3.1、固定定时器
功能:设置固定时长,用来模拟用户的思考时间,设置后发出的请求会有间隔,即:间隔时间 = 取样器请求发送时间 + 定时器思考时间。
效果:监听器 → 以表格察看结果,确实可以看到对应间隔时间。
0.3.2、统一随机定时器
功能:取样器请求前做随机时间的延迟。
参数说明:
- Random Delay Maximum:随机延迟的最大,会从0–设置的值这个范围来随机,随机出来的值不会大于设置的值,单位ms。
- Constant Delay Offset:设置固定的延迟偏移值,单位ms。请求的总延迟时间是 = 随机延迟时间(Random Delay) + 固定偏移值(Constant Delay)。
0.4、逻辑控制器
(1)控制器可以控制sampler的执行顺序、执行逻辑。显然,控制器是用来控制取样器的否则没意义。
(2)也就是逻辑控制器会控制在其下一级的sampler的执行逻辑情况。就像是for循环会控制for循环内部的代码的执行次数那样。
0.4.1、 if控制器
功能:输入条件表达式,条件为真时,执行控制器里面的请求。我们可以提取上一个请求的相应数据,并根据其做逻辑。
参数说明:具体用到的时候再研究。
0.4.2、 事务控制器
功能:合并统计示例下的所有测试元素所花费的总时间。就是把若干个sampler当成一个整体统计的意思。
0.4.3、 循环控制器
功能:会将循环控制器里面的所有请求循环指定次数。
0.4.4、 while控制器
功能:输入表达式,来控制,控制器里面的请求循环多少次
参数说明:
Condition (function or variable):输入表达式,控制循环的次数;推荐使用_jexl3或_groovy来执行表达式;内容为空白时会一直执行。
0.4.5、 随机控制器
功能:控制器中的请求元素随机取一个执行,勾选,忽略子控制器块,会忽略子控制器的功能。
0.4.6、 随机顺序控制器
功能:控制器中每个请求元素都会被执行一次,但执行的顺序是随机的。
0.9、监听器
监听器是用来监听及显示jmeter取样器测试结果的,能够以树、表及图形等多种形式显示测试结果。
0.9.1、查看结果树
功能:用于调试测试时取样器的请求参数返回结果等,可以将结果写入到一个外部文件中。
0.9.2、聚合报告
功能:统计所有请求的,请求情况,,可以将结果写入到一个外部文件中。
0.9.3、以表格形式查看
功能:以表格的形式,展示请求。
0.9.4、响应结果图
功能:以图表的形式展示请求响应随时间变化的情况。
0.9.5、图形结果
功能:以图表的形式展示请求响应随时间变化的情况。
0.9.6、以表格察看结果
功能:以表格的形式罗列结果。
一、jmeter模拟发送请求
以后就可以用jmeter来压测接口了,而且是从前端http接口层面的压测。
1、模拟前端http请求
1.1、背景及诉求
背景很简单就是想用jmeter模拟一个实际业务中用到的http请求,对应功能点如下。
其对应的接口,请求时候所带的cookie、参数、payload等都可以通过开发者工具中看到。
注:网上请求百度的case很多了,没什么可说的。我们贴合实际业务场景,直接去请求saas软件的一个实际业务接口。这种情况需要考虑登录态(cookie)等问题也更贴合实际,为此有必要专门演示一把。
1.2、具体步骤
打开浏览器调试工具,打开jmeter。
(1)利用jmeter的 import from cURL进行导入。
①调试工具中选中目标接口→右键→copy→copy as cURL
注:其copy下来的其实是如下一串结果。按理来说应该是包括所有的必要信息了才是。
curl 'https://testgateway.qidian.qq.com/v1/interface/inner/cloudcc_303213' \
-H 'authority: testgateway.qidian.qq.com' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: zh-CN,zh;q=0.9' \
-H 'content-type: application/json' \
-H 'cookie: login_url=https%3A%2F%2Foaconsole.qidian.qq.com%2Flogin%2F%3Fshow_type%3Dqa%26source%3Dworkbench; d2=Tcxl6Jtcmi8MwUIZvsayrx7yxmoeO0z6CGTBYhD59zvH1JjuFqQBzAzSLoG50Z0W93RXa1giPvYP14sswnxOMGCYLgR0SygSguzlcjr14zu8pEnRkRQ3D3Cna19tOi0ooGy0RZeBvn3mrBjaKGF