jmeter做个性能测试小记
性能测试的前提(主要确定是否需要做性能测试):
1、性能测试必要性研究
主要是关键项的评估:
①监管部门要审查的
②涉及到生命财产安全的
③大型新系统
④核心系统
⑤架构调整
⑥业务剧增
⑦重大缺陷修复
2、可测性
可量化为性能指标值
性能测试主要指标
1、响应时间:请求发起到收到结果的时间
2、并发数
3、吞吐量/吞吐量
4、tps:每秒通过事务数(数量,没有单位)(PS:单个接口请求下,并发用户数会与tps接近)
(QPS:每秒通过的请求数(单接口下与tps相同,多接口不同)
5、资源利用率
CPU、内存、磁盘 IO 的使用情况, 每个核使用率不能超过80%
性能测试的必备条件
1、网络要求:性能测试、工具、服务 在同一个网络下 (内网(同一个zoom域) 或 外网)
2、独立的环境
jmeter的安装
1、下载安装
官网下载地址:http://jmeter.apache.org/download_jmeter.cgi
选择binary版本即可。
下载完成后解压到你希望的位置。
注:jmeter需有Java环境支持,不同版本对Java版本的要求不同,记得选择对应版本
2 、配置环境变量
“计算机”图标右键选择“属性”->点击高级系统设置->高级->环境变量->系统变量
1) 创建JMETER_HOME,值是JMeter的解压路径;
2) 如果没有classpath则新建,在classpath 变量添加以下中括号内容(注意分号):
【%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;】
3 启动jmeter
进入解压目录的bin文件下,双击jmeter.bat,启动JMeter。可将jmeter.bat发送到桌面快捷方式,方便打开。
使用时不要关闭命令窗口
4、修改jmeter版本语言
jmeter安装目录\bin\jmeter.properties,找到第40行,添加配置【language=zh_CN】后重启jmeter
5、插件安装
下载plugins-manager.jar,官方下载地址:https://jmeter-plugins.org/downloads/all/
完成后将jar包放在jmeter安装目录下的\lib\ext文件夹中,启动jmeter,plugins manager出现在选项下。
jmeter工具介绍
线程组
1、普通线程组
一般找到拐点后,直接使用普通线程组压测
2、setupping thread group - 递增式场景
一般可用来寻找拐点
3、Ultimate Thread Group - 波浪形场景
适用场景比如:饭点人数多,非饭点人数少的场景
http默认请求
一个线程组可能有很多个请求,我们需要给每个请求配置协议、服务器IP、端口号等等,如果这些请求都是向同一台服务器发送请求的话,可以将这些共同的、重复的内容放在【HTTP请求默认值】中,线程组内的请求就不用每次都配置这些了。只需要写不同的部分就好了。
添加HTTP请求默认值:
添加http请求默认值
线程组下添加http请求
添加查看结果树
点击执行,则可看到执行结果
提取器
1、json提取器
变量使用:${token}
如果要提取多个值,各项配置内容以分号间隔
2、正则提取器
正则表达式:
(.)换行符以外所有的字符
* 多次
? 1次
.* 0次或多次
.+ 1次或多次
[0-9] 匹配1个数字
[0-9]+ 至少匹配1次
\d+ 匹配0到多个数字
\w+ 匹配多个字母和数字
性能测试流程
1、测试准备
——需求分析(熟悉业务)
——明确性能目标
——了解软件功能、架构
——指定测试模型
——指定测试计划,做好工作量评评估
2、搭建环境
——工具选项与准备
——被测系统环境搭建(服务器、服务版本更新、数据库数据准备)
——网络配置
3、测试脚本开发
——协议
——制作脚本
——调试脚本
——验证脚本
4、测试执行
5、结果分析与调优
6、测试结果与测试跟踪
数据准备
设计场景:
阶梯式、波浪式
监视器(根据性能指标需要):
TPS图表、聚合报告\汇总报告、查看结果树、响应时间、吞吐量、服务器资源监控
分析思路:
服务器硬件瓶颈 --> 网络瓶颈 --> 服务器操作系统瓶颈(参数配置、数据库、web服务器) --> 应用瓶颈(sql语句、数据库设计、业务逻辑、算法)
性能分析
步骤1、查看结果树有没有报错
步骤2、聚合报告、汇总报告查看
最大值、最小值、标准方差
差异很大:说明有问题,不能达到预期
差异很小:均衡,说明正常
步骤3、趋势图分析
①tps趋势图
直接下降:不能满足测试的并发数,需要降低并发数
(这种场景一般出现在用普通的线程,可以先试50个,不行再试25个。如果阶梯式的,可以慢慢增加,比如每次增加10个)
先上升后下降:(寻找拐点比较合适)
阶梯式并发数逐步增加,tps慢慢增加,突然下降之后,这个顶点(A)就是拐点(如图)。
方法:根据横坐标轴的B区间的时间,去查看这个时间段内共执行了多少个线程,在用这个线程范围内的数量,再做一次,找到一个基本准确的并发值
先下降再上升:没有这种情况
②响应时间(趋势图)
发起请求+收到请求时间 (看运行时间的最大值,是否符合要求)
直接下降:一开始就特别高,然后一直下降
(如果阶梯式设计不太合理(比如一共100线程,一开始启动80, 或者一开始0个,突然加50)会出现这种情况)
先上升后下降:任务已经结束,或者服务器宕机
先下降后上升
③吞吐量/吞吐率(趋势图)
直接下降:处理不过来了,或者网络问题
先上升后下降:比较正常(随着用户量增加,吞吐量会随着上升,达到一定数量之后,才会降下来。在拐点位置也是需要看的—)
先下降后上升:没这回事
④服务器资源监控(趋势图)
最大值不能超过80%
(PS:偶尔只有一个点超过80%,可以先不管,多个超过了需要分析,需要先检查服务器)