JMeter其他用法

一、jmeter直连数据库

1.1场景

连接tpshop商城数据库获取商品名包含:小米手机5 的商品id

1.2准备工作

启动数据库服务器

添加mysql驱动jar包

  • 在测试计划面板点击“浏览…“按钮,将你的JDBC驱动添加进来

配置数据库连接信息

测试计划 --> 线程组--> (右键添加) 配置元件 --> JDBC Connection Configuration

主要参数:

Variable Name: mysql数据库连接池名称(JDBC请求时要引用)

Database URL: jdbc:mysql://localhost:3306/tpshop2.0

  • jdbc:mysql:(MySQL固定格式)
  • //127.0.0.1:(数据库ip地址)
  • 3306:(MySQL默认端口,如改变,请如实填写)
  • books:要连接的数据库名称

JDBC DRIVER class: com.mysql.jdbc.Driver(MySQL驱动包位置固定格式)

Username: root(连接数据库用户名,如实填写)

Password:(MySQL数据库密码,如实填写,如果密码为空不写)

1.3操作步骤

1.添加线程组 2.添加 JDBC Connection Configuration 3.添加 JDBC request 4.添加查看结果树

主要参数:

Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致

Query:填写的sql语句未尾不要加“;”

Parameter values:参数值

Parameter types:参数类型

Variable names:保存sql语句返回结果的变量名

Result variable name:创建一个对象变量,保存所有返回的结果

Query timeout:查询超时时间

Handle result set:定义如何处理由callable statements语句返回的结果

二、JMeter逻辑控制器

1.逻辑控制器

逻辑控制器可以按照设定的逻辑控制取样器的执行顺序

1.1常用逻辑控制器

如果(If)控制器

循环控制器

ForEach控制器

2.如果(if)控制器

If控制器用来控制它下面的测试元素是否运行 添加方式:测试计划 --> 线程组--> (右键添加) 逻辑控制器 --> 如果(If)控制器

2.1案例

1. 使用‘用户定义的变量’定义一个变量name,name的值可以是‘baidu’或‘itcast’

2. 根据name的变量值实现对应网站的访问

操作步骤 :1. 添加线程组 2. 用户定义的变量 3. 添加If控制器,判断name是否等于baidu 4. 添加HTTP请求,用来访问百度 5. 添加If控制器,判断name是否等于itcast 6. 添加HTTP请求,用来访问传智播客 7. 添加查看结果树

IF控制器

3.循环控制器

通过设置循环次数,来实现循环发送请求

添加方式:测试计划 --> 线程组--> (右键添加) 逻辑控制器 --> 循环控制器

3.1案例

1. 循环访问百度10次

操作步骤 1. 添加线程组 2. 添加循环控制器 3. 添加HTTP请求 4. 添加查看结果树

线程组属性控制组内所有取样器的执行次数,而循环控制器可以控制组内部分取样器的循环次数,后者控制精度更高

4.ForEach控制器

ForEach控制器一般和用户自定义变量或者正则表达式提取器一起使用,其在用户自定义变量或者从正则表达式提取器的返回结 果中读取一系列相关的变量。 该控制器下的取样器都会被执行一次或多次,每次读取不同的变量值。 添加方式:测试计划 --> 线程组--> (右键添加) 逻辑控制器 --> ForEach控制器

4.1案例

1. 有一组关键字 [hello,python,测试],使用用户定义的变量存储

2. 要依次取出关键字,并在百度搜索,例如:https://www.baidu.com/s?wd=hello

操作步骤 :1. 添加线程组 2. 用户定义的变量 3. 添加ForEach控制器 4. 添加HTTP请求 5. 添加查看结果树

三、JMeter定时器

1. 同步定时器(Synchronizing Timer)[集合点]

1.1介绍

SyncTimer的目的是阻塞线程,直到阻塞了n个线程,然后立即释放它们。

同步定时器相当于一个储蓄池,累积一定的请求,当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起 并发,所以可以用来做大数据量的并发请求。

添加方式:测试计划 --> 线程组--> HTTP请求 --> (右键添加) 定时器 --> Synchronizing Timer

1.2案例

场景 :模拟100个用户同时访问百度首页,统计高并发情况下运行情况

操作步骤 :1. 添加线程组,设置线程数=100 2. 添加HTTP请求 3. 添加同步定时器 4. 添加查看结果树 5. 添加监听器-聚合

操作截图

1.3 注意事项

问题: 当用户数不能整除集合点组件的一组用户数属性时,如果超时时间是 0,会导致程序挂起,怎么避免挂起?

 方案1: 点击 stop 强行终止,但是不建议

方案2: 修改一组用户数,能够做到整除(治标不治本)

方案3: 修改超时时间,不设置为 0,即便一组用户数填充不满,只要超时,也会执行(建议)

