当前位置: 首页 > news >正文

Jmeter的应用

一.jmeter直连数据库

 1.1 配置

添加Mysql的驱动jar包

方式1:在测试计划面板点击‘游览’按钮,将jdbc驱动添加进来

方式2:将MySQL的驱动jar包放在lib/ext目录下,重启jmeter

1.2 配置数据库连接信息

位置:测试计划-->线程组-->配置元件-->JDBC Connection Configuration

 

Variable Name:连接池名称。JDBC Request会通过此名称来获取连接池的配置,名称可以随意填写,但是最好具体实际的业务意义,方便理解和记忆。

其他的可以默认,可以根据实际情况来调节优化性能。

Database URL:数据链接url,格式:jdbc:mysql://localhost:3306/host

注释:数据库的ip地址+端口/数据库名(查询数据库端口号show global variables like 'port')

jdbc:mysql://127.0.0.1:3306/mydb2?serverTimezone=UTC& allowMultiQueries=true

JDBC Driver Class:驱动器名称。固定:com.mysql.jdbc.Driver

Username:用户名

Passowrd:密码

添加一个JDBC Request。

位置:右键线程组【添加】-【Sampler】-【JDBC Request】

Select Statement:查询语句

只能执行查询语句select,执行第一条sql语句,而且第一条必须是select语句,否则报错

 

Updata Statement:更新语句

支持测试非select语句,并且支持测试多条,若其中夹杂select语句,自动忽略,若第一条语句为select

语句,报错

Callable Statement:所有语句

只要语法正确,任何语句,再多的条数都能支持

Prepared Select Statement:预编译查询语句。(长时间执行效率更高,支持占位符)

Prepared Update Statement:预编译更新语句。(同上)

Commit (立即提交)Rollback(回滚)

Parameter values:参数值。参数化sql语句中的值

Paramter types:参数类型。数据库的参数你可以去查看一下。这里是varchar类型。

Variable names:变量名字,也就是将筛选出来的值放在变量里面。例如这三列数据分为放在变量:A,B,C

中(实际操作中命名一定要有实际意义)。

Result variable name:存储变量名。将整个结果存储在变量中。取名:rs

Query timeouts :超时时间。

二.逻辑控制器

1.作用:可以按照设置的逻辑控制取样器的执行顺序

2 常见的逻辑控制器

如果(if)控制器

循环控制器

ForEach控制器

2.1if控制器

作用

if控制器来控制它下面的测试元素是否运行

位置

测试计划-->线程组-->逻辑控制器-->如果(if)控制器

 用户定义变量

 第一个if控制器中添加条件

第一个if控制器中添加条件 

2.2:循环控制器

作用

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

位置

测试计划-->线程组-->逻辑控制器-->循环控制器

2.3:ForEach控制器

作用

一般和用户定义变量或者正则表达式提取器一起使用,读取返回结果中一系列相关的变量值

位置

测试计划-->线程组-->逻辑控制器-->循环控制器

 其中name的数据可以来源于用户定义的变量,命名规则是变量名_数字/正则表达式提取器的数据

用户定义变量维护数据

 

ForEach数据维护 

引用

 三.定时器

1.定义:同步定时器:堵塞线程(积累一定的请求),当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起释放,瞬间产生很大的压力

位置

测试计划-->线程组-->http请求-->定时器-->Synchronizing Timer

3.1常数吞吐量定时器

作用:让jmeter按指定的吞吐量执行,以每分钟为单位

位置

测试计划-->线程组-->http请求-->定时器-->Constant Throughput Timer

适用场景

需要被指定的吞吐量发送请求时,可以使用常数吞吐量定时器规定好每个用户每分钟发送的请求数

3.2固定定时器

作用:固定定时器:定时器(Timer)负责定义请求之前添加延迟间隔

位置

测试计划-->线程组-->http请求-->定时器-->固定定时器

参数讲解

四.jmeter分布式

jmeter分布式执行原理

 

分布式的注意事项

关闭防火墙

所有的控制机,代理机,服务器都在同一个网络上所有机器的jmeter和Java版本都必须一致

关闭RMI中的SSL开关

jmeter分布式的配置和执行

配置---修改bin/jmeter.properties文件

 执行

 代理机设置jmeter.properties文件

 启动代理机jmeter-server.bat

 控制机设置jmeter.properties文件

启动控制机jmeter.bat

 

五.jmeter监听器

5.1 聚合报告

作用:收集性能测试结束后,系统的各项性能指标:如响应时间,并发量,吞吐量,错误率等

位置

在线程组>>添加>>监听器>>聚合报告

参数讲解

lable:对应请求的名称

#Samples(样本):各请求发出的数量

Average:平均响应时间(单位:毫秒)

Median:中位数,也就是50%用户的响应时间

90%Line:90%用户的响应时间

Min:最小响应时间

