spring

JMeter自定义java性能测试

2020-05-14  本文已影响0人  咦咦咦萨

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即可。

我的插件列表:

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 阶梯线程
上一篇 下一篇

猜你喜欢

热点阅读