51Testing软件测试论坛

标题: Jmeter性能测试 [打印本页]

作者: 草帽路飞UU    时间: 2022-7-26 14:58
标题: Jmeter性能测试
本帖最后由 草帽路飞UU 于 2022-8-11 16:10 编辑

1 性能测试

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

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

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

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

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

findAll

[attach]139590[/attach]

findById

[attach]139590[/attach]

saveSource

[attach]139590[/attach]

1.2.1.2 测试用例【调试】
[attach]140508[/attach]
1.2.1.3 性能测试【压力测试】

待研究。。。

1.2.2 录制脚本1.2.2.1 Jmeter脚本编写1.2.2.1.1 添加线程组 【测试计划上面点鼠标右键】
[attach]140511[/attach]
1.2.2.1.2 添加信息头管理器
[attach]140512[/attach]
[attach]140513[/attach]
1.2.2.1.3 添加HTTP请求
[attach]140514[/attach]
[attach]140515[/attach]
1.2.2.1.4 添加察看结果树
[attach]140516[/attach]
1.2.2.1.5 添加聚合报告
[attach]140517[/attach]
1.2.2.2 Jmeter代理服务器录制[attach]140518[/attach]
[attach]140519[/attach]

[attach]140521[/attach]
1.2.2.3 fiddler抓包导出
按F12可暂停/启动抓包,也可以通过菜单File->Capture Traffic暂停/启动。
[attach]140523[/attach]
下载地址:https://dev-081.baidupan.com/faa ... me=ImportExport.zip
[attach]140524[/attach]
导出Jmeter脚本
[attach]140525[/attach]
导入到Jmeter,结果如下
[attach]140526[/attach]



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请求参数化
[attach]140527[/attach]
注意:loopNum取值为-1时,循环次数对应永远

[attach]140528[/attach]
1.2.4.4.2 增加用户定义变量 【更好地管理外部变量】
[attach]140529[/attach]
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,设置写入文件
[attach]140530[/attach]
1.2.6 运行验证查看脚本运行效果
[color=rgba(0, 0, 0, 0.749019607843137)]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:
Result File:resulttest-2-3-4-20191214140610.jtl
Script File: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
[color=rgba(0, 0, 0, 0.749019607843137)][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












作者: 草帽路飞UU    时间: 2022-7-26 15:15
本帖最后由 草帽路飞UU 于 2022-8-4 15:54 编辑

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 能干什么?
[attach]139591[/attach]

2.2 Jmeter安装
1、Jmeter下载(需提前安装好JDK)
     http://archive.apache.org/dist/j ... ache-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使用
[attach]139592[/attach]
3 Jmeter常用组件3.1 测试计划

参考:https://www.cnblogs.com/smallstone2018/p/9776717.html

[attach]140532[/attach]

3.2 线程组
三类:setup线程组(前置)、线程组、teardown线程组(后置)
https://www.cnblogs.com/ldmjy/p/9059182.html
[attach]140533[/attach]
3.3 HTTP Cookie管理器

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

配置元件->HTTP Cookie管理器

[attach]140534[/attach]



3.4 HTTP请求默认值

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

配置元件->HTTP请求默认值

[attach]140535[/attach]

3.5 正则表达式提取器

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

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

[attach]140536[/attach]

[attach]140537[/attach]

3.6 Debug Sampler

可以拿到所有的变量值

取样器->调试取样器

[attach]140538[/attach]

3.7 断言+断言结果

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

断言->响应断言

监听器->断言结果

[attach]140539[/attach]

[attach]140540[/attach]

[attach]140541[/attach]

3.8 Synchronizing Timer

同步定时器,实现并发。

定时器->同步定时器

[attach]140542[/attach]

3.9 仅一次控制器

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

逻辑控制器->仅一次控制器

[attach]140543[/attach]

3.10 CSV数据文件设置

加载CSV文件(导入文件)

配置元件->CSV数据文件设置

[attach]140544[/attach]

4 Jmeter常用函数4.1 __Random函数
[attach]140545[/attach]
4.2 __P函数
[attach]140546[/attach]
4.3 __CSVRead函数
[attach]140547[/attach]






作者: 草帽路飞UU    时间: 2022-7-26 15:29
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使用
[attach]139608[/attach]
3 Jmeter常用组件3.1 测试计划

参考:https://www.cnblogs.com/smallstone2018/p/9776717.html

[attach]139609[/attach]

3.2 线程组

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

https://www.cnblogs.com/ldmjy/p/9059182.html

[attach]139610[/attach]

3.3 HTTP Cookie管理器

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

配置元件->HTTP Cookie管理器

[attach]139611[/attach]

3.4 HTTP请求默认值

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

配置元件->HTTP请求默认值

[attach]139612[/attach]

3.5 正则表达式提取器

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

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

[attach]139613[/attach]

[attach]139614[/attach]

3.6 Debug Sampler

可以拿到所有的变量值

取样器->调试取样器

[attach]139615[/attach]

3.7 断言+断言结果

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

断言->响应断言

监听器->断言结果

[attach]139616[/attach]

[attach]139617[/attach]

[attach]139618[/attach]

3.8 Synchronizing Timer

同步定时器,实现并发。

定时器->同步定时器

[attach]139619[/attach]

3.9 仅一次控制器

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

逻辑控制器->仅一次控制器

[attach]139620[/attach]

3.10 CSV数据文件设置

加载CSV文件(导入文件)

配置元件->CSV数据文件设置

[attach]139621[/attach]

4 Jmeter常用函数4.1 __Random函数
[attach]139622[/attach]
4.2 __P函数
[attach]139623[/attach]
4.3 __CSVRead函数
[attach]139624[/attach]
5 其他5.1 设置中文语言[attach]139625[/attach]
配置文件里面设置【终极解决方案】
在Jmeter安装目录的bin目录下修改jmeter.properties文件
搜索language,改成 language=zh_CN 【如没有则新增】
5.2 Jmeter函数助手对话框
[attach]139626[/attach]
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 可以在元件上面右键选择禁用,来忽略执行当前元件
[attach]139627[/attach]









欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2