Jmeter给的记忆

很久不用一款工具后就很容易忘掉,本篇记录jmeter相关理论及操作,是回忆也是分享!

一、jmeter常用组件

1、测试计划

每个jmx脚本的初始节点,即脚本的初始节点,我理解为一个脚本就是一个计划。

2、线程组

2.1、我理解为每个大模块或者是一个大分组,可以将相关的一组接口/取样器放到同一个线程组,需要在【测试计划】节点下创建,为jmeter的第二层组件;

2.2、线程组又区分为setUp线程组(最先执行)、tearDown线程组(最后执行)、线程组(普通线程组);

2.3、“在取样器错误后要执行的动作”,继续(即失败后继续执行后面的线程,一般采用该方式)、启动下一进程循环(即结束当前循环跳到下个循环)、停止线程(即该线程不执行,其他线程继续执行)、停止测试(不会立即停止,当前取样器的所有线程跑完再停止所有)、立即停止测试(直接停止所有);

2.4、线程属性,线程数:即该线程组下的取样器所涉及到的线程数量(jmeter中可以理解为用户数),Ramp-Up时间(s):即多少秒内加载完成线程数量(该时间范围内实际不会执行取样器),循环次数:以对应线程数量循环执行多少次(不勾选“永远”),same user on each iteration:即每个迭代/循环都用同一个线程(默认勾选,性能测试时建议勾选,因为不使用同一个线程就意味着会去销毁和创建,比较耗资源),延迟创建线程直到需要:常用默认即不勾选(jmeter是基于java的工具,涉及jvm相关理论),调度器:勾选后才能选择持续时间和启动延迟,持续时间:与循环次数后面的“永远”勾选后结合使用(性能压测时长),启动延迟:线程运行前的等待时间;

2.5、10个线程循环十次和100个线程循环一次的区别:相当于10个人跑十圈和100个人跑一圈。

3、取样器(HTTP请求_基本)

3.1、支持web服务协议如常见的http、https,支持POST、GET、PUT、DELETE等多种方式;

3.2、请求体:若是json,直接放到消息体数据文本编辑处,若是文件参数,则放到文件上传处,若是表单信息,则放入参数处(也可以拼接到路径后面),若是直接跟接口后面,则直接放到路径之后;

3.3、注意若是文件类型参数,要结合接口考虑需不需要勾选“对POST使用multipart/form-data”;

3.4、【细节】注意内容编码,根据实际场景填入,常用utf-8;

4、配置元件(HTTP请求头管理器 和 HTTP请求默认值)

4.1、请求头管理器顾名思义为配置request-header的信息,可以从浏览器F12拷贝写入,内容一般为常见接口需要的token、content-type等。

4.2、如果多出HTTP请求用的同一个域名/IP,则可以将协议、服务名/IP、端口、内容编码甚至公有参数均配置到HTTP请求默认值里面,后面的HTTP请求只需要输入路径等其他内容即可。

5、定时器(固定定时器和同步定时器)

5.1、固定定时器可以理解为用户思考时间,即操作前的思考停留时间/延迟时间;

5.2、同步定时器,一般秒杀场景会用到,即让多少用户在某个相同的时间点发出请求,可以配置对应的超时时间。

6、后置处理器(json提取器和beanShell后置处理程序)

6.1、json提取器,Apply to使用默认的“Main sample only”一般够用,后面配置依次是“后续待使用的变量名”(多个分号隔开)、“json提取的内容路径表达式”、“取第几个值”(-1全部 0随机)、“是否使用逗号隔开多个结果并以_ALL存在带使用变量中”、“没有结果时的默认值”;

6.2、可以兼容java代码,可与提取结果结合使用,将提取到的变量设置为全局变量,如 “${__setProperty(authorization,${token},)};”  token为局部变量、authorization为全局变量,全局调用时用 ${__P(authorization)} 。

6.3、当然,常用的后置提取器还有正则表达式提取器,但需要记一些规则,在json提取器不能满足实际场景的情况下可以考虑正则表达式;

7、前置处理器(beanShell预处理程序 和 JSR223预处理程序)

7.1、一般用于执行请求前的一些操作,比如入参需要加密;

7.2、beanShell前置处理器兼容java语言,并可以支持导入jar的形式完成编码,完成目标参数的处理操作;

7.3、JSR223预处理程序支持多种语言,如java、javaScript等。

8、逻辑控制器

8.1、常用的逻辑控制器有很多,主要是控制待执行请求的逻辑,如顺序、随机、频率等;

8.2、临界部分控制器,控制一组请求的执行顺序,临界部分控制器下的请求会严格按照顺序执行;

8.3、随机顺序控制器,控制一组请求的执行顺序,随机顺序控制器下的请求会无序/随机执行;

8.4、事务控制器(性能测试常用),将一个或多个接口的性能指标值合并为一个整体,若勾选了“Generate parent sample”,则事务控制器将作为一个父节点的形式捆绑它的子节点单接口,如果其中一个单接口执行失败,则事务失败。

8.5、吞吐量控制器(性能测试常用),当需要考虑多个接口/事务/场景按一定比例的吞吐量进行执行时,比如 查询商品列表:商品详情查看:加入购物车 = 6:3:1,这时就需要用到吞吐量控制器(三个),分别输入60、30、10,使用默认的百分比即可。

9、监听器

9.1、监听器用于展示取样器的执行结果,可以以表格、走势图、结果树等形式查看;

9.2、查看结果树,将取样器执行结果以结果树的形式展示,一般结合断言进行调试时使用,可设置只展示成功或失败的日志/结果,【细节】可以以text、JSON path Tester、HTML等多种形式展示详细信息;

9.3、聚合报告,常在性能测试指标验证阶段使用,可以看到响应时间、吞吐量等关键性能指标信息;

9.4、后端监听器,常用org.apache.jmeter.....influxdbBackendListenerClient实现与Grafana 联合使用,实时查看性能测试的情况(不过这种方式较耗资源,性能要求不高时可使用);

9.5、jp@gc - PerfMon Metrics Collector,需要像jmeter中添加插件,需要下载ServerAgent并放到待测服务器上并打开,然后再jp@gc - PerfMon Metrics Collector中配置需要查看CPU、内存、磁盘、网络等指标,取样器运行过程中会实时展示对应指标。

TODO...

 

posted @ 2023-07-19 18:21  一棵测试小白菜  阅读(36)  评论(0)    收藏  举报