API для создания планов тестирования Jmeter?

Я хотел бы программно генерировать базовые планы тестирования Jmeter из динамического набора URL-адресов и данных формы (не используя графический интерфейс Jmeter вручную). Могу ли я использовать Jmeter API для этого?
Это уже где-то объяснили?
Мне просто нужно указать, с чего начать.

Конечно, я мог бы перепроектировать формат XML плана тестирования и затем написать свой собственный генератор плана тестирования, но это подвержено ошибкам, и всякий раз, когда формат изменяется, мой генератор должен быть обновлен.

2 ответа

Вы также можете посмотреть язык gridinit-dsl для jmeter. Он использует ruby ​​для генерации XML.

Из того, что вы объясняете, взгляните на CSV DataSet, который будет читать URL из файла CSV.

Этот компонент будет выполнять итерации по файлу и помещать одну строку в набор переменных, в вашем случае, например, переменную 1, называемую "URL".

Затем вы можете использовать ${URL} в HTTP Sampler и установить количество итераций и потоков в группе потоков для циклического выполнения и загрузки различных URL-адресов.

Используйте hc31impl или java impl, если вы попали на разные хосты.

Вы можете проверить 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, работающий с простыми утверждениями результатов и протоколированием результатов каждого запроса.

Другие вопросы по тегам