快捷搜索:  汽车  科技

jmeter能做性能测试吗(Jmeter性能测试)

jmeter能做性能测试吗(Jmeter性能测试)3、调试脚本场景计划、工具选择、安排计划1、测什么?熟悉项目、熟悉场景、性能指标2、怎么测?

jmeter能做性能测试吗(Jmeter性能测试)(1)

1 性能测试

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

性能测试的目标:(用户数)多、(响应时间)快、(稳定性)好、(资源)省。

从1到N,即先调试好再测试性能。

1.1 性能测试流程

1、测什么?

熟悉项目、熟悉场景、性能指标

2、怎么测?

场景计划、工具选择、安排计划

3、调试脚本

脚本开发、脚本优化

4、监控调优

数据监控、问题分析、性能调优

5、结果汇总

性能分析汇总、定论与优化方式、专业的性能报告

1.2 性能测试步骤

1.2.1 文档编写

1.2.1.1 接口文档

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

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

  • findAll

jmeter能做性能测试吗(Jmeter性能测试)(2)

  • findById

jmeter能做性能测试吗(Jmeter性能测试)(3)

  • saveSource

jmeter能做性能测试吗(Jmeter性能测试)(4)

1.2.1.2 测试用例【调试】

jmeter能做性能测试吗(Jmeter性能测试)(5)

1.2.1.3 性能测试【压力测试】

待研究

1.2.2 录制脚本

1.2.2.1 Jmeter脚本编写

1.2.2.1.1 添加线程组 【测试计划上面点鼠标右键】

jmeter能做性能测试吗(Jmeter性能测试)(6)

1.2.2.1.2 添加信息头管理器

jmeter能做性能测试吗(Jmeter性能测试)(7)

jmeter能做性能测试吗(Jmeter性能测试)(8)

1.2.2.1.3 添加HTTP请求

jmeter能做性能测试吗(Jmeter性能测试)(9)

jmeter能做性能测试吗(Jmeter性能测试)(10)

1.2.2.1.4 添加察看结果树

jmeter能做性能测试吗(Jmeter性能测试)(11)

1.2.2.1.5 添加聚合报告

jmeter能做性能测试吗(Jmeter性能测试)(12)

1.2.2.2 Jmeter代理服务器录制

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

测试计划->右键->非测试元件->HTTP代理服务器

jmeter能做性能测试吗(Jmeter性能测试)(13)

  • 代理设置

通过Internet选项,添加代理

jmeter能做性能测试吗(Jmeter性能测试)(14)

通过设置添加代理

jmeter能做性能测试吗(Jmeter性能测试)(15)

1.2.2.3 fiddler抓包导出

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

  • 抓包

jmeter能做性能测试吗(Jmeter性能测试)(16)

  • 下载jmeter导出插件

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

  • 添加插件,重启

jmeter能做性能测试吗(Jmeter性能测试)(17)

复制到Fiddler安装目录的ImportExport目录下

  • 导出Jmeter脚本

jmeter能做性能测试吗(Jmeter性能测试)(18)

  • 导入到Jmeter,结果如下

jmeter能做性能测试吗(Jmeter性能测试)(19)

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请求参数化

jmeter能做性能测试吗(Jmeter性能测试)(20)

注意:loopNum取值为-1时,循环次数对应永远

jmeter能做性能测试吗(Jmeter性能测试)(21)

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

jmeter能做性能测试吗(Jmeter性能测试)(22)

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,设置写入文件

jmeter能做性能测试吗(Jmeter性能测试)(23)

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

关键信息:

测试功能、度量性能。

2.1 能干什么?

jmeter能做性能测试吗(Jmeter性能测试)(24)

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使用

jmeter能做性能测试吗(Jmeter性能测试)(25)

3 Jmeter常用组件

3.1 测试计划

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

jmeter能做性能测试吗(Jmeter性能测试)(26)

3.2 线程组

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

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

jmeter能做性能测试吗(Jmeter性能测试)(27)

3.3 HTTP Cookie管理器

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

配置元件->HTTP Cookie管理器

jmeter能做性能测试吗(Jmeter性能测试)(28)

3.4 HTTP请求默认值

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

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

jmeter能做性能测试吗(Jmeter性能测试)(29)

3.5 正则表达式提取器

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

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

jmeter能做性能测试吗(Jmeter性能测试)(30)

jmeter能做性能测试吗(Jmeter性能测试)(31)

3.6 Debug Sampler

可以拿到所有的变量值

取样器->调试取样器

jmeter能做性能测试吗(Jmeter性能测试)(32)

3.7 断言 断言结果

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

断言->响应断言

监听器->断言结果

jmeter能做性能测试吗(Jmeter性能测试)(33)

jmeter能做性能测试吗(Jmeter性能测试)(34)

jmeter能做性能测试吗(Jmeter性能测试)(35)

3.8 Synchronizing Timer

同步定时器,实现并发。

定时器->同步定时器

jmeter能做性能测试吗(Jmeter性能测试)(36)

3.9 仅一次控制器

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

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

jmeter能做性能测试吗(Jmeter性能测试)(37)

3.10 CSV数据文件设置

加载CSV文件(导入文件)

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

jmeter能做性能测试吗(Jmeter性能测试)(38)

4 Jmeter常用函数

4.1 __Random函数

jmeter能做性能测试吗(Jmeter性能测试)(39)

4.2 __P函数

jmeter能做性能测试吗(Jmeter性能测试)(40)

4.3 __CSVRead函数

jmeter能做性能测试吗(Jmeter性能测试)(41)

5 其他

5.1 设置中文语言

  • 编辑器里面设置【重启后失效】

jmeter能做性能测试吗(Jmeter性能测试)(42)

  • 配置文件里面设置【终极解决方案】

在Jmeter安装目录的bin目录下修改jmeter.properties文件

搜索language,改成 language=zh_CN 【如没有则新增】

5.2 Jmeter函数助手对话框

jmeter能做性能测试吗(Jmeter性能测试)(43)

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 可以在元件上面右键选择禁用,来忽略执行当前元件

jmeter能做性能测试吗(Jmeter性能测试)(44)

原文链接:https://blog.csdn.net/llb_3601478/article/details/117367720

猜您喜欢: