jmeter基础操作

391 阅读7分钟

有这么一天,你的BOSS要求你为google网站做100个用户的并发性能测试,你该怎么做?

v2-2d69fe316c0ae57b3c02b30d47bf8411_r.jpg

也许你的BOSS是个小白,会问你下列问题:

v2-deedc8910b787d33911d1be6809c5a52_1440w.jpg

1.jmeter介绍/安装

Apache JMeter™是Apache组织开发的一款开源软件,是典型的纯Java开发的应用程序,可以在不同平台比如Windows、Linux或macOS系统上进行软件测试。JMeter主要用于应用程序的功能负载测试来度量软件的性能,也可以用于其他类型的测试比如接口测试,API测试等。

安装前准备工作

1.1.下载JDK (安装JMeter之前需要配置好Java环境) 前往Oracle官网下载JDK,建议用JDK8+,默认安装即可。

1.2.配置环境变量(windows,mac无需配置)

1、JDK安装完成后,进行环境变量的配置 单击“计算机-属性-高级系统设置”,单击“环境变量”。

图片1.png 2、系统变量下新建JAVA_HOME,变量值为自己本地JDK的安装路径(如C:\Program Files\Java\jdk1.8.0_202)

图片2.png 3、编辑Path变量,在最后面加上%JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin

4、验证Java环境是否配置好:进入DOS界面,输入命令java -version,如显示版本号即代表配置成功。


jmeter环境搭建

2.1.JMeter下载地址

图片3.png 点击跳转,下载后无需安装,解压后即可使用。

2.2.环境变量配置(可自行百度)

2.组件介绍/运行原理(做一个线程的设计来讲解一下)

企业微信截图_22fc1b06-26a5-4009-aa56-761743c2f529.png X1-X5是一个模拟负载的过程 Y1:模拟过程,模拟用户请求 Y2:验证结果准确性(响应码/body) Z:收集测试结果数据

运行原理:jmeter基础原理是建立一个线程池,多线程运用取样器产生大量负载,在过程中通过断言验证结果准确性,在通过监听器来记录测试结果。如果取样器有参数话的需求,可以通过配置原件/前置处理器来完成。需要关联的话,用过后置处理器来完成。如果要模拟用户场景,模拟多少用户,运行多长时间,就需要设置线程组。模拟并发,利用定时器来完成。模拟一些特定场景,我们就需要用到控制器来完成。

3.功能介绍

创建线程--模拟场景

1.创建线程组

3.1.创建线程组

测试计划上右键-->添加-->线程(用户)-->线程组。

图片14.png 3.2.配置线程组 (1)线程数:虚拟用户数、模拟的用户数量。

(2)Ramp-Up时间:启动时长,所有虚拟用户数的总启动时间。表示总线程数在几秒内进行初始化创建完毕。

(3)循环次数:每个线程发起请求的循环次数。如果次数设置为10,线程数200;则总的请求数为200 * 10。

(4)调度器:需先把循环次数勾选永远才会生效。

图片15.png

2.创建请求

4.1.创建 HTTP请求 线程组上右键-->添加-->取样器-->HTTP请求。

图片16.png

4.2.配置HTTP请求 (1)协议:不填默认使用http协议。

(2)服务器名称或IP:请求发送的目标服务器名称或IP地址(域名)。

(3)端口号:目标服务器的端口号,默认值为80。

(4)HTTP请求:请求的方式,常用的有GET、POST、Put...等。

(5)路径:目标URL路径(不包括服务器地址和端口)。

(6)内容编码:默认值iso8859。当请求参数中包含中文时,可填写utf-8防止乱码。

(7)同请求一起发送参数:GET请求时URL中附带参数时可以通过此方式添加。

(8)消息体数据:POST/PUT请求时,编写JSON数据{“Key”:“Value”}。

图片17.png

3.创建监听器

5.1.添加监听器 线程组上右键→添加→监听器→察看结果树、聚合报告等(也可在测试计划下添加,则同时监听多个线程组;或在http请求下,监听一个请求)

图片18.png 5.2.察看结果数 查看请求的总数量、取样器结果(状态码,响应信息等)、请求内容、响应数据。

图片19.png 5.3.聚合报告

a样本:总测试数量

b平均值:单个请求的平均响应时间

c中位数:50%用户的响应时间

d90%百分位:90%用户的响应时间

e95%百分位:95%用户的响应时间

f99%百分位:99%用户的响应时间

g最小值:最小的响应时间

h最大值:最大的响应时间

i异常%:请求异常所占百分比

j吞吐量(TPS):每秒完成的请求数,吞吐量=请求数/总时间

kQPS:每秒查询率,请求数/秒

l接收:每秒从服务器段接受到的数据量

m发送:每秒从客户段发送的请求数量

图片20.png

4.添加后置提取器

多个接口涉及到关联时,如计划查询前需要登录,则先获取登录接口的token给到下一个接口使用,可以使用后置提取器解决。 常用的后置提取器:Json提取器、正则表达式提取器。

6.1.添加JSON提取器

HTTP请求上右键-->添加-->后置处理器-->JSON提取器

Names of created variables:创建变量名称,给后面需要关联引用的接口

JSON Path expressions:JSON路径表达式,从响应数据中提取需要的值,用$.

Match No.(0 for Random):匹配号

图片21.png 6.2.添加正则表达式提取器

HTTP请求上右键-->添加-->后置处理器-->正则表达式提取器

图片22.png

5.设置集合点

真正的并发是不存在的,为了更真实的实现并发这感念,可以在需要压力的地方设置集合点。

7.1添加同步定时器

HTTP请求上右键-->添加-->定时器-->同步定时器。

图片23.png 7.2配置同步定时器

模拟用户组数量:虚拟用户达到指定数量时,同时对目标网址进行访问。

图片24.png

6.参数化

8.1CSV数据文件设置

1、适用于参数取值范围较大的时候使用,该方法具有更大的灵活性。

2、线程组(取样器)上右键添加-->配置元件-->CSV数据文件设置。

图片25.png

文件名:文件存放的绝对路径。

文件编码:数据中涉及到中文时,选择UTF-8

变量名称:引用时用到的变量名,如username,password

忽略首行:如果文件中没有变量名,需要从第一行开始读取,选择False;如果需要忽略第一行,从第二行开始读取,选择True。

分隔符:文件中的分隔符,如“,”

其他项按实际情况选择或默认即可。

3、在引用的地方用${变量名}来代替。

图片26.png 8.2用户参数

1、适用于参数取值范围很小的时候使用。

2、线程组(取样器)上右键添加-->前置处理器-->用户参数。

8.3用户定义变量

1、一般用于Test Plan中不需要随请求迭代的参数设置,如:Host、Port Number。

2、线程组(取样器)上右键添加-->配置元件-->用户定义变量,添加变量名和变量值。

3、在引用的地方用${变量名}来代替。

8.4函数助手*

可作为其他参数化方式的补充项,如:随机数生成的函数${__Random(,,)}

7.录制

自带http录制

3.1添加HTTP代理服务器 测试计划上右键→添加→非测试元件→HPPT代理服务器。

图片4.png 3.2配置HTTP代理服务器(TestPlan Creation) (1)端口:默认8888,可修改,要确保端口不被占用。

图片7.png

(2)目标控制器:选择要把脚本录制到哪个线程组下面。 图片5.png

(3)分组:录制的脚本是否需要分组存放。 图片6.png 3.3配置HTTP代理服务器(Requests Filtering) 排除模式:手动填写需使用正则表达式。点击添加建议排除即可,过滤无用脚本(如css、js、bmp)

图片8.png 3.4设置浏览器代理 (谷歌浏览器为例,浏览器设置中搜索代理,跳转到系统设置)

图片9.png (1)打开手动设置代理,填写代理地址及端口。

地址:jmeter所在服务器地址(本地浏览器测试填127.0.0.1或localhost)。

端口:与jmeter代理设置的端口号一致,然后点击保存。

录制:

*注意:录制https脚本时,需导入CA安全证书:

1)JMeter中点击选项→SSL管理器,导入jmeter/bin目录下的证书文件(有效期一般7天,记得随时更换)ApacheJMeterTemporaryRootCA.crt。

浏览器中点击设置,搜索“证书”,在证书管理器中导入上述证书文件到受信任的组织*

1、HTTP代理服务器-->点击启动-->弹出窗口,点击确定。

图片10.png 2、操作浏览器进行脚本的录制,录制完毕后,弹窗上点击停止。

图片11.png 3、查看录制到的脚本。

图片12.png

badboy录制/回放

下载与安装: www.cnblogs.com/xiaogongjin…

WechatIMG12.png

1.在输入框输入我们要录制的网址

2.点击录制

3.点击跳转,进行操作

4.我们可以根据要录制的内容在右侧界面进行操作录制

5.录制OK,我们可以进行数据导出,导出的文件格式jmx,可直接导入jmeter

WechatIMG14.png

遇到的问题及解决:

一、修改默认录制状态

二、提示 "当前页面的脚本发生错误"

解决方案: www.pianshen.com/article/297…

小记

1.链接数据库jdbc

2.分布式压测

3.监控服务器性能指标

4.BeanShell后置处理器,二次开发

小伙伴们可基础知识透彻之后自行学习。。。尤其是jmeter的二次开发,即刻开启你的学习之路吧!!