예약 및 리워드 지급 기본 k6 테스트

박태현·2026년 3월 7일

예약 프로젝트

목록 보기
5/10

예약 로직에는 조건부 UPDATE를 적용하여 좌석 중복 예약을 방지하고, 멱등성을 통해 동일한 요청이 반복되더라도 예약은 한 건만 생성되고 동일한 응답이 반환되도록 구현했습니다. 또한, 비관적 락을 적용한 리워드 지급 로직이 하루에 한 번만 정상적으로 지급되는지 k6를 통해 검증했습니다.

예약 중복 테스트


하나의 좌석을 여러 사용자가 중복 예약 할 때 한 명만 성공하는 것을 검증하는 테스트입니다.

테스트 시나리오

  1. TARGET_VUS 수만큼 가상 사용자( VU )를 동시에 생성

  2. 각 VU는 loadtest{N} 계정으로 POST /reserve/login 요청을 보내 JWT 토큰을 발급받습니다.

  3. 모든 VU는 동일한 좌석에 대해 POST /reserve 요청을 동시에 수행합니다.

    • Authorization 헤더에 Bearer JWT 토큰 포함
    • Idempotency-Key 헤더에 UUID를 설정하여 요청의 멱등성 보장
  4. 서버는 Redis 기반 분산 락을 사용하여 동시성을 제어합니다.

    • 락 획득에 성공한 1건만 예약 성공 (200)
    • 나머지는 이미 예약된 좌석으로 간주되어 실패 (409)
  5. 테스트 종료 후 handleSummary에서 성공/실패 건수를 집계합니다.

    • 200 응답이 정확히 1건이면 → 동시성 제어 성공
    • 200 응답이 2건 이상이면 → 중복 예약 발생 ( 동시성 제어 실패 )

테스트

[ 3명의 사용자 ]

[ 50명의 사용자 ]

[ 200명의 사용자 ]

50 ~ 200 명의 사용자로 중복 예약 테스트를 진행한 결과 단 한건의 요청만 성공하는 것을 확인할 수 있었습니다.

예약 멱등성 보장 테스트


특정 사용자가 동일한 예약 요청을 여러 번 요청하여 이중 하나의 요청만 성공하고, 나머지 요청은 저장된 성공 응답을 반환하는지 확인하는 테스트입니다.

테스트

[ 동일한 요청 10번 발생 ]

이처럼 하나의 요청만 성공하고 나머지 요청은 저장된 성공 응답을 반환하는 것을 확인할 수 있습니다.

리워드 지급 테스트


테스트

[ 동일한 요청 20번 발생 ]

profile
꾸준하게

0개의 댓글