Gatling 3.7 Scala转Java代码及测试总时长设置求助
Gatling Scala转Java 3.7版本实现及总时长设置方案
一、Scala代码转Java 3.7版本实现
假设你原有的Scala代码结构如下(常见场景定义+测试配置):
// Scala场景定义 val scn = scenario("TestScenario") .exec(http("request_1") .get("/api/test")) // Scala测试配置 setUp( scn.inject( rampUsers(testConfig.vUsers) during (testConfig.rampup seconds) ) )
对应的Gatling 3.7 Java版本代码如下,已代入vUsers=5、rampup=20秒的配置:
import io.gatling.javaapi.core.*; import io.gatling.javaapi.http.*; import static io.gatling.javaapi.core.CoreDsl.*; import static io.gatling.javaapi.http.HttpDsl.*; public class TestSimulation extends Simulation { // 配置HTTP协议基础参数 HttpProtocolBuilder httpProtocol = http .baseUrl("https://your-target-domain.com") // 替换为实际测试的基础URL .acceptHeader("application/json"); // 定义测试场景 ScenarioBuilder scn = scenario("TestScenario") .exec(http("request_1") .get("/api/test")); // 替换为实际请求路径 // 测试执行配置 { setUp( scn.injectOpen( rampUsers(5).during(20) // 20秒内逐步启动5个虚拟用户 ) ).protocols(httpProtocol); } }
二、设置测试总时长为1小时
要控制整个测试的总时长为1小时(3600秒),有两种常用方案:
方案1:硬限制总时长(到点强制停止)
使用maxDuration方法直接限制测试的最长运行时间,不管用户注入是否完成或请求是否执行完毕:
setUp( scn.injectOpen( rampUsers(5).during(20) ) ).protocols(httpProtocol) .maxDuration(3600); // 总时长设置为3600秒(1小时)
方案2:精确控制用户注入周期(持续运行至总时长)
如果需要先完成20秒的用户启动,再让用户持续运行至总时长1小时,可以调整注入策略,计算剩余运行时间:
setUp( scn.injectOpen( // 20秒内启动5个用户 rampUsers(5).during(20), // 剩余3580秒(3600-20)保持5个用户持续运行 constantUsersPerSec(5).during(3600 - 20) ) ).protocols(httpProtocol);
两种方案的区别:
- 方案1适合需要严格控制测试结束时间的场景,到点立即终止所有活动;
- 方案2适合需要用户持续负载运行满1小时的场景,确保负载时长符合要求。
内容的提问来源于stack exchange,提问作者Khaled Al Shishani
相关产品推荐
相关产品推荐

