Jmeter的使用

一、Jmeter元件

1.测试计划

测试计划可以对线程组进行控制

Jmeter的使用

2.线程组

Jmeter的使用

线程组参数详解

  1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
  2. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
  3. 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
  4. Delay Thread creation until needed:直到需要时延迟线程的创建。
  5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
    持续时间(秒):测试持续时间,会覆盖结束时间
    启动延迟(秒):测试延迟启动

3.取样器

3.1http请求

Jmeter的使用

4.逻辑控制器

4.1switch控制器

跳转到其中一个子节点执行

Jmeter的使用

Switch Value:0 执行第一个子节点

4.2仅一次控制器

在每个线程内,该控制器下的内容只会被执行一遍,无论循环多少次,都只执行一遍。嵌套在循环控制器之内时是个例外,每个线程组循环都会被执行一遍

4.3吞吐量控制器

比如说有一种场景是,10个并发里,有2个事操作业务A,有8个是操作业务B,要模拟这种业务场景,则可以通过吞吐量控制器来模拟(还可以通过两个线程组进行控制)

5.前置处理

5.1用户参数

一般很少用,通常使用CSV参数化代替

Jmeter的使用

6.后置处理

正则表达式提取器

常用正则表达式:(.+?)

Jmeter的使用

7.配置原件

http信息头管理器

配置请求头:
例如:User-Agent、Cookie等

Jmeter的使用

http请求默认值

一般情况下,我们在一个项目中调用的接口中域名、端口等都是相同的。当我们创建多个HTTP 请求时,由于这些数据是必填项,所以,我们就需要不停地填写相同的数据。如果项目进行过程中出现了更改域名、更改端口号等情况,我们又需要把每一个请求中的数据都做更改,这样看上去似乎有些麻烦了,这时可以使用http请求默认值。

Jmeter的使用

CSV数据文件设置

Jmeter的使用

http cookie管理器
  1. Cookie 管理器就像一个 web 浏览器那样存储并发送 cookie。
    如果你有一个 HTTP 请求,其返回结果里包含一个 cookie,那么 Cookie 管理器会自动将该 cookie 保存起来,而且以后所有的对该网站的请求都使用同一个 cookie。每个 JMeter 线程都有自己独立的"cookie 保存区域"。因此,如果你在测试网站的时候使用了 Cookie 管理器来存储 session 信息的话,那么每个 JMeter 线程将会拥有自己独立的 session。注意这些 cookie 不会显示在 Cookie 管理器里,你可以通过察看结果树来对其进行察看。
  2. 手工添加一个 cookie 到Cookie 管理器。注意如果这么做,这个 cookie 将被所有 JMeter 线程所共享。这种方式用于创建有很长过期日期的 cookie。
用户定义的变量

用户自定义变量可以让我们随机选取变量,从而达到在性能测试过程中可以随机选取变量的目的。但是在实际使用中发现一个问题,并不试用于所有场景,比如登录

8.定时器

同步定时器

Jmeter的使用

每次释放的线程数量。如果设置为0,等同于设置为线程租中的线程数量。

超时时间为0时,默认无超时限制。

定时器的作用域

1、定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);

2、当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;

3、如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入;

4、如果希望在sampler执行完之后再等待,则可以使用Test Action;

固定定时器

作用:通过ThreadDelay设定每个线程请求之前的等待时间(单位为毫秒)。注意:固定定时是有作用域的,放到线程组下其作用域是所有请求都会延迟固定器设置的时间,如果放到请求内,作用域是单个请求延迟时间(常用)。

Jmeter的使用

9.断言

响应断言

Jmeter的使用

10.监听器

查看结果树
聚合报告
用表格查看结果

11.非测试原件

http代理服务器

二、Jmeter常用技巧

1.脚本录制

1)测试计划中添加非配置元件-http代理服务器
2)http代理服务器设置Jmeter代理端口
3)测试计划中添加线程组,并在http代理服务中选择该线程组作为目标控制器
4)浏览器中设置代理服务器,ip为Jmeter所在主机的ip地址,端口为http代理服务器设置的端口
5) 启动http代理,浏览器中访问相关页面,jmeter会自动录制该操作过程的请求信息。

2.参数化

CSV数据文件设置、用户参数、随机数

随机数的使用

Jmeter的使用

3.关联技术

参见前文正则表达式提取器

4.插件的使用

插件的安装

jmeter官网下载jmeter-plugins-manager.jar放在jmeter的lib/ext目录下,启动Jmeter在选项中即可看到插件功能

服务器性能检测

1.Jmeter安装插件PerMon

Jmeter的使用

2.服务器(有JDK环境)安装ServerAgent

启动ServerAgent: ./startAgent.sh
常见问题:
1.权限
2.端口
3.防火墙

解决方法:

  1. chmod 775 startAgent.sh
  2. 2.更改启动端口:java -jar ./CMDRunner.jar --tool PerfMonAgent --udp-port 7777 --tcp-port 7777
  3. 关闭防火墙:service iptables stop

防火墙设置一下白名单,打开配置文件命令:vi /etc/sysconfig/iptables
添加这行命令:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT

3.生成测试报告

添加环境变量
JMETER_HOME:C:\Program Files\Java\jdk1.8.0_221

path:%JMETER_HOME%\bin

CMD输入(例如):
jmeter -n -t D:\test.jmx -l D:report.jtl -e -o D:report.html

三、Jmeter分布式

jmeter内存溢出解决:jemter.bat下:

set HEAP=-Xms512m -Xmx512m
set NEW=-XX:NewSize=256m -XX:MaxNewSize=256m

#将其修改为:

set HEAP=-Xms512m -Xmx4096m
set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m

同样的csv文件在所有机器上路径一致

代理机与主机设置:bin目录下jemter.propreties

remote_hosts=127.0.0.1,192.168.1.4  # ip地址
server_port=1099                    # 端口一致
server.rmi.ssl.disable=true

代理机启动:jmeter-server.bat

主机启动:先启动jmeter-server.bat,然后启动ApacheJMeter.jar

相关推荐