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 添加线程组 【测试计划上面点鼠标右键】

    1.2.2.1.2 添加信息头管理器

    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 4Config Map:jmeterPath ---- D:/Soft/Tools/Apache/apache-jmeter-5.1.1Config Map:requestPath ---- /findByIdBase Path:D:test1Result File:D:test1resulttest-2-3-4-20191214140610.jtlScript File:D:test1test.jmxParams:-Jname=test-2-3-4-20191214140610 -JrequestPath=/findById -JthreadNum=2 -JrampupTime=3 -JloopNum=4Start Time:14:06:10.99Creating summariser <summary>Created the tree successfully using D:test1test.jmxStarting the test @ Sat Dec 14 14:06:12 CST 2019 (1576303572319)Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445summary = 8 in :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 runEnd Time:14:06:13.77cost:0 minute 3 second
  • Linux测试命令
  • [hadoop@hadoop jmeterTest]$ chmod +x jmeterTest.sh[hadoop@hadoop jmeterTest]$ ./jmeterTest.sh 2 3 4Base Path:/home/hadoop/jmeterTestResult File:/home/hadoop/jmeterTest/result/test-2-3-4-20191214060925.jtlScript File:/home/hadoop/jmeterTest/test.jmxJmeter Log File:/home/hadoop/jmeterTest/result/test-2-3-4-20191214060925.logDstat File:/home/hadoop/jmeterTest/result/test-2-3-4-20191214060925.csvParams:-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 writ14-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.7114-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 014-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.0014-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 能干什么?

    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启动

    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管理器

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年4月15日
    下一篇 2022年4月15日

    相关推荐