网站首页 > java教程 正文
Jmeter组件分类说明
Jmeter的组件可以放在任意位置
线程池:用于创建线程。每个线程会"批次顺序"执行任务,因此后面的任务可根据前面的任务决定具体的操作。
1. 普通线程组(主线程组):用于创建主要的线程任务
2. setUp线程组: 在普通线程组之前触发,用于做测试的前置操作,例如创建测试账户
3. tearDown线程组: 在普通线程组之后触发,用于做测试的后置操作,例如清理工作。
取样器:用来模拟http,tcp请求。取样器父节点需要包含线程组,否则不会执行
前置处理器: 用于定义取样器前置操作,例如定义用户生成,JDBC操作。
后置处理器:用于解析取样器结果,父节点需包含取样器。
断言:用来判断取样器结果,父节点需包含取样器。
定时器:用于控制并发请求的频率。当父节点为取样器,只对父节点生效。当父节点为线程组,对整个线程组生效。
配置元件:用于配置公共数据,可被同级节点或同级节点的子节点引用
监听器:用于统计测试结果,形成图表。常用的有察看结果树,汇总报告,聚合报告。可通过安装Plugins Manager来丰富监听器的类型。
假如想查看每个分类的详细说明,可以查看:倔强的潇洒小姐
火焰图
火焰图不建议直接在google搜索,虽然可以得到很多结果,但是年份都在2017以前。但是不知为何都不能使用。Intellj Idea在2018.3之后推出了火焰图,但是最终我也没法解决这个问题。所以建议在github搜索flame graph
假如你是Linux用户,使用
https://github.com/brendangregg/FlameGraph
假如你是Mac用户,使用
https://github.com/kjeremi/java-flame-graph-osx
Java+Jmeter+火焰图+Macos 举例
操作流程
启动Java后台项目, 9999端口,api为http://localhost:9999/v1/searchsrv/all/activities?value=1。请使用控制台启动。例如
# 记住包名
java -jar mockserver.jar
# api 返回值结构为
#{
# "error": null,
# "result": {},
# "success": true
#}
#在macos上,启动火焰图,并追踪到mockserver
#需要下载上面那个火焰图工具
./createFlameGraph.sh mockserver
启动Jmeter,添加线程组
线程组右键->配置原件->http请求默认值,协议http,服务名称localhost,端口号9999
线程组右键->配置原件->用户自定义的变量
线程组右键->取样器->http请求。
协议,服务器名称,端口号都置空,会自动获取http请求默认值
参数取了用户自定义的变量
http请求右键添加->断言->json断言->用于判断api返回是否正确。不添加默认只有http code 200认为是正确的
线程组右键添加->监听器->察看结果树->用于查看各个api的详细执行结果.也可以添加在http取样器下面,单独监听。
线程组右键添加->监听器->汇总报告->用于查看各个api汇总的结果,也可添加在http取样器下面,单独监听。
Jmeter查看查看结果
通过察看结果树查看请求是否成功,自定义变量是否生效,JSON断言是否生效
通过汇总报告查看请求汇总情况:
火焰图查看调用堆栈
1.Jmeter接口循环多跑几次
2.停止Java项目
3.在火焰图工具目录下找到最新的svg文件,使用浏览器打开更丰富多彩的图形展示
jmeter虽然在可视化界面运行时能有很多图形界面,但是开启了会影响性能。所以建议使用命令行跑,然后生成一个html的页面
下面提供一个脚本,每次运行会根据时间生成一个目录,并将可视化界面生成到目录下。使用的时候需要修改resultPath(结果路径),sciptFile(脚本路径)
可视化 CLI 模式
#设置结果集记录
time_now=`date "+%Y-%m-%d_%H_%M_%S"`
resultPath=/Users/hehe/performanceTest/localRun/result/${time_now}
logPath=${resultPath}/log
samplePath=${resultPath}/sample
reportPath=${resultPath}/report
mkdir ${resultPath}
mkdir ${logPath}
mkdir ${samplePath}
mkdir ${reportPath}
#设置脚本路径
scriptFile=/Users/hehe/performanceTest/localRun/script.jmx
#设置jmeter路径
jmeterPath=/Users/klook/SoftwareInit/apache-jmeter-5.1.1/bin/jmeter
sh ${jmeterPath} -n -t ${scriptFile} -l ${samplePath}/result.jtl -j ${logPath}/result.log -e -o ${reportPath}
参数说明
-n: 指定 Jmeter 使用 CLI 模式运行
-t: 指定编写完成的测试计划脚本( jmx 文件)
-l: 指定记录样本结果的 JTL 文件的名称
-j: 指定 Jmeter 运行日志输出文件
-r: 在指定的服务器(JMeter property "remote_hosts")上运行测试计划
-R: 在指定的多个远程服务器上运行测试计划
-g: 仅生成报告仪表盘
-e: 测试完成后生成报告仪表板
-o: 指定测试报告输出的位置,文件夹不得存在或为空
-H: 指定代理服务器主机名或IP地址
-P: 指定代理服务器端口
易踩坑
因为同一个线程组的任务是顺序执行的,所以同一个线程组中,频率最低的任务是所有任务的瓶颈。例如A->B,A每分钟60次,B每分钟120次,实际B为每分钟60次
原文链接:
https://www.cnblogs.com/suimeng/p/11425355.html#commentform
本文为51Testing经授权转载,转载文章所包含的文字来源于作者。如因内容或版权等问题,请联系51Testing进行删除。
猜你喜欢
- 2024-09-09 Java测试人员必看,这个单元测试新工具简直6到飞起啊!
- 2024-09-09 Java单元测试框架Junit详解(java的单元测试框架)
- 2024-09-09 教你一招测试java代码,妈妈再也不用担心我有Bug了
- 2024-09-09 一个更有说服力的java代码性能测试工具。#程序员
- 2024-09-09 使用JavaSnoop测试Java应用程序(测试 java)
- 2024-09-09 走进Java接口测试之Mock(概念篇)(java 接口测试)
- 2024-09-09 如何利用TestNG做接口自动化测试?Java+TestNG测试实例分享
- 2024-09-09 测试用例编写规范必看(测试用例范文)
- 2024-09-09 java 测试框架,测试http接口以及java方法
- 2024-09-09 Java程序员必须要知道的单元测试框架Junit详解
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)