6 分钟 通过 Gatling + Kotlin + Gradle 做 http 接口压力测试

227 阅读1分钟

我很喜欢 gatling 和 kotlin, 以下是正文内容

构建 kotlin 脚手架

构建 gatling 脚手架

  • kotlin 脚手架基础上新建 gatling/kotlin 目录 (没看源码, 看文档是需要这样; 如果不这样弄, 笔者试过, gatling 没法找到压测脚本, gatling 应该是通过固定模块下找脚本)

    image.png
  • build.gradle.kts 下添加依赖

    dependencies {  
        implementation("io.gatling.highcharts:gatling-charts-highcharts:3.9.3")  
        implementation("io.gatling:gatling-app:3.9.3")  
        implementation("io.gatling:gatling-core:3.9.3")  
    }
    
  • build.gradle.kts 下添加插件

    plugins {  
        id("org.springframework.boot") version "3.0.5"  
        id("io.spring.dependency-management") version "1.1.0"  
        kotlin("jvm") version "1.7.22"  
        kotlin("plugin.spring") version "1.7.22"  
        id("io.gatling.gradle") version "3.9.3"  
    }
    
  • gatling/kotlin 下准备压测脚本

    import io.gatling.javaapi.core.CoreDsl.constantUsersPerSec
    import io.gatling.javaapi.core.CoreDsl.scenario
    import io.gatling.javaapi.core.Simulation
    import io.gatling.javaapi.http.HttpDsl.http
    import java.time.Duration
    
    class TestSimulation : Simulation() {
        val httpProtocol = http
            .baseUrl("http://127.0.0.1:10005/marketing?current=2&size=10")
            .acceptHeader("application/json")
    
        val scn = scenario("TestSimulation")
            .exec(http("request1").get(""))
    
        init {
            this.setUp(
                scn.injectOpen(
                    // 恒定 50 用户访问, 持续 15s
                    constantUsersPerSec(50.0).during(Duration.ofSeconds(15))
                )
            )
                .protocols(httpProtocol)
        }
    }
    

执行脚本

  • 在工程目录下执行 cmd 命令 ./gradlew gatlingRun 稍等片刻 image.png

查看压测结果

  • 执行完成后, 会生成报告地址

    image.png
  • 发现结果很哇塞

资料