2.常数吞吐定时器(Constant Throughput Timer)

2.1 介绍

常数吞吐量定时器可以让JMeter以指定数字的吞吐量(以每分钟的样本数为单位,而不是每秒)执行。 吞吐量计算的范围可以为 指定为当前线程、当前线程组、所有线程组。

添加方式:测试计划 --> 线程组--> HTTP请求 --> (右键添加) 定时器 --> Constant Throughput Timer

2.2案例

场景 :一个用户以 20QPS (20 次/s) 的频率访问百度首页,持续一段时间,统计运行情况

操作步骤 :1. 添加线程组,循环次数设置成永远 2. 添加HTTP请求 3. 添加常数吞吐定时器 4. 添加查看结果树 5. 添加监听器-聚合报告

四、jmeter分布式

1.JMeter分布式测试

在使用JMeter进行性能测试时,如果并发数比较大(比如项目需要支持10000并发),单台电脑的(CPU和内存)可能无法支持,这时 可以使用JMeter提供的分布式测试的功能。

1.1 JMeter分布式执行原理

  • JMeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。
  • 执行时,控制机会把脚本发送到每台代理机上,代理机拿到脚本后就开始执行,代理机执行时不需要启动JMeter界面,可以 理解它是通过命令行模式执行的。
  • 执行完成后,代理机会把结果回传给控制机,控制机会收集所有代理机的信息并汇总。

1.2 代理机(Agent)配置

  • 1. Agent机上需要安装JMeter
  • 2. 修改服务端口 - 注意:非必须。如果是在同一台机器上演示需要使用不同的端口,多台机器可以不修改 - 打开bin/jmeter.properties文件,修改`server_port`,比如:`server_port=2001`
  • 3. 将RMI SSL设置为禁用 - 打开bin/jmeter.properties文件,修改为:server.rmi.ssl.disable=true
  • 4. 运行Agent上的jmeter-server.bat文件,启动JMeter

1.3 控制机配置

  • 1. 修改JMeter的bin目录下jmeter.properties配置文件,修改`remote_hosts` - 示例:`remote_hosts=192.168.182.100:1099,192.168.182.101:1099` - IP和Port是Agent机的IP以及自定义的端口,多台Agent之间用","隔开
  • 2. 将RMI SSL设置为禁用 - 打开bin/jmeter.properties文件,修改为:server.rmi.ssl.disable=true
  • 3. 启动JMeter
  • 4. 选择菜单:运行-->远程启动/远程全部启动

 五、JMeter测试报告

1.聚合报告

2.生成html测试报告

2.1命令

jmeter -n -t [jmx file] -l [result file] -e -o [html report folder]

例如: jmeter -n -t hello.jmx -l result.jtl -e -o ./report

参数描述:

  • -n:非GUI模式执行JMeter
  • -t [jmx file]:测试计划保存的路径及.jmx文件名,路径可以是相对路径也可以是绝对路径
  • -l [result file]:保存生成测试结果的文件,jtl文件格式
  • -e:测试结束后,生成测试报告
  • -o [html report folder]:存放生成测试报告的路径,路径可以是相对路径也可以是绝对路径
  • 注意:result.jtl和report会自动生成,如果在执行命令时result.jtl和report已存在,必须用先删除,否则在运行命令时就会报错

 2.2查看测试报告

六、JMeter性能测试常用图表 

1.常用平均并发数计算公式

PV:(Page View)即页面访问量,每打开一次页面PV计数+1,刷新页面也是。PV只统计页面访问次数。

UV(Unique Visitor),唯一访问用户数,用来衡量真实访问网站的用户数量。 一般用UV统计用户活跃数,用PV统计用户访问页面的频率

1.1普通计算方法

  • 计算公式:TPS= 总请求数 / 总时间
  • 按照需求所示,在2019年第32周,有4.13万的浏览量,那么总请求数,我们可以认为估算为4.13万(1次浏览都至少对应1个请求)
  • 总请求数 = 4.13 万请求数 = 41300 请求数
  • 总时间:由于不知道每个请求的具体时间,我们按照普通方法,我们可以按照一周的时间进行计算 总时间 = 1天 = 1 * 24 小时 = 24 * 3600 秒
  • 套入公式可得: TPS = 41300请求数/24*3600秒 = 0.48请求数/秒
  • 结论:按照普通计算方法,我们在测试环境对相同的系统进行性能测试时,每秒能够发送0.48请求就可以满足线上的需要。

 1.2 二八原则

二八原则就是指80%的请求在20%的时间内完成

计算公式 : TPS = 总请求数 80% / (总时间20%)

按照公式进行计算

TPS = 41300 * 0.8请求数 / 24*3600*0.2秒 = 1.91 请求数/秒

