Java的HTTP接口测试框架Gatling

之前讲过的《JHM》是一个java的基准测试框架,一般用于测试jdk里的API。如果要测试http接口,可以使用Gatling。

你可能用过JMeter,也是可以的

原生的Gatling是基于代码测试的,没有UI。你需要创建一个maven项目,或者下载官方的例子:https://github.com/gatling/gatling-js-demo/archive/refs/heads/main.zip

官方文档参考:https://docs.gatling.io/reference/install/oss/

配置

打开这个例子项目,找到类 ComputerDatabaseSimulation 进行修改。

比如我想测试 http://localhost:8080/unified-list-service/dpa/landing 这个地址。配置如下:

java 复制代码
import io.gatling.javaapi.core.ScenarioBuilder;
import io.gatling.javaapi.core.Simulation;
import io.gatling.javaapi.http.HttpProtocolBuilder;

import static io.gatling.javaapi.core.CoreDsl.atOnceUsers;
import static io.gatling.javaapi.core.CoreDsl.constantUsersPerSec;
import static io.gatling.javaapi.core.CoreDsl.scenario;
import static io.gatling.javaapi.http.HttpDsl.http;

public class ComputerDatabaseSimulation extends Simulation {
    HttpProtocolBuilder httpProtocol =
            http.baseUrl("http://localhost:8080/unified-list-service/dpa")
                    .acceptHeader("*/*");
    ScenarioBuilder myScenario = scenario("My Scenario")
            .exec(http("Request pure").get("/landing"));

    {
        setUp(myScenario.injectOpen(constantUsersPerSec(300).during(10)))
                .protocols(httpProtocol);
    }
}

这个配置的意思是每秒生成300个请求,连续生成10秒,共计3000个请求。

如果想直接生成这3000个请求,可以使用

java 复制代码
setUp(myScenario.injectOpen(atOnceUsers(3000))).protocols(httpProtocol);

setUp可以接受多个场景,比如

java 复制代码
        setUp(
                myScenario1.injectOpen(constantUsersPerSec(300).during(10)), 
                myScenario2.injectOpen(atOnceUsers(300))
        ).protocols(httpProtocol);

每个场景也可以执行多种请求,比如:

java 复制代码
    ScenarioBuilder myScenario1 = scenario("My Scenario")
            .exec(
                    http("Request pure").get("/landing"), 
                    http("Request swid").get("/landing?swid={d80a2714}")
            ).exec(http("Request 1").get("/landing?date={today}"));

运行

执行命令mvn gatling:test

相关推荐
qq_589568101 小时前
javaweb开发笔记—— 前端工程化
java·前端
码农小灰1 小时前
Kafka消息持久化机制全解析:存储原理与实战场景
java·分布式·kafka
程序员鱼皮2 小时前
太香了!我连夜给项目加上了这套 Java 监控系统
java·前端·程序员
L2ncE3 小时前
高并发场景数据与一致性的简单思考
java·后端·架构
武昌库里写JAVA3 小时前
使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程
java·vue.js·spring boot·sql·学习
小指纹3 小时前
河南萌新联赛2025第(六)场:郑州大学
java·开发语言·数据结构·c++·算法
叶~璃3 小时前
云计算:企业数字化转型的核心引擎
java
码luffyliu4 小时前
MySQL:MVCC机制及其在Java秋招中的高频考点
java·数据库·mysql·事务·并发·mvcc
程序员鱼皮4 小时前
这套 Java 监控系统太香了!我连夜给项目加上了
java·前端·ai·程序员·开发·软件开发
岁忧4 小时前
(nice!!!)(LeetCode 每日一题) 1277. 统计全为 1 的正方形子矩阵 (动态规划)
java·c++·算法·leetcode·矩阵·go·动态规划