CHAMELEON EVENT LogoCHAMELEON EVENT
← ALL INSIGHTS
8 MIN READEVENT INSIGHT

이벤트 QA에서 놓치기 쉬운 쿠폰 발급·당첨 결과 오류 10가지

온라인 경품 이벤트를 QA할 때 가장 먼저 확인하는 흐름은 정상 참여입니다.

온라인 경품 이벤트를 QA할 때 가장 먼저 확인하는 흐름은 정상 참여입니다.

로그인
→ 룰렛 참여
→ 당첨
→ 쿠폰 확인

담당자가 테스트 계정으로 한 번 참여해 쿠폰이 정상적으로 보이면 기능이 완료된 것처럼 느껴질 수 있습니다.

하지만 실제 운영에서는 다음과 같은 예외가 발생합니다.

  • 버튼을 여러 번 누릅니다.
  • 결과 화면이 나오기 전에 페이지를 닫습니다.
  • 당첨 결과는 저장됐지만 쿠폰 API가 실패합니다.
  • 경품 재고가 마지막 한 개 남은 순간 여러 명이 참여합니다.
  • 이미 쿠폰을 받은 회원이 다시 참여합니다.
  • 이벤트 종료 직전에 요청이 들어옵니다.
  • 새로고침 후 다른 결과가 표시됩니다.
  • 관리자와 사용자 화면의 결과가 다릅니다.

이벤트 QA에서는 정상적으로 한 번 성공하는가보다 오류와 재시도에도 결과가 한 번만 정확하게 처리되는가를 확인해야 합니다.

놓치기 쉬운 오류 10가지

  1. 버튼 중복 클릭으로 쿠폰이 여러 번 발급되는 오류
  2. 당첨 결과와 룰렛·슬롯 화면이 다른 오류
  3. 결과 저장 후 화면을 닫으면 당첨이 사라지는 오류
  4. 쿠폰 API 실패를 미당첨으로 처리하는 오류
  5. 재시도 시 새로운 당첨 결과가 생성되는 오류
  6. 경품 재고보다 많이 당첨되는 오류
  7. 이미 보유한 쿠폰이 다시 발급되는 오류
  8. 쿠폰 조건과 결과 화면 안내가 다른 오류
  9. 관리자 다운로드와 실제 결과가 다른 오류
  10. 이벤트 종료·재고 소진 이후에도 당첨되는 오류

1. 버튼 중복 클릭으로 쿠폰이 여러 번 발급되는 오류

모바일 네트워크가 느리면 사용자는 버튼이 눌리지 않았다고 생각할 수 있습니다.

룰렛 돌리기 클릭
→ 반응 없음
→ 다시 클릭
→ 다시 클릭

화면에서는 한 번 회전하는 것처럼 보여도 서버에는 여러 요청이 도착할 수 있습니다.

발생 가능한 문제

  • 쿠폰 여러 장 발급
  • 경품 재고 여러 번 차감
  • 서로 다른 결과 저장
  • 참여 횟수 여러 번 증가
  • 외부 API 비용 증가

화면 QA

[ ] 첫 클릭 즉시 버튼이 비활성화되는가?
[ ] 처리 중 표시가 나오는가?
[ ] 애니메이션 중 재클릭할 수 없는가?

서버 QA

같은 사용자
+ 같은 이벤트
+ 같은 참여 단위
→ 한 번만 처리

프론트엔드 버튼만 막아서는 충분하지 않습니다.

직접 API 요청이 반복되어도 서버에서 한 번만 처리해야 합니다.

2. 당첨 결과와 룰렛·슬롯 화면이 다른 오류

실제 경품 결과는 서버에서 결정하고 화면은 그 결과에 맞춰 애니메이션을 재생할 수 있습니다.

서버 결과:
20% 쿠폰

룰렛 화면:
무료 배송 칸에 정지

또는 슬롯의 세 칸과 결과 문구가 다를 수 있습니다.

