用于生成Jmeter测试计划的API?

时间:2013-06-10 09:02:23

标签: xml dynamic jmeter generator test-plan

我想以编程方式从动态的URL集和表单数据(不手动使用Jmeter GUI)生成基本的Jmeter测试计划。 我可以使用Jmeter API来做到这一点吗? 是否已在某处解释过? 我只需要点开始。

当然,我可以对测试计划XML格式进行反向工程,然后编写自己的自定义测试计划生成器,但这很容易出错,每当格式发生变化时,我的生成器都需要更新。

3 个答案:

答案 0 :(得分:2)

你也可以看一下jin的gridinit-dsl语言。 它使用ruby生成xml。

答案 1 :(得分:0)

根据您的解释,查看CSV DataSet,它将从csv文件中读取网址。

此组件将在文件中进行迭代,并在一组变量中放入一行,例如,在您的情况下,1个可变的名为“URL”。

然后你可以在HTTP Sampler中使用$ {URL}并设置Thread Group中的迭代次数和线程数来循环并将负载放在不同的URL上。

如果你点击不同的主机,请使用hc31impl或java impl。

答案 2 :(得分:0)

您可以选中jmeter-java-dsl,这可以使您轻松完成此操作。

例如,您可以添加以下Maven依赖项:

<dependency>
  <groupId>us.abstracta.jmeter</groupId>
  <projectId>jmeter-java-dsl</projectId>
  <version>0.1</version>
</dependency>

并定义一个这样的测试:

import static org.assertj.core.api.Assertions.assertThat;
import static us.abstracta.jmeter.javadsl.JmeterDsl.*;

import java.time.Duration;
import org.eclipse.jetty.http.MimeTypes.Type;
import org.junit.jupiter.api.Test;
import us.abstracta.jmeter.javadsl.TestPlanStats;

public class PerformanceTest {

  @Test
  public void testPerformance() throws IOException {
    TestPlanStats stats = testPlan(
      threadGroup(2, 10,
        httpSampler("http://my.service")
          .post("{\"name\": \"test\"}", Type.APPLICATION_JSON)
      ),
      //this is just to log details of each request stats
      jtlWriter("test.jtl")
    ).run();
    assertThat(stats.overall().elapsedTimePercentile99()).isLessThan(Duration.ofSeconds(5));
  }
  
}

您将获得一个运行中的嵌入式JMeter测试,该测试具有对结果的简单断言以及每个请求结果的记录。