JMeter的安装配置和学习笔记

一、环境配置

1. 下载安装包并解压

https://jmeter.apache.org/download_jmeter.cgi
在这里插入图片描述

2. 配置环境变量(直接搜索env可快速打开环境变量配置):
  • 新增系统变量JMETER_HOME:jmeter解压目录

  • 添加或新增变量CLASSPATH:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar; %JMETER_HOME%\lib\jorphan.jar;

  • 添加path变量值:%JMETER_HOME%\bin

    验证环境变量配置情况:CMD运行jmeter -v

3. 启动方式:
  • bin目录(window——jmeter.bat/linux——jmeter.sh)
  • cmd中运行jmeter(需先配置环境变量)

PS.执行性能测试不是在GUI界面,GUI界面是用来创建和调试脚本的

二、一般架构和组件

1.测试计划:一次性能测试,一个测试计划可能存在多个线程组(场景)
  • 独立运行每个线程组:一个测试计划中,线程组原本为按顺序运行,勾选后每个线程组独立同时运行

在这里插入图片描述

2. 线程组:测试用例/测试场景,一个线程组可能存在多个HTTP请求(步骤)
  • 在取样器错误后执行的动作:
    继续(当一个请求错误,继续运行下一个);
    Start Next Thread Loop(出错时,结束当前线程,从头执行,即循环);
    停止线程(本次线程出错,该线程停止,运行其他线程);
    停止测试(某个线程出错,停止整个测试);
    Stop Test Now(出错时,强制停止整个测试)。
    停止测试和stop test now的区别类似于kill和kill -9

  • 线程数:虚拟并发用户数,一个虚拟用户占用一个进程或线程,设置多少虚拟用户数在这里也就是设置多少个线程数。只有设置集合点才会产生并发。

  • 准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数20,准备时长为10,那么需要10秒钟启动20个线程,也就是每秒钟启动2个线程。

  • 循环次数:每个线程发送请求的次数。如果线程数为20,循环次数为100,那么每个线程发送100次请求,总请求次数为2000。
    在这里插入图片描述

3.HTTP请求:测试用例的测试步骤(默认端口80)

3.1 Get请求的例子
在这里插入图片描述
3.2 Post请求
JSON格式:在body data里面写入参数;添加header(配置元件-HTTP信息头管理器)
在body data里面写入参数
添加header
Form-data格式传参:勾选form-data选项;在Parameters填写参数
在这里插入图片描述

4.结果树中响应数据(中文)编码乱码问题:

在测试计划处添加后置处理器"BeanShell PostProcessor":prev.setDataEncoding(“UTF-8”);
在这里插入图片描述

5.断言
原则:
1.用响应数据来做判断,断言文本一定要复制,不要手写
2.在http请求下添加断言
3.每个请求都应该有断言,但也可以共用(判断条件一致时)
4.断言的意义:是要先判断http响应状态码(Jmeter自动判断),再判断Code值(添加断言判断)。
当没有断言时,结果树显示绿色不代表成功,只是代表响应码是200或300系列,显示红色说明响应码是400或500系列。
所以要想确定请求返回的是正确是必须要加上断言,只有断言成功才会显示绿色。

如Json响应数据如下格式:

在这里插入图片描述
断言设置,匹配规则选【包括】
在这里插入图片描述
假如断言失败,结果树显示为红色,并标明失败原因:
在这里插入图片描述

6.关联和正则表达式提取器——Token和Cookie

关联:把上一次获得的响应值作为参数传给后续的请求。
步骤(登陆用户,使用Token值来进行收藏文章,Token值每次登陆都是变动的)
1、添加-后置处理器-正则表达式提取器(在产生Token的请求下添加,作用域是整个线程组)

假设登陆时返回的数据为:
在这里插入图片描述
则正则表达式提取器设置为:
引用名称:变量的名称,相当于token1=“token”: “(.*?)”
匹配数字:指如果有几个token,取第几个
在这里插入图片描述

2、在后续参数的请求修改传递的Token引用变量${token1}
在这里插入图片描述
3、添加-配置元件-Http Cookie管理器(因为Jmeter不会自动传递)
添加后,后面的请求会拥有同样的Token和Cookie
在这里插入图片描述

7.引入参数化——CVS data config

意义:模拟真实的用户场景,多用户的场景。
步骤
1、添加-配置元件-CVS数据文件设置
文件名:指定数据文件路径,最好使用相对路径
变量名称:设置变量名,用来引用
在这里插入图片描述
2、引用变量(每次运行的数据都是唯一的)
格式为${变量名}
在这里插入图片描述

