Jmeter性能测试

1 性能测试

通过并发实现多负载访问软件系统,监控与分析相关性能指标数据,找出性能瓶颈并进行优化,达到预期效果;而不仅仅是工具的使用。

性能测试的目标:(用户数)多、(响应时间)快、(稳定性)好、(资源)省。
从1到N,即先调试好再测试性能。

1.1 性能测试流程

1、测什么?
熟悉项目、熟悉场景、性能指标
2、怎么测?
场景计划、工具选择、安排计划
3、调试脚本
脚本开发、脚本优化
4、监控调优
数据监控、问题分析、性能调优
5、结果汇总
性能分析汇总、定论与优化方式、专业的性能报告

1.2 性能测试步骤

1.2.1 文档编写

1.2.1.1 接口文档

如果没有接口文档,可以使用抓包工具测试接口获取必要信息,然后编写接口文档。

接口文档需提供:接口地址、返回格式、请求方式、请求参数、请求头、调用示例、返回示例(可能包含正常和异常返回)

  • findAll
    在这里插入图片描述
  • findById
    在这里插入图片描述
  • saveSource
    在这里插入图片描述
1.2.1.2 测试用例【调试】

在这里插入图片描述

1.2.1.3 性能测试【压力测试】

待研究。。。

1.2.2 录制脚本

1.2.2.1 Jmeter脚本编写
1.2.2.1.1 添加线程组 【测试计划上面点鼠标右键】

20191213150806293.png

1.2.2.1.2 添加信息头管理器

20191213154420208.png

1.2.2.1.3 添加HTTP请求

在这里插入图片描述
在这里插入图片描述

1.2.2.1.4 添加察看结果树

在这里插入图片描述

1.2.2.1.5 添加聚合报告

在这里插入图片描述

1.2.2.2 Jmeter代理服务器录制
  • Jmeter设置,添加HTTP代理服务器

测试计划->右键->非测试元件->HTTP代理服务器
在这里插入图片描述

  • 代理设置

通过Internet选项,添加代理
在这里插入图片描述

通过设置添加代理
在这里插入图片描述

1.2.2.3 fiddler抓包导出

按F12可暂停/启动抓包,也可以通过菜单File->Capture Traffic暂停/启动。

  • 抓包

在这里插入图片描述

  • 下载Jmeter导出插件

下载地址:https://dev-081.baidupan.com/faa68c1910a31fead35d3445eeec62d2/1578037312/2019/03/15/39bb2ddd5d6e1d201efc807a0eb40223.zip?filename=ImportExport.zip

  • 添加插件,重启

复制到Fiddler安装目录的ImportExport目录下
在这里插入图片描述

  • 导出Jmeter脚本
    在这里插入图片描述

  • 导入到Jmeter,结果如下
    在这里插入图片描述

1.2.2.4 badboy录制

待研究。。。

1.2.3 脚本调试

场景关联、断言预测、Debug调试

1.2.4 脚本优化

跨线程组、beanshell脚本、java代码开发、参数化【CVS数据控件(CSV Data Set Config)、用户自定义变量、函数助手(__CSVRead)、用户参数】

1.2.4.4.1 线程组/HTTP请求参数化

在这里插入图片描述
注意:loopNum取值为-1时,循环次数对应永远
在这里插入图片描述

1.2.4.4.2 增加用户定义变量 【更好地管理外部变量】

在这里插入图片描述

1.2.5 扩展监控设置

CPU、IO、内存、网络等服务器资源变化情况

脚本增加监控操作、命令监控

1.2.5.1 下载ServerAgent-xxx.jar

http://jmeter-plugins.org/files/ServerAgent-2.2.1.zip

1.2.5.2 下载插件

http://jmeter-plugins.org/files/JMeterPlugins-Extras-1.3.1.zip

https://jmeter-plugins.org/files/JMeterPlugins-Standard-1.4.0.zip

1.2.5.3 服务端操作
  • 上传ServerAgent-2.2.1.zip

  • 在服务器解压

    unzip ServerAgent-2.2.1.zip

  • 启动【默认端口4444】

    startAgent.bat 【Windows】

    startAgent.sh 【Linux】

1.2.5.4 客户端操作
  • 将JMeterPlugins-Extras-1.3.1.zip和JMeterPlugins-Standard-1.4.0.zip解压

  • 分别取lib/ext下的JmeterPlugins-Standard-1.3.1.jar和JMeterPlugins-Extras-1.3.1.jar放到Jmeter安装目录的lib/ext目录下面

  • 重启Jmeter

  • 脚本增加jp@gc-PertMon Metrics Collector,设置写入文件
    在这里插入图片描述