Max:最大的响应时间

Error%:请求的错误率

Throughput:吞吐量,默认情况下表示每秒完成的请求数,一般认为它是tpsRecived KB/Sec:每秒从服务器端接收到的数据量,每秒接送/发送的千字节数

察看结果树

作用:收集性能测试结束后,接口的请求响应信息(请求url,请求参数,请求头,响应头,响应数据等)

位置

在线程组>>添加>>监听器>>察看结果树

参数讲解

通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过

Thread Name:线程组名称

Sample Start: 启动开始时间

Load time:加载时长

Latency:等待时长

Size in bytes:发送的数据总大小

Headers size in bytes:发送数据的其余部分大小

Sample Count:发送统计

Error Count:交互错误统计

Response code:返回码

Response message:返回信息

Response headers:返回的头部信息

html测试报告

作用:jmeter支持生成html测试报告,以便从测试计划中获得图表和统计信息

参数讲解

 报告参数

六.并发数计算方法 

性能测试计算TPS

性能测试的TPS,大都是根据用户真实的业务数据(运营数据)来计算的

普通计算方式

TPS = 总请求数/总时间

 二八原则计算方法

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

TPS = 总请求数80%/总时间20%

总结:普通计算方式只能满足基本的要求,但是不能很好覆盖系统正常的使用情况,二八原则计算方法能满足系统对大多数情况下的应用

稳定性测试的并发量

 

根据业务运营数据的统计计算(通常用来做稳定性测试)

并发TPS=有效的请求数80%/有效的时间20%

当你的运营数据统计的越精确时,计算出的并发tps与实际的越来约接近

压力测试的并发量

并发TPS=峰值的请求数/峰值的时间*系数

满足峰值请求时间段内的负载量,系数取决于项目组对未来业务量的评估

七.性能监控

下载插件管理包

在官网上下载

1:下载包管理工具jar包

2:将包管理工具jar包添加到jmeter的lib\ext目录下

3:重启jmeter,可以在选项下看到插件管理器

安装第三方插件

1:打开plugins Manager插件管理器

2:选择Available Plugins,当前可用的插件

3:选择需要下载的插件(等待右方文本内容展示出来)

4:下载右下角的下载按钮,自动的完成下载,jmeter会自动重启

阶梯线程组

作用:是阶梯加压;图形界面显示运行状态

位置:测试计划-->线程组-->Concurrency Thread Group

参数讲解

 或者

Transactions per Second

作用:每秒完成事务数:作用是统计各个事务每秒钟成功的事务个数

位置

测试计划-->线程组-->监听器--> Transactions per Second

 

PerfMon资源监控 

作用:用来监控服务器的性能资源指标的工具,包含cpu,内存,磁盘,网络等性能数据

 位置

测试计划-->线程组-->监听器--> PerfMon Metrics Collector

注意

使用之前需要在服务器安装监听服务程序并启动

 监控服务器资源的步骤

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • 软件流程和管理(八):Ethics
  • SkyWalking持久化追踪数据
  • 数据导入与预处理-第4章-pandas数据获取
  • 机器学习之线性规划原理详解、公式推导(手推)、以及简单实例
  • 计算机网络——OSI 参考模型
  • 【.Net实用方法总结】 整理并总结System.IO中StreamWriter类及其方法介绍
  • openGl坐标系统
  • 实用工具系列 - Pycharm安装下载使用
  • Pyecharts绘图笔记
  • SNARK性能及安全
  • 学会 Python 自动安装第三方库,从此跟pip说拜拜
  • 3.前端开发就业前景
  • Discovery服务发现与Eureka自我保护机制及总结步骤
  • 机器学习01
  • 类加载器及反射简单笔记
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【刷算法】从上往下打印二叉树
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android单元测试 - 几个重要问题
  • CentOS7 安装JDK
  • Consul Config 使用Git做版本控制的实现
  • interface和setter,getter
  • java取消线程实例
  • React Native移动开发实战-3-实现页面间的数据传递
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 半理解系列--Promise的进化史
  • 对象管理器(defineProperty)学习笔记
  • 近期前端发展计划
  • 聊聊flink的TableFactory
  • 如何实现 font-size 的响应式
  • 通过npm或yarn自动生成vue组件
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 整理一些计算机基础知识!
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​业务双活的数据切换思路设计(下)
  • #1015 : KMP算法
  • #vue3 实现前端下载excel文件模板功能
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (剑指Offer)面试题34:丑数
  • (十五)、把自己的镜像推送到 DockerHub
  • .Net 6.0 Windows平台如何判断当前电脑是否联网
  • .net framework 4.8 开发windows系统服务
  • .Net 垃圾回收机制原理(二)
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET框架
  • .NET文档生成工具ADB使用图文教程
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • [\u4e00-\u9fa5] //匹配中文字符
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配