8.集合点/定时器Synchronizing Timer——并发测试
  • 用户并发测试:模拟多个虚拟用户在统一时间点,同时触发一个事务,以达到模拟真实环境下多个用户同时操作。
    并发(请求数):服务器同一时刻接收到的请求。
    并发用户数:客户端同一时刻启动的线程数(虚拟用户数)。
  • 使用定时器的意义:Jmeter的线程是随机运行的,谁先准备好就去运行谁,可能会造成请求数小于并发用户数,定时器就是为了解决这一问题,让操作接近真实用户场景。
  • 栗子:假设并发下单之前需要去登录、加入购物车,就应去下单那一步加集合点,此时所有线程数运行到下单都会等到所有线程到了再一起运行,才能体现并发发生在下单。

步骤
1、添加-定时器-Synchronizing Timer
Number of Simulated Users to Group by 虚拟并发用户数
Timeout in milliseconds 超时时间,单位为毫秒,1s=1000ms,
比如下图设置,表示3秒内,10个用户里启动几个就几个,超过时间就不等未启动的。在这里插入图片描述在这里插入图片描述

9.事务控制器——收集性能指标

事务简介

  • 测试场景中某些步骤组成的小事情。事务可以是单个步骤,也可以是由多个步骤组合而来。建议把每一个请求作为事务来表示。
  • JMeter自动将每个请求统计为一个事务收集性能指标,但有时候我们希望将多个操作统计为一个事务。JMeter考虑到了这种需求,我们可以通过逻辑控制器中的事务控制器来实现这个功能。
  • 总结:事务是把多个请求统计为一个事务/步骤来收集其性能指标。

步骤
1、添加-逻辑控制器-事务控制器,把需要合成一个事务的请求按顺序放到事务控制器下
在这里插入图片描述
2、事务的状态:一错则错,全队才对在这里插入图片描述

10.用户自定义变量

例如可以将ip、端口号、协议、编码、并发用户数、循环数等进行参数化等。
步骤
1、添加-配置元件-用户定义的变量,设置变量
在这里插入图片描述
2、引用变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.其他常用组件
  • 逻辑控制器:if控制器、循环控制器(某个步骤需要循环)、吞吐量控制器(满足多少吞吐量情况下执行某个步骤)
  • 前置处理器:JDBC(java连接数据库)
  • 后置处理器:正则表达式、JDBC、BeanShell
  • 断言:响应断言、JSON断言
  • 配置元件
  • 监听器:聚合报告(平均响应时间;90%Line——90%的请求在这个时间正常响应;事务失败率;吞吐量tps;)、察看结果树(调试脚本时使用)
  • 吞吐量的两种解释:

1) tps:每秒事务数,每秒钟服务器正常处理多少个请求——衡量服务器性能指标,在聚合报告中指tps。随着并发用户数的增加,服务器处理能力到达性能拐点后会下降。
在这里插入图片描述
2)网络带宽传输量:上传流量+下载流量,服务器的带宽(建议这样理解),加载图片、视频、文件是最占用带宽的。

12.组件执行顺序和作用域

1、在同一个作用域下,执行顺序如下

  • 配置原件(Configuration elements):用于初始化默认值和变量
  • 前置处理器(Pre-Processors):在采样器发出请求之前做一些特殊操作
  • 定时器(Timers):让作用域内的每一个采样器都在执行前等待一个固定时长
  • 采样器(Sampler):发送一个请求到指定服务器,并等待服务器的请求
  • 后置处理器(Post-Processors):在采样器发出请求之后做一些特殊操作
  • 断言(Assertions):可以测试服务器返回的响应与测试人员的期望是否相符
  • 监听器(Listeners):提供了对JMeter在测试期间收集到的信息的访问方法
  • 后置处理器、断言、监听器只有在采样器有结果可用情况下执行

2、作用域
(1)采样器(sampler):元件不和其它元件相互作用,因此不存在作用域的问题;
(2)逻辑控制器(Logic Controller):元件只对其子节点中的采样器和逻辑控制器作用;
(3)其他6类元件,如果是某个采样器的子节点,则该元件只对其父子节点起作用;
(4)其他6类元件,如果其父节点不是采样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。
(5)用户定义的变量是跨越多个线程组的,也就是说无论定义了多少变量的容器,只要变量的名字是一样的,也就是说作用域是测试计划。

三、运行

jmeter -n -t 路径/“文件名.jmx” -l 文件名.jtl -e -o 生成报告的保存路径

参数
-n指明not gui运行
-t执行运行的脚本
-l指明把测试日志保存下来
-e -o指明生成测试报告,后面跟生成路径

这种方式的好处是可以跨平台去执行。

如 jmeter -n -t ./Test Plan.jmx -l test.jtl -e -o ./test/
(当出现大规模错误可以在JTL日志里查看)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值