1.首先新建非测试原件-http代理服务器
2.再新建个线程组
3.然后编辑http代理服务器内容(红框内为要更改的地方)
端口:选择未被占用的即可
目标控制器:录制脚本存放的地方(选择刚才新建的线程组即可)
分组:可分可不分,分的话就是每个脚本独自存放,不分就是全部都在一起
4.网络代理设置
地址:jmeter默认代理地址是127.0.0.1
端口:跟刚才在jmeter里http代理服务器的端口保持一致即可
地址下面过滤条件,根据需求来写,可写可不写
(一定要记得开启之后点击保存,最好多点击几下)
5.6点击启动就可以开始录制了
6.点击ok
7.最后在弹窗里输入自定义名称,再进行相关操作就可以,点击停止之后,脚本会保存在http代理服务器中填写的目标控制器中
1、一个测试计划的开始
2、测试计划中所有的元件都必须在某个线程组下
3、线程组决定了jmeter执行测试计划的线程数
线程组的主要作用:
Ø 设置线程数
Ø 设置Ramp-UP时间(多长时间内运行当前线程数)
Ø 设置迭代次数
Ø 备注:每个线程组都是独立计划,互不干扰,多个线程组模仿对服务器的并发访问
Ø 每台设备建议线程数不超过1000
循环测试为永远或者为-1时,调度器才能够生效
Ramp-UP时间(秒):
Ø 线程组所有的线程数从启动-运行-释放的总时间
Ø 当等于0时,表示瞬间加压,启动所有线程时间无线趋近于0,实际性能测试中不能将该时间设置为0,应尽量设置多一些时间
Ø 假设有100个线程数,点击率10/s,ramp-up=100/10秒
Keepalive是jmeter与服务器的通信方式-表示长连接,真正做性能测试时,不建议进行勾选
POST的multipart/form-data:需要上传文件的时候进行勾选
文件上传(mime)的常见类型:
作用:http请求的前置操作,请求所需的协议、服务器或IP地址、端口号以及请求方法和请求路劲
作用:存放http的请求头部信息和http请求默认值用法大致相同,优先级也相同
1.用户自定义变量(软件测试人员,根据自己的测试场景,添加自定义变量,通过”${变量名}”进行调用好的变量)
拓展:自定义变量也可以通过函数助手生成
2.用户参数(前置处理器)
线程组下的用户参数优先级高于测试计划里的用户自定义变量
Http请求下的用户参数优先级高于线程组下的用户自定义变量
若有重名参数,谁的优先级高用谁的
若用户参数和用户自定义变量重名且在同一级下,则优先取值用户参数的值
因为配置元件先执行前置处理器
3.csv数据文件设置(配置元件)
4.CSVread函数助手
1.同步定时器(Synchronizing Timer集合点)
2.固定定时器(思考时间)
线程数停留多少时间发送请求
测试过程中一般断言响应体内容是否包含响应成功信息,通常与“断言结果”(监听器)连用
1.Json提取器
调试取样器:用来查看自定义变量或者是取值是否正确
2.正则表达式提取器
JDBC配置元件
JDBC取样器
Jmeter 支持分布式压测,将需要模拟的大量并发用户数分发到多台压力机,使 Jmeter 拥有更大的负载量,满足真实业务场景(高并发场景)。
1) 为什么要做分布式
Jmeter 本身的局限性
一台压力机的 Jmeter 默认最大支持 1000 左右的并发用户数(线程数),再大的话,容易造成卡顿、无响应等情况,这是受限于 Jmeter 其本身的机制和硬件配置(内存、CPU等)
由于 Jmeter 是 Java 应用,对 CPU 和内存的消耗较大,在需要模拟大量并发用户数时,单机很容易出现JAVA内存溢出的错误,导致测试脚本本身就有瓶颈
2) 模拟测试场景
l 测试 3000并发的场景,但单机只能支持 1000 并发无法达到 3000
l 通过分布式(3机器起)可以模拟 3000并发
3) 分布式原理
原理如下:
l Master 是控制机,Slaves 是多个压力机,Target 是被测系统
l 分布式测试中,Master 通过命令行将测试脚本分发给所有 Slave
l Slave 不需要启动 Jmeter GUI,通过 CLI 模式执行测试,从而降低GUI占用的性能
l Slave 执行完后,会把结果回传给 Master
l Master 收集所有 Slave 的结果并汇总成一个结果集
注意
l 压力机也可以叫:负载机、代理机、执行机、奴隶机、肉鸡....各种各样的名字,但他们都是 Slave
l Master 也可以执行测试脚本,也可以不执行只负责管理
Master
l 控制机
l 运行JMeter GUI(控制测试)的机器
Slave
l 压力机
l 运行 jmeter-server 的机器
l 它从 GUI 接收命令并将请求发送到目标系统
Target
l 需要进行压力测试的 Web 服务器
实现分布式的前提条件
控制机和压力机的 jmeter 要一致
具体要求:
jmeter 版本要一致
jdk 主版本要一致(1.7、1.8...)
jmeter 脚本中,csv 文件要一致
jmeter 的插件要一致
同一局域网,防火墙开放端口
4) 压力机配置操作
5) 控制机配置步骤
6) 启动远程压力机(服务器)
7) 分布式压测注意事项
l 如果并发较高,建议将控制机设置为只启动测试脚本和收集汇总测试结果
l 分布式测试中,如果 1S 发送 100 个模拟请求,有 5 个压力机,那么需要将脚本的线程数设置为 20,否则模拟请求数会变成 500,和预期结果相差太大
l 只需要修改控制机的脚本,启动压力机之后,压力机执行的就是最新的脚本
打开Jmeter的安装目录找到bin,输入cmd,进入Jmeter的CLI命令行界面,然后输入一下命令:
jmeter -n -t E:\jdbc_mysql.jmx -l D:\result/report.jtl -e -o D:\report
参数介绍:
-n 非GUI模式执行JMeter
-t 测试计划保存的路径及文件名
-l 保存生成测试结果的文件
-e 测试结束后,生成测试报告
-o 存放生成测试报告的路径