结论:按照二八原则计算,在测试环境我们的TPS只要能达到1.91请求数每秒就能满足线上需要。二八原则的估算结果会比平均值的计算方法更能满足用户需求。

1.3按照业务数据进行计算

业务数据:有的公司会统计一定时间内的所有业务数据,我们可以根据这个业务数据曲线图,统计出最多请求的数量和时间比例。

计算模拟用户正常业务操作(稳定性测试)的并发量:

根据这些数据统计图,可以得出结论:

  • 大部分订单在8点-24点之间,因此系统的有效工作时长为16个小时
  • 从订单数量统计,8-24点之间的订单占一天总订单的98%左右(40474个)

结合二八原则计算公式 : TPS = 总请求数 80% / (总时间20%)

需要在测试环境模拟用户正常业务操作(稳定性测试)的并发量为:

TPS = 40474 * 0.8请求数 / 16*3600*0.2秒 = 2.81 请求数/秒

 计算模拟用户峰值业务操作(压力测试)的并发量

根据这些数据统计图

订单最高峰在在21点-22点之间,一小时的订单总数大约为8853个

计算压力测试的并发数:TPS = 峰值请求数/峰值时间 * 系数

需要在测试环境模拟用户峰值业务操作(压力测试)的并发量为:

TPS = 8853 请求数 / 3600秒 * 3(系数) = 7.38 请求数/秒

2.插件管理包工具

2.1 应用步骤

1. 下载包管理工具jar包 2. 将包管理工具jar包添加到jmeter中 3. 下载性能测试常用组件

下载: https://jmeter-plugins.org/install/Install/

3.性能测试常用图表及组件

3.1 Concurrency Thread Group 线程组

说明:阶梯线程组

添加方式:测试计划 --> 线程(用户)--> Concurrency Thread Group

参数:

重点:

Target Concurrency:目标并发(线程数)

Ramp Up Time:加速时间

Ramp-Up Steps Count:加速步骤计数

Hold Target Rate Time:运行时间

Time Unit:时间单位(分钟或者秒)

了解:

Thread Iterations Limit:线程迭代次数限制(循环次数)

Log Threads Status into File: 将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件)

3.2 Transactions per Second

说明: 每秒完成事务数 场景:统计业务成功率

添加方式:测试计划 --> 线程组--> 监听器-->Transactions per Second

(提示:要配合事务控制器完成,如果不使用事务控制器,默认一个请求为一个事务)

3.3 Bytes Throughput Over Time

说明:查看服务器吞吐流量 单位/字节

添加方式:测试计划 --> 线程组--> 监听器-->Bytes Throughput Over Time

3.4 PerfMon Metrics Collector

说明:用来监控服务端的性能的工具,包括cpu、内存、磁盘、网络等性能数据

添加方法:线程组->监听器->jp@gc - PerfMon Metrics Collector

注意:使用之前需要在服务器端安装监听服务程序并启动!!!!!!!!!!!

监控服务器服务程序:

1. 下载安装包ServerAgent-2.2.3.zip,链接地址:https://github.com/undera/perfmon-agent

2. 解压ServerAgent-2.2.3.zip

3. 启动,如果是windows运行startAgent.bat,如果是linux运行startAgent.sh

4. 启动这个工具后,jmeter的插件jp@gc - PerfMon Metrics Collector就可以收集服务端的资源使用率,并在jmeter中查看

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter是一种功能强大的性能测试工具,它可以模拟多种负载类型,如静态和动态资源请求、Web应用程序、FTP、数据库以及各种协议等。下面是JMeter的使用方法: 1. 安装JMeter JMeter是一个免费的开源软件,可以从官方网站上下载并安装。 2. 创建一个测试计划 在JMeter中,所有的测试都是在一个测试计划中创建的。要创建一个新的测试计划,请选择File -> New,然后输入测试计划名称和描述。 3. 添加线程组 线程组是在测试中执行的一组线程。要添加线程组,请选择Test Plan -> Add -> Threads (Users) -> Thread Group。 4. 配置线程组 在线程组中,您可以配置线程数、循环次数、延迟时间等参数。还可以设置每个线程执行的请求和响应时间。 5. 添加HTTP请求 要添加HTTP请求,请选择Thread Group -> Add -> Sampler -> HTTP Request。 6. 配置HTTP请求 在HTTP请求中,您可以设置请求URL、请求方法、请求参数等。 7. 添加监听器 在JMeter中,监听器用于捕获测试结果并将其显示为图表或表格。要添加监听器,请选择Thread Group -> Add -> Listener。 8. 运行测试 在JMeter中,您可以运行整个测试计划或仅运行所选的线程组。要运行测试,请选择Run -> Start。 以上是JMeter的基本使用方法。当然,JMeter还有很多高级功能,如断言、参数化、数据驱动等,可以根据需要进行进一步学习和使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值