1.2.6 运行验证

查看脚本运行效果

  • Windows测试
D:\test1>jmeterTest.bat 2 3 4
Config Map:jmeterPath ---- D:/Soft/Tools/Apache/apache-jmeter-5.1.1
Config Map:requestPath ---- /findById
Base Path:D:\test1\
Result File:D:\test1\result\test-2-3-4-20191214140610.jtl
Script File:D:\test1\test.jmx
Params:-Jname=test-2-3-4-20191214140610 -JrequestPath=/findById -JthreadNum=2 -JrampupTime=3 -JloopNum=4
Start Time:14:06:10.99
Creating summariser <summary>
Created the tree successfully using D:\test1\test.jmx
Starting the test @ Sat Dec 14 14:06:12 CST 2019 (1576303572319)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary =      8 in 00:00:01 =   12.1/s Avg:   119 Min:     6 Max:   447 Err:     0 (0.00%)
Tidying up ...    @ Sat Dec 14 14:06:13 CST 2019 (1576303573400)
... end of run
End Time:14:06:13.77
cost:0 minute 3 second
  • Linux测试命令
[hadoop@hadoop jmeterTest]$ chmod +x jmeterTest.sh 
[hadoop@hadoop jmeterTest]$ ./jmeterTest.sh 2 3 4
Base Path:/home/hadoop/jmeterTest
Result File:/home/hadoop/jmeterTest/result/test-2-3-4-20191214060925.jtl
Script File:/home/hadoop/jmeterTest/test.jmx
Jmeter Log File:/home/hadoop/jmeterTest/result/test-2-3-4-20191214060925.log
Dstat File:/home/hadoop/jmeterTest/result/test-2-3-4-20191214060925.csv
Params:-Jname=test-2-3-4-20191214060925 -JrequestPath=/findById -JthreadNum=2 -JrampupTime=3 -JloopNum=4 -Jip=192.168.100.1 -Jport=8080 -Jprotocol=http -Jmethod=POST
----system---- ----total-cpu-usage---- -dsk/total- ---load-avg--- ------memory-usage----- -net/total- ---procs--- ----swap--- ---system-- --io/total-
     time     |usr sys idl wai hiq siq| read  writ| 1m   5m  15m | used  buff  cach  free| recv  send|run blk new| used  free| int   csw | read  writ
14-12 06:09:25|  1   1  97   0   0   0| 806k   33k|0.01 0.06 0.05| 218M 2068k  225M 1393M|   0     0 |  0 0.0  12|   0  2048M| 237   276 |14.7  1.71 
14-12 06:09:26| 38  11  37  12   0   2|  47M    0 |0.17 0.09 0.06| 248M 2068k  270M 1318M|  60B 3104B|3.0 1.0  38|   0  2048M|3035  2334 | 822     0 
14-12 06:09:27| 66   7  20   5   0   2|  23M   68k|0.17 0.09 0.06| 279M 2068k  293M 1264M|  60B  618B|3.0   0 1.0|   0  2048M|2898  1151 | 440  9.00 
14-12 06:09:28| 81   4  14   1   0   1| 256k    0 |0.17 0.09 0.06| 323M 2068k  293M 1220M|3072B 4340B|4.0   0 6.0|   0  2048M|2767   975 |20.0     0 dstat PID:3503 stop successful!
./jmeterTest.sh: line 106:  3503 Terminated              dstat -tcdlmnpsyr --output ${dstatFile} 1
本次运行时间:3s

1.3 监控平台

传统监控:分散、可视化效果差、监控繁琐、没有体系
dstat -tcdlmnpsyr --output ${dstatFile} 1 【一秒输出一次,后台运行不堵塞】
top 【CPU、内存等查看】
监控平台:集成性高、可视化效果好、监控简单、多维度监控 
Grafana监控 待研究。。。

1.4 常见场景

tomcat:链接数、connectionTimeout、acceptCount、禁用DNS查询
JVM:堆栈大小、GC原理、代码层问题
资源:CPU使用率、内存、磁盘、网络
数据库:慢查询、表模式、数据库架构

1.5 性能测试总结与报告

