性能测试–jmeter使用
一、环境安装
1、jdk(1.8以上)
2、jmeter 下载地址: https://jmeter.apache.org/
二、jmeter各文件的作用
三、jmeter启动
四、content-type编码种类
五、jmeter基本使用
1、jmeter脚本的组成
- 线程组
- 取样器
- 监听器
2、新建线程组
测试计划-右键
3、新建取样器
线程组-右键
参数设置:
默认格式的参数:
其他格式的参数(json/xml)
4、添加消息头
线程组-右键/新建的取样器-右键
5、添加监听器
线程组-右键/新建的取样器-右键
6、关于编码
参数/请求的内容编码设置
还可以在Content-Type中设置
7、脚本的录制
1)badboy录制(不常用)
2)jmeter录制
参考博客:https://blog.csdn.net/qq_28817739/article/details/88081000
8、参数化
引用:
${参数名}
定义
用户定义的变量:
1)线程组:
当前线程组-右键
2)测试计划
点击测试计划
3)两者的区别
线程组的变量只作用于当前线程组,不可跨线程组
测试计划的变量作用于整个测试计划
如果两者都存在,遵循临近原则
4)两者的相同点
加载当前测试计划或者线程组时只被读取一次,以后所有的线程都会使用第一次读到的数据,相当于全局变量
用户参数:
当前线程组-右键
与用户定义变量的区别:
每执行一次线程都会重新读取,相当于局部变量
csv文件或者txt文件的使用
线程组–右键
9、常用的函数
函数的格式: ${__函数名()}
常见的函数:
${__Random(min,max,赋值的变量)} 随机数
${__property(,)} 获取属性
${__setProperty(,)} 设置属性
${__time(yyyymmdd,)} 时间函数
${__digest(md5,)} 加密函数
${__V(,)} 拼接两个变量
10、json提取器
右键–取样器
10、正则提取器
11、断言
可以使用这种形式去匹配上面提取出来的值,其中value为上面存贮的变量
11、插件的使用
1、下载 jmeter-plugins-manager https://jmeter-plugins.org/install/Install/
2、将 jmeter-plugins-manager-1.3.jar
包放到jmeter安装目录lib/ext里面,重启jmeter
会发现选项下面出现插件管理
jpgc插件的使用
下载jpgc
jpgc线程组负载测试折线图分析
负载测试遵循 缓起步,快结束
jpgc线程组波峰或者压力测试折线图分析
六、分布式
前提: 保证其他机器和本机的jdk、jmeter版本一致,网络放在同一个局域网下
控制机的配置:
jmeter.properties
➢server_ port = 1234 (自己定义的)
➢server.rmi.port = 1234 (同上)
➢server.rmi. ssI. disable= True(去掉认证)
➢linux 下bin目录赋予执行chmod +x -R bin/
➢bin启动:
linux下:sh jmeter-server.sh -Djava.rmi. server.hostname=127.0.0.1 (若出现连接不上使用本机的ip)
windows下: jmeter-server.bat -Djava.rmi. server.hostname=127.0.0.1 (若出现连接不上使用本机的ip)
➢配置防火墙:
linux: systemctl stop firewalld.service (关闭防火墙)或者 开放你上面设置的端口
windows:关闭防火墙
主控机配置:
jmeter.properties:
➢remote_ hosts= 助攻机器ip:端口 多台机器用逗号隔开
➢server.rmi.ssl.disable=true
➢mode=Standard 可选 打开标准模式 可以查看日志
➢重启jmeter
启动远程管理:
总的线程数 = 主机线程数 * 受控机的个数
七、ant + jenkins 持续集成
ant 安装及配置
1、 下载 ant 包,解压 http://ant.apache.org
2、 打开系统环境变量, 添加 ANT_HOME 为 ant 路径, 在$PATH 中添加%ANT_HOME%\bin
3、 修改 jmeter 的 jmeter.properties jmeter.save.saveservice.output_format=xml
4、 jmeter 的 extras 文件夹中的 ant-jmeter.***.jar 拷贝到 ant 的 lib 文件夹中 用 于 发邮件
5、 验证环境配置: 进入 jmeter 的 extras 文件夹下, 运行 cmd, 输入: ant.bat-file build.xml -Dtest=Test 如果一切成功, 说明配置好了, 没有成功, 就具体问题具体分析
6、 修改 build.xml 文件
进入 jmeter 的 extras 文件夹, 找到 build.xml 文件, 修改该文件
jenkins安装及配置
1、jenkins 安装
2、下载 ant 插件
3、系统管理-> GlobalTool Configuration 配置 Ant 路径
4、 新建一个任务, 选择 freestyle project
5、 在任务的‘构建’中, 选择 invoke ant ,targets 要填写 build.xml 中的 antcall 的值, 保存应用
6、build.xm文件的修改
八、无界面
命令:
执行本地脚本: jmeter -n -t 脚本.jmx -l report.jtl -e -o reportdir(测试报告保存路径)
-n: (non gui mode)无图形界面模式
-t: testplan待执行的测试计划jmeter -n -t \script\csvRead.jmx
-l: 输出结果报告文件路径文件名(.jtl/.csv) -g: 输出报告文件(.csv)
-r/R: 分布式指定机器ip分压运行(jmeter -n -t ‘脚本jmx’ -r -l report.jtl)
-j: 指定执行日志路径
-H:指定代理服务区域名或ip
-P:指定代理服务器端口
-e:测试结束后,生成测试报告
-o:指定测试报告的存放位置
九、性能测试分析
1、设计场景
阶梯式(负载测试) —找出性能指标
波浪式(压力测试) — 验证性能指标
2、监听器
用于收集性能分析的数据
例如:
TPS图表、聚合报告\汇总报告、查看结果树、响应时间、吞吐量、服务器资源监控: cpu、内存、磁盘io
3、分析:
分析思路:服务器硬件瓶颈(保证服务器的硬件资源和生产的相匹配)->网络瓶颈->服务器操作系统瓶颈(参数配置、数据库、web服务器) ->应用瓶颈(sq语句、数据库设计.业务逻辑、算法)
[由外而内、由表及里、层层深入]
1)查看结果树发生错误
比如无法连接服务器:a、在当前并发的时候服务器崩溃 b、应用连接数过高 c、数据库连接数过高
比如连接超时:返回的数据量太大
2)聚合报告、汇总报告
最大值、最小值、方差
a、差异很大说明有问题,不能达到预期
b、差异很小,正常
3)tps
随之并发的增加,tpc先增后降 说明在某一并发下,服务器出现瓶颈
3)响应时间
随之并发的增加,响应时间缓慢增加,某一时刻陡然上升,服务器出现瓶颈
4)资源利用率,一般以 平均使用80%界限进行测试
随之并发的增加,资源利用率逐渐上升,最后饱和。
十、性能测试流程
1、测试准备
需求分析--------熟悉业务
明确性能测试目标
了解软件功能、架构
制定测试模型
指定测试计划,做好工作量评估
2、搭建测试环境
工具选项与准备
被测系统环境搭建(服务器、服务版本更新、数据库数据准备)
网络配置
3、脚本开发
协议
制作脚本
调试脚本
验证脚本
4、测武执行
5、结果分析与调优
6.测试结果与结果跟踪