JMeter自定义java性能测试

1. JMeter安装

JMeter官方网站上下载你需要的版本,解压后可点击执行“apache-meter-5.x.x/bin/ApacheJMeter.jar”,即可启动UI界面。

image.png
image.png

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
image.png

3. 自定义Java Sampler

3.1 添加依赖

  1. 打开IDEA,新建一个java项目;

  2. 拷贝apache-jmeter-5.x.x/lib/ext目录下的ApacheJMeter_java.jarApacheJMeter_core.jar两个文件到项目中,添加到项目依赖中;

    image.png

3.2 编写Sampler

  1. 新建类:JmeterSampler, 继承AbstractJavaSamplerClient
  2. 根据需求,重写类方法:
    • 用于设置传入的参数,可以设置多个,已设置的参数会显示到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

  1. Project Settings --> Artifacts --> add --> JAR --> From modules with dependencies
  2. 选择Main Class
  3. 勾选编译时生成Jar
  4. 项目右击,重新编译项目,生成可执行jar
第一步
第二步
第三步
第四步

4. 配置与执行测试

将生成的可执行jar包,拷贝到apache-jmeter-5.x.x/lib/ext目录下即可。

4.1 执行Java请求

image.png

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内完成。

image.png

5.2 TPS

TPS结合阶梯线程图,可以推算出最佳并发数等信息。

TPS
阶梯线程
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。