Skip to main content
appkiro.com

Gatling 부하 테스트 스크립트 생성기

injection profile·scenario·HTTP/WebSocket request·check·feeder·protocol 옵션으로 검토 가능한 Gatling Scala Simulation 시작 파일을 만듭니다.

What is this tool?
A visual builder for a Gatling Scala starter simulation that still requires review in the destination project.

Gatling is an open-source load testing tool that simulates many users hitting your API or website at the same time, then reports response times, throughput, and errors. This generator turns the form below into a reviewable Simulation.scala starter file: configure the target URL, how users arrive, the requests they make, and the pass/fail checks, then download, review, compile, and run only against an authorized target.

Who it's for

Backend / SRE / QA engineers who need real load numbers without writing Scala from scratch. Beginners and Gatling pros alike.

제공 결과

A starter Simulation.scala with HTTP protocol, scenarios, requests, checks, and an injection profile. Edit further if needed.

Privacy

Generation occurs in this browser tab. Do not paste live credentials, and review browser/site telemetry policy first.

1. Users (injection)
How virtual users will be injected over time.
2. Scenarios (flows)
Each scenario wraps every HTTP request below in its own loop.
1
2
3
3. HTTP 요청
Each row becomes one exec(http(...)) call inside every scenario. Reorder, duplicate, or load a template.
1
2
3
4
5
4. 검사(어서션)
Validate responses on every request.
5. Data feeder (optional)
Inject parameterized data from a CSV/JSON file.
Enable
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class GeneratedSimulation extends Simulation {

  val httpProtocol = http
    .baseUrl("https://example.com")
    .acceptHeader("application/json")
    .contentTypeHeader("application/json")

  val scn1 = scenario("User Journey")
    .repeat(1) {
      exec(http("Home Page")
        .get("/")
        .requestTimeout(10.seconds)
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Login")
        .post("/api/auth/login")
        .requestTimeout(10.seconds)
        .body(StringBody("""{\"username\":\"${username}\",\"password\":\"${password}\"}"""))
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Get Products")
        .get("/api/products")
        .requestTimeout(10.seconds)
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Product Detail")
        .get("/api/products/${id}")
        .requestTimeout(10.seconds)
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Add To Cart")
        .post("/api/cart")
        .requestTimeout(10.seconds)
        .body(StringBody("""{\"productId\":\"${id}\",\"qty\":1}"""))
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
    }

  val scn2 = scenario("Browse Products")
    .repeat(2) {
      exec(http("Home Page")
        .get("/")
        .requestTimeout(10.seconds)
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Login")
        .post("/api/auth/login")
        .requestTimeout(10.seconds)
        .body(StringBody("""{\"username\":\"${username}\",\"password\":\"${password}\"}"""))
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Get Products")
        .get("/api/products")
        .requestTimeout(10.seconds)
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Product Detail")
        .get("/api/products/${id}")
        .requestTimeout(10.seconds)
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Add To Cart")
        .post("/api/cart")
        .requestTimeout(10.seconds)
        .body(StringBody("""{\"productId\":\"${id}\",\"qty\":1}"""))
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
    }

  val scn3 = scenario("Checkout Flow")
    .repeat(1) {
      exec(http("Home Page")
        .get("/")
        .requestTimeout(10.seconds)
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Login")
        .post("/api/auth/login")
        .requestTimeout(10.seconds)
        .body(StringBody("""{\"username\":\"${username}\",\"password\":\"${password}\"}"""))
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Get Products")
        .get("/api/products")
        .requestTimeout(10.seconds)
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Product Detail")
        .get("/api/products/${id}")
        .requestTimeout(10.seconds)
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
      .pause(1)
      exec(http("Add To Cart")
        .post("/api/cart")
        .requestTimeout(10.seconds)
        .body(StringBody("""{\"productId\":\"${id}\",\"qty\":1}"""))
        .check(status.is(200))
        .check(responseTimeInMillis.lt(500))
        .check(substring("success"))
      )
    }

  setUp(
    scn1.inject(
      rampUsers(100).during(10.minutes),
      constantUsersPerSec(100).during(20.minutes),
      rampUsers(100).during(5.minutes)
    ),
    scn2.inject(
      rampUsers(100).during(10.minutes),
      constantUsersPerSec(100).during(20.minutes),
      rampUsers(100).during(5.minutes)
    ),
    scn3.inject(
      rampUsers(100).during(10.minutes),
      constantUsersPerSec(100).during(20.minutes),
      rampUsers(100).during(5.minutes)
    )
  ).protocols(httpProtocol)
}
제공 결과
Complete Gatling Simulation.scala
Project structure ready
Run instructions for your OS
HTML report after the test run

Gatling 부하 테스트 스크립트 생성기란 무엇인가요?

injection profile·scenario·HTTP/WebSocket request·check·feeder·protocol 옵션으로 검토 가능한 Gatling Scala Simulation 시작 파일을 만듭니다. Base URL/protocol, 사용자 injection·ramp/hold/down, scenario, request, check, CSV feeder, repeat/during loop, 선택적 WebSocket 설정. 설정된 injection·scenario·protocol·request·check·feeder가 포함된 다운로드 가능한 Scala Simulation.scala 시작 파일.

도구 열기

이 도구가 하는 일

  • 입력: Base URL/protocol, 사용자 injection·ramp/hold/down, scenario, request, check, CSV feeder, repeat/during loop, 선택적 WebSocket 설정.
  • 설정 및 처리: injection users/ramp/hold/down, repeat/during scenario, HTTP request builder, check, CSV feeder, protocol·WebSocket 옵션, 미리보기, 다운로드.
  • 출력: 설정된 injection·scenario·protocol·request·check·feeder가 포함된 다운로드 가능한 Scala Simulation.scala 시작 파일.

사용 방법

  1. 입력을 추가합니다. Base URL/protocol, 사용자 injection·ramp/hold/down, scenario, request, check, CSV feeder, repeat/during loop, 선택적 WebSocket 설정.
  2. 설정을 확인합니다. injection users/ramp/hold/down, repeat/during scenario, HTTP request builder, check, CSV feeder, protocol·WebSocket 옵션, 미리보기, 다운로드.
  3. 결과를 생성·검토·내보냅니다. 설정된 injection·scenario·protocol·request·check·feeder가 포함된 다운로드 가능한 Scala Simulation.scala 시작 파일.

주요 기능

  • 입력: Base URL/protocol, 사용자 injection·ramp/hold/down, scenario, request, check, CSV feeder, repeat/during loop, 선택적 WebSocket 설정.
  • 설정 및 처리: injection users/ramp/hold/down, repeat/during scenario, HTTP request builder, check, CSV feeder, protocol·WebSocket 옵션, 미리보기, 다운로드.
  • 출력: 설정된 injection·scenario·protocol·request·check·feeder가 포함된 다운로드 가능한 Scala Simulation.scala 시작 파일.

활용 사례

  • injection profile·scenario·HTTP/WebSocket request·check·feeder·protocol 옵션으로 검토 가능한 Gatling Scala Simulation 시작 파일을 만듭니다.
  • 다음 산출물 또는 진단 결과가 필요할 때 사용합니다: 설정된 injection·scenario·protocol·request·check·feeder가 포함된 다운로드 가능한 Scala Simulation.scala 시작 파일.
  • 다음 검증된 워크플로 단계 전에 배치합니다: 대상 Gatling 프로젝트에서 컴파일, 허가된 smoke test, 모니터링 하 점진적 ramp-up.

제한 사항과 안전 안내

  • Gatling을 실행하거나 컴파일을 보장하지 않습니다. Scala DSL·프로젝트 구조는 Gatling 버전·빌드 도구에 따라 달라지므로 dependency·import·feeder·session 변수·check·TLS·인증·대상 허가를 검토해야 합니다.

문제 해결

  • 허가된 요청 하나와 가장 작은 시나리오로 시작하고 실제 프로젝트에서 대상 도구 버전, 문법, import/dependency, 데이터 참조를 확인하세요.
  • 자격 증명을 환경 변수 또는 secret management로 옮기고 생성 파일을 컴파일·lint한 뒤 ramp-up 전에 저부하 smoke test를 실행하세요.
  • Gatling을 실행하거나 컴파일을 보장하지 않습니다. Scala DSL·프로젝트 구조는 Gatling 버전·빌드 도구에 따라 달라지므로 dependency·import·feeder·session 변수·check·TLS·인증·대상 허가를 검토해야 합니다.

자주 묻는 질문

Gatling 부하 테스트 스크립트 생성기란 무엇인가요?

injection profile·scenario·HTTP/WebSocket request·check·feeder·protocol 옵션으로 검토 가능한 Gatling Scala Simulation 시작 파일을 만듭니다.

Gatling 부하 테스트 스크립트 생성기는 어떻게 사용하나요?

요구되는 입력을 추가하고 페이지 설정을 확인한 뒤 복사하거나 다운로드하기 전에 결과를 검증합니다. 예상 출력: 설정된 injection·scenario·protocol·request·check·feeder가 포함된 다운로드 가능한 Scala Simulation.scala 시작 파일.

어떤 입력을 지원하나요?

Base URL/protocol, 사용자 injection·ramp/hold/down, scenario, request, check, CSV feeder, repeat/during loop, 선택적 WebSocket 설정.

어떤 출력을 생성하나요?

설정된 injection·scenario·protocol·request·check·feeder가 포함된 다운로드 가능한 Scala Simulation.scala 시작 파일.

어떤 제한이 있나요?

Gatling을 실행하거나 컴파일을 보장하지 않습니다. Scala DSL·프로젝트 구조는 Gatling 버전·빌드 도구에 따라 달라지므로 dependency·import·feeder·session 변수·check·TLS·인증·대상 허가를 검토해야 합니다.

관련 AppKiro 도구

검증된 샘플로 시작하세요

가장 작은 스크립트를 생성해 대상 프로젝트에서 검토하고, 통제된 ramp-up 전에 허가된 비운영 시스템에서만 실행하세요.

도구 열기