1. JMeter安装
在JMeter官方网站上下载你需要的版本,解压后可点击执行“apache-meter-5.x.x/bin/ApacheJMeter.jar”,即可启动UI界面。
2. jmeter-plugins-manager插件管理
目前,jmeter通过jmeter-plugins-manager来管理相关插件,更加方便。
首先在PluginsManager官网下载plugins-manager.jar;
然后将下载的 jmeter-plugins-manager.jar 放到目录 apache-jmeter-5.x.x/lib/ext下;
重启jmeter即可。
我的插件列表:
- Custom SOAP Sampler
- Custom Thread Groups
- jpgc - Standard Set
3. 自定义Java Sampler
3.1 添加依赖
打开IDEA,新建一个java项目;
-
拷贝apache-jmeter-5.x.x/lib/ext目录下的ApacheJMeter_java.jar和ApacheJMeter_core.jar两个文件到项目中,添加到项目依赖中;
3.2 编写Sampler
- 新建类:JmeterSampler, 继承AbstractJavaSamplerClient类
- 根据需求,重写类方法:
-
用于设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter参数列表中
@Override public Arguments getDefaultParameters() { // 声明定义Arguments类 Arguments params = new Arguments(); // 添加一个新参数 params.addArgument("batchNum", ""); return params; }
-
初始化方法,用于初始化性能测试时的每个线程,实际运行时每个线程仅执行一次
public void setupTest(JavaSamplerContext context) { // 初始化代码 }
-
测试结束方法,用于结束性能测试中的每个线程,实际运行时,每个线程仅执行一次,在测试方法运行结束后执行
public void teardownTest(JavaSamplerContext context) { super.teardownTest(context); }
-
【必须】测试主体方法
@Override public SampleResult runTest(JavaSamplerContext javaSamplerContext) { SampleResult result = new SampleResult(); try { result.sampleStart(); // 测试主体 String response = TestService.run(javaSamplerContext.getParameter("batchNum", "a")); // 返回信息 result.setResponseMessage(response); result.setSuccessful(true); }catch (Exception e){ result.setSuccessful(false); e.printStackTrace(); }finally { result.sampleEnd(); } return result; }
-
【必须】空的main方法
public static void main(String[] args) { }
-
3.3 打包可执行Jar
- Project Settings --> Artifacts --> add --> JAR --> From modules with dependencies
- 选择Main Class
- 勾选编译时生成Jar
- 项目右击,重新编译项目,生成可执行jar
4. 配置与执行测试
将生成的可执行jar包,拷贝到apache-jmeter-5.x.x/lib/ext目录下即可。
4.1 执行Java请求
4.2 java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
因为依赖jar包中的META-INF中有多余的.SF文件与当前jar包冲突
zip -d your.jar 'META-INF/.SF' 'META-INF/.RSA' 'META-INF/*SF'
5. 关键指标解读
5.1 聚合报告
例如: 90%百分位 = 2374ms ,表示90%的请求,会在2374ms内完成。
5.2 TPS
TPS结合阶梯线程图,可以推算出最佳并发数等信息。