발생 원인

  • 결과 번호 매핑 오류
  • 배열 순서 변경
  • 관리자에서 경품 순서 수정
  • 프론트엔드와 서버의 코드 불일치
  • 애니메이션 정지 위치 계산 오류

QA 방법

모든 결과를 강제로 출력할 수 있는 테스트 계정을 준비합니다.

테스트 계정 A
→ 1등

테스트 계정 B
→ 20% 쿠폰

테스트 계정 C
→ 기본 보상

각 결과에 대해 다음을 비교합니다.

  • 서버 결과 코드
  • 화면 애니메이션
  • 결과 문구
  • 관리자 기록
  • 실제 발급 쿠폰

3. 결과 저장 후 화면을 닫으면 당첨이 사라지는 오류

다음 흐름이 발생할 수 있습니다.

서버에서 당첨 결과 저장
→ 사용자가 앱 전환
→ 결과 화면을 보지 못함

재접속했을 때 이벤트가 다시 참여 가능한 상태로 보이면 새로운 결과가 생성될 수 있습니다.

권장 흐름

기존 참여 기록 확인
→ 오늘의 저장된 결과 표시

QA 시나리오

  1. 참여 버튼을 누릅니다.
  2. 애니메이션 중 앱을 닫습니다.
  3. 다시 접속합니다.
  4. 같은 결과가 표시되는지 확인합니다.
  5. 쿠폰이 한 번만 발급되었는지 확인합니다.

사용자의 화면 확인 여부와 서버 결과 저장 여부를 구분해야 합니다.

4. 쿠폰 API 실패를 미당첨으로 처리하는 오류

당첨 결과와 쿠폰 발급은 서로 다른 처리입니다.

당첨 결과:
20% 쿠폰

외부 쿠폰 API:
오류

이 상황에서 결과 화면을 미당첨으로 바꾸면 실제 당첨 기록과 사용자 안내가 달라집니다.

상태 분리

당첨 결과 확정
쿠폰 발급 대기
쿠폰 발급 완료
쿠폰 발급 실패
재발급 완료

사용자 안내

20% 할인 쿠폰에 당첨되었습니다.

현재 쿠폰 발급이 지연되고 있습니다.
당첨 결과는 정상적으로 저장되었습니다.

관리자 기능

  • 발급 실패 목록
  • 오류 메시지
  • 재발급
  • 재발급 결과
  • 중복 발급 여부

QA에서는 외부 API가 실패하도록 의도적으로 테스트해야 합니다.

5. 재시도 시 새로운 당첨 결과가 생성되는 오류

네트워크 오류 후 사용자가 다시 시도를 누를 수 있습니다.

첫 요청
→ 1등 결과 저장
→ 응답 전 네트워크 종료

재시도
→ 새로운 랜덤 결과
→ 미당첨

사용자는 어떤 결과가 실제인지 알 수 없습니다.

권장 처리

참여 요청 식별값 확인
→ 이미 결과가 있으면 기존 결과 반환

QA 시나리오

  • 서버 처리 후 응답만 실패
  • 요청 중 네트워크 중단
  • 브라우저 새로고침
  • 같은 버튼 재클릭
  • 다른 기기에서 재접속

모든 경우에 같은 결과가 나오는지 확인합니다.

6. 경품 재고보다 많이 당첨되는 오류

경품이 한 개 남았을 때 여러 사용자가 동시에 참여할 수 있습니다.

남은 경품:
1개

사용자 A:
재고 있음 확인

사용자 B:
재고 있음 확인

사용자 A:
당첨

사용자 B:
당첨

재고 확인과 차감이 분리되어 있으면 초과 당첨이 발생할 수 있습니다.

QA 방법

남은 재고를 1개로 설정하고 동시에 여러 요청을 보냅니다.

동시 요청 10개
→ 당첨 1개
→ 나머지 기본 결과