1、测试基本信息:包含测试目的、报告目标读者、术语定义、参考资料。
2、测试环境描述:包含服务器软/硬件环境、网络环境、测试工具、测试人员
3、性能测试案例执行分析:需要详细描述每个测试案例的执行情况,以及对应的测试结果分析。
4、测试结果综合分析及建议:对本次性能测试做综合分析,并给出测试结论和改进建议。
5、测试经验总结。

2 Jmeter

官网:http://jmeter.apache.org/index.html

简介:

The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance.

It was originally designed for testing Web Applications but has since expanded to other test functions.

关键信息:

测试功能、度量性能。

2.1 能干什么?

在这里插入图片描述

2.2 Jmeter安装

1、Jmeter下载(需提前安装好JDK)
     http://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.2.tgz
2、解压,如解压到D:/tools
3、添加环境变量
    添加系统环境变量JMETER_HOME,值设置为D:/tools/apache-jmeter-5.2

2.3 Jmeter启动

GUI方式启动:
    在Windows中,找到Jmeter安装目录,双击jmeter.bat即可启动。

非GUI方式启动:
    jmeter.bat(Windows)/jmeter.sh(Linux) -n -t test-file [-p property-file] [-l results-file] [-j log-file]
    n:非GUI模式执行JMeter;
	t:脚本文件(.jmx文件)的路径;
	p:指定profile运行
	l:指定生成测试结果的保存文件(.jtl格式),此文件必须不存在;
	j:测试日志存储文件。
非GUI方式启动并导出测试报告:
	jmeter -n -t C:\Users\ZC\Desktop\test.jmx -l report.jtl -e -o 导出目录
	参数说明:
	n:非GUI模式执行JMeter;
	t:脚本文件(.jmx文件)的路径;
	l:指定生成测试结果的保存文件(.jtl格式),此文件必须不存在;
	e:测试结束后,生成测试报告;
	o:用于存放测试报告的路径。
注意:
    GUI mode should only be used for creating the test script, CLI mode (NON GUI) must be used for load testing.
	jmeter-server.bat可用于分布式测试

2.4 Jmeter使用

在这里插入图片描述

3 Jmeter常用组件

3.1 测试计划

参考:https://www.cnblogs.com/smallstone2018/p/9776717.html
在这里插入图片描述

3.2 线程组

三类:setup线程组(前置)、线程组、teardown线程组(后置)

https://www.cnblogs.com/ldmjy/p/9059182.html
在这里插入图片描述

3.3 HTTP Cookie管理器

自动提取默认参数并设置,打开页面就有Cookie。

配置元件->HTTP Cookie管理器
在这里插入图片描述

3.4 HTTP请求默认值

多请求的时候用到(如物联网同时增加未知产品的设备)

配置元件->HTTP请求默认值
在这里插入图片描述

3.5 正则表达式提取器

“DATA”:{(.+?)},然后可以通过${token}来提取该参数。

后置处理器->正则表达式提取器

在这里插入图片描述

3.6 Debug Sampler

可以拿到所有的变量值

取样器->调试取样器
在这里插入图片描述

3.7 断言+断言结果

类似测试用例,断言放到需要断言的请求域下面

断言->响应断言

监听器->断言结果

在这里插入图片描述
在这里插入图片描述

3.8 Synchronizing Timer

同步定时器,实现并发。

定时器->同步定时器
在这里插入图片描述

3.9 仅一次控制器

每个线程运行一次(放到线程下面,用于登录等一次性操作)

逻辑控制器->仅一次控制器
在这里插入图片描述

3.10 CSV数据文件设置

加载CSV文件(导入文件)

配置元件->CSV数据文件设置
在这里插入图片描述

4 Jmeter常用函数

4.1 __Random函数

在这里插入图片描述

4.2 __P函数

在这里插入图片描述

4.3 __CSVRead函数

在这里插入图片描述

5 其他

5.1 设置中文语言

  • 编辑器里面设置【重启后失效】
    在这里插入图片描述

  • 配置文件里面设置【终极解决方案】
    在Jmeter安装目录的bin目录下修改jmeter.properties文件
    搜索language,改成 language=zh_CN 【如没有则新增】

5.2 Jmeter函数助手对话框

5.3 命令行测试结果没有请求响应,显示No Data Display

在Jmeter安装目录的bin目录下修改user.properties文件,加上下面六行

jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true

5.4 可以在元件上面右键选择禁用,来忽略执行当前元件

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖毁青春,瘦解百病

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值