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