확인할 항목:

  • 관리자 남은 재고
  • 실제 당첨자 수
  • 쿠폰 발급 수
  • 사용자 화면
  • 오류 로그

단순히 순서대로 한 명씩 테스트해서는 발견하기 어렵습니다.

7. 이미 보유한 쿠폰이 다시 발급되는 오류

이벤트 정책에 따라 같은 쿠폰의 중복 발급을 허용하지 않을 수 있습니다.

회원 A:
10% 쿠폰 보유

룰렛 결과:
10% 쿠폰

가능한 처리

  • 동일 쿠폰 재발급
  • 다른 쿠폰으로 대체
  • 포인트 지급
  • 보유 쿠폰의 기간 연장
  • 해당 결과에서 제외

정책을 먼저 정해야 합니다.

QA할 사용자 상태

  • 쿠폰 미보유
  • 같은 쿠폰 보유
  • 사용 완료 쿠폰 보유
  • 만료 쿠폰 보유
  • 발급 대기 쿠폰 보유
  • 이전 이벤트 쿠폰 보유

쿠폰 시스템이 쿠폰의 상태와 캠페인을 어떻게 구분하는지 확인해야 합니다.

8. 쿠폰 조건과 결과 화면 안내가 다른 오류

결과 화면에서는 다음처럼 보일 수 있습니다.

전 제품 20% 할인

실제 쿠폰 조건은 다음과 다를 수 있습니다.

신제품만 적용
최대 10,000원
50,000원 이상 구매
일부 상품 제외

확인할 정보

  • 할인율
  • 최대 할인 금액
  • 최소 구매 금액
  • 적용 상품
  • 제외 상품
  • 사용 기간
  • 중복 사용
  • 회원 등급
  • 온라인·오프라인

QA 방법

실제 쇼핑몰에서 쿠폰을 적용해 봅니다.

대상 상품
→ 정상 적용

제외 상품
→ 안내된 기준대로 제한

최소 구매 미만
→ 정확한 오류 문구

이벤트 화면과 쿠폰 시스템, 약관을 한 표에서 비교하는 것이 좋습니다.

9. 관리자 다운로드와 실제 결과가 다른 오류

사용자에게는 당첨으로 보이지만 관리자 파일에는 미당첨으로 기록될 수 있습니다.

또는 관리자 화면의 합계와 다운로드 파일의 행 수가 다를 수 있습니다.

발생 원인

  • 결과 코드 변환 오류
  • 필터 조건
  • 시간대 차이
  • 중복 데이터
  • 개인정보 마스킹 과정
  • 다운로드 시점
  • 발급 상태와 당첨 상태 혼동

검수 항목

전체 참여 수
= 당첨+미당첨+처리 중

경품별 당첨 수
= 실제 발급 수

다운로드 행 수
= 화면 필터 결과

샘플 검수

특정 테스트 계정의 다음 정보를 모두 비교합니다.

  • 사용자 결과 화면
  • 서버 원본 데이터
  • 관리자 상세
  • 엑셀 다운로드
  • 쿠폰 시스템
  • 메시지 발송 기록

10. 이벤트 종료·재고 소진 이후에도 당첨되는 오류

이벤트 종료 화면이 보이더라도 API를 직접 호출하면 참여가 처리될 수 있습니다.

화면:
이벤트 종료

서버:
참여 API 계속 허용

또는 경품 소진 후에도 캐시된 재고 정보로 당첨될 수 있습니다.

서버에서 확인할 조건

  • 이벤트 시작 시각
  • 이벤트 종료 시각
  • 참여자 자격
  • 참여 횟수
  • 경품 재고
  • 캠페인 상태
  • 긴급 중지 상태

QA 시나리오

  • 시작 1초 전 요청
  • 시작 시각 요청
  • 종료 1초 전 요청
  • 종료 시각 이후 요청
  • 경품 재고 0
  • 관리자가 일시 중지
  • 종료 후 저장된 페이지에서 API 요청

