이벤트 QA에서 놓치기 쉬운 쿠폰 발급·당첨 결과 오류 10가지
온라인 경품 이벤트를 QA할 때 가장 먼저 확인하는 흐름은 정상 참여입니다.
- #이벤트 QA
- #쿠폰 발급
- #당첨 결과
- #오류 테스트
- #경품 이벤트
온라인 경품 이벤트를 QA할 때 가장 먼저 확인하는 흐름은 정상 참여입니다.
로그인
→ 룰렛 참여
→ 당첨
→ 쿠폰 확인
담당자가 테스트 계정으로 한 번 참여해 쿠폰이 정상적으로 보이면 기능이 완료된 것처럼 느껴질 수 있습니다.
하지만 실제 운영에서는 다음과 같은 예외가 발생합니다.
- 버튼을 여러 번 누릅니다.
- 결과 화면이 나오기 전에 페이지를 닫습니다.
- 당첨 결과는 저장됐지만 쿠폰 API가 실패합니다.
- 경품 재고가 마지막 한 개 남은 순간 여러 명이 참여합니다.
- 이미 쿠폰을 받은 회원이 다시 참여합니다.
- 이벤트 종료 직전에 요청이 들어옵니다.
- 새로고침 후 다른 결과가 표시됩니다.
- 관리자와 사용자 화면의 결과가 다릅니다.
이벤트 QA에서는 정상적으로 한 번 성공하는가보다 오류와 재시도에도 결과가 한 번만 정확하게 처리되는가를 확인해야 합니다.
놓치기 쉬운 오류 10가지
- 버튼 중복 클릭으로 쿠폰이 여러 번 발급되는 오류
- 당첨 결과와 룰렛·슬롯 화면이 다른 오류
- 결과 저장 후 화면을 닫으면 당첨이 사라지는 오류
- 쿠폰 API 실패를 미당첨으로 처리하는 오류
- 재시도 시 새로운 당첨 결과가 생성되는 오류
- 경품 재고보다 많이 당첨되는 오류
- 이미 보유한 쿠폰이 다시 발급되는 오류
- 쿠폰 조건과 결과 화면 안내가 다른 오류
- 관리자 다운로드와 실제 결과가 다른 오류
- 이벤트 종료·재고 소진 이후에도 당첨되는 오류
1. 버튼 중복 클릭으로 쿠폰이 여러 번 발급되는 오류
모바일 네트워크가 느리면 사용자는 버튼이 눌리지 않았다고 생각할 수 있습니다.
룰렛 돌리기 클릭
→ 반응 없음
→ 다시 클릭
→ 다시 클릭
화면에서는 한 번 회전하는 것처럼 보여도 서버에는 여러 요청이 도착할 수 있습니다.
발생 가능한 문제
- 쿠폰 여러 장 발급
- 경품 재고 여러 번 차감
- 서로 다른 결과 저장
- 참여 횟수 여러 번 증가
- 외부 API 비용 증가
화면 QA
[ ] 첫 클릭 즉시 버튼이 비활성화되는가?
[ ] 처리 중 표시가 나오는가?
[ ] 애니메이션 중 재클릭할 수 없는가?
서버 QA
같은 사용자
+ 같은 이벤트
+ 같은 참여 단위
→ 한 번만 처리
프론트엔드 버튼만 막아서는 충분하지 않습니다.
직접 API 요청이 반복되어도 서버에서 한 번만 처리해야 합니다.
2. 당첨 결과와 룰렛·슬롯 화면이 다른 오류
실제 경품 결과는 서버에서 결정하고 화면은 그 결과에 맞춰 애니메이션을 재생할 수 있습니다.
서버 결과:
20% 쿠폰
룰렛 화면:
무료 배송 칸에 정지
또는 슬롯의 세 칸과 결과 문구가 다를 수 있습니다.
발생 원인
- 결과 번호 매핑 오류
- 배열 순서 변경
- 관리자에서 경품 순서 수정
- 프론트엔드와 서버의 코드 불일치
- 애니메이션 정지 위치 계산 오류
QA 방법
모든 결과를 강제로 출력할 수 있는 테스트 계정을 준비합니다.
테스트 계정 A
→ 1등
테스트 계정 B
→ 20% 쿠폰
테스트 계정 C
→ 기본 보상
각 결과에 대해 다음을 비교합니다.
- 서버 결과 코드
- 화면 애니메이션
- 결과 문구
- 관리자 기록
- 실제 발급 쿠폰
3. 결과 저장 후 화면을 닫으면 당첨이 사라지는 오류
다음 흐름이 발생할 수 있습니다.
서버에서 당첨 결과 저장
→ 사용자가 앱 전환
→ 결과 화면을 보지 못함
재접속했을 때 이벤트가 다시 참여 가능한 상태로 보이면 새로운 결과가 생성될 수 있습니다.
권장 흐름
기존 참여 기록 확인
→ 오늘의 저장된 결과 표시
QA 시나리오
- 참여 버튼을 누릅니다.
- 애니메이션 중 앱을 닫습니다.
- 다시 접속합니다.
- 같은 결과가 표시되는지 확인합니다.
- 쿠폰이 한 번만 발급되었는지 확인합니다.
사용자의 화면 확인 여부와 서버 결과 저장 여부를 구분해야 합니다.
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