화면 상태만 바꾸지 말고 서버에서도 참여를 차단해야 합니다.

추가로 놓치기 쉬운 시간대 오류

이벤트는 한국 시간 기준인데 서버는 다른 시간대를 사용할 수 있습니다.

사용자 안내:
8월 10일 23:59 종료

서버:
UTC 기준 처리

결과적으로 예상보다 일찍 또는 늦게 종료될 수 있습니다.

확인할 항목

  • 서버 시간대
  • 데이터베이스 시각
  • 관리자 표시
  • 쿠폰 사용 기간
  • 자정 초기화
  • 해외 사용자

테스트 환경과 운영 환경의 차이

테스트 환경에서는 쿠폰 API와 경품 재고가 단순화되어 있을 수 있습니다.

운영 환경에서만 발생하는 문제:

  • 실제 회원 데이터
  • 실제 쿠폰 코드
  • 실제 메시지
  • 실제 트래픽
  • 실제 시간 제한
  • 실제 외부 API 한도

오픈 전 운영 환경에서 제한된 계정으로 최종 리허설을 진행하는 것이 좋습니다.

테스트 계정 설계

계정 A:
첫 참여·1등

계정 B:
첫 참여·미당첨

계정 C:
이미 참여

계정 D:
동일 쿠폰 보유

계정 E:
쿠폰 발급 실패

계정 F:
참여 대상 아님

계정 G:
실물 경품 중복 당첨 제한

테스트 계정의 역할을 문서로 정리하면 반복 QA가 쉬워집니다.

오류 상태표

당첨 결과쿠폰 상태사용자 화면관리자 처리
쿠폰 당첨발급 완료쿠폰 표시완료
쿠폰 당첨발급 중발급 중 안내대기
쿠폰 당첨발급 실패당첨·지연 안내재발급
실물 당첨주소 미입력입력 요청대기
실물 당첨주소 완료발송 예정준비
미당첨기본 보상기본 쿠폰완료

이벤트 QA 기록 양식

테스트 항목:
사용자 계정:
기기:
브라우저:
참여 시각:
서버 결과:
화면 결과:
쿠폰 상태:
관리자 상태:
발견 오류:
재현 방법:
수정 담당:
재검수:

최종 체크리스트

[ ] 버튼을 연속 클릭해도 한 번만 처리된다.
[ ] 서버와 룰렛·슬롯 결과가 일치한다.
[ ] 애니메이션 중 종료해도 결과가 유지된다.
[ ] 쿠폰 API 실패가 미당첨으로 바뀌지 않는다.
[ ] 재시도해도 새로운 결과가 생기지 않는다.
[ ] 재고 1개 동시 요청에서 한 명만 당첨된다.
[ ] 동일 쿠폰 보유자의 처리 정책이 적용된다.
[ ] 쿠폰 화면과 실제 사용 조건이 일치한다.
[ ] 관리자 화면·다운로드·쿠폰 데이터가 일치한다.
[ ] 이벤트 종료와 재고 소진 후 참여가 차단된다.
[ ] 자정과 시간대 기준이 정확하다.
[ ] 모든 결과를 강제 출력해 검수했다.
[ ] 운영 환경에서 최종 리허설을 진행했다.

마무리

쿠폰과 당첨 결과 QA에서 가장 중요한 것은 정상적인 한 번의 성공이 아닙니다.

중복 클릭
네트워크 오류
재접속
재고 소진
외부 API 실패
이벤트 종료

이런 상황에서도 사용자의 결과가 바뀌지 않고 경품과 쿠폰이 한 번만 정확하게 처리되어야 합니다.

화면과 서버, 관리자, 쿠폰 시스템을 각각 따로 테스트하지 말고 하나의 참여 기록을 기준으로 끝까지 비교하는 것이 좋습니다.

RELATED INSIGHTS