게임 테스트
QA 엔지니어처럼 게임을 테스트합니다. Claude Code 또는 프로젝트 파일과의 채팅 세션을 사용합니다.
워크플로우
- 규칙 읽기:
RULES.md가 있으면 엽니다(게임-규칙-핵심 스킬에서 제공). 없으면 코드에서 규칙을 추론하여 먼저 작성합니다. 테스트 불가능한 규칙은 명세의 버그입니다. - 코드 매핑: 게임 루프, 상태 머신, 입력 처리, 충돌, 스폰, 점수 코드를 찾습니다.
- 정적 리뷰:
references/checklist.md의 일반적인 버그 목록을 스캔합니다. - 테스트 작성: 순수 로직(충돌 수학, 점수, 상태 전이)에 대한 단위 테스트와 가능한 경우 결정론적 시뮬레이션 테스트(고정 시드, 고정 dt, 스크립트 입력)를 추가합니다.
- 실행 및 관찰: 테스트를 실행하고, 브라우저 도구를 사용할 수 있으면 게임을 플레이하고 콘솔 오류를 캡처합니다.
- 보고: 아래 형식을 사용하여
BUG_REPORT.md를 작성합니다.
테스트 카테고리 (모두 포함)
- 핵심 루프: 시작, 일시정지, 재개, 재시작, 게임 오버, 승리. 모든 상태 전이가 작동하고 올바른 항목을 재설정합니다.
- 입력: 동시 키 입력, 일시정지 중 키 홀드, 빠른 탭, 포커스 손실(블러), 지원되는 경우 터치 및 게임패드.
- 충돌/물리: 고속에서의 터널링, 모서리 걸림, 가장자리에 서기, 움직이는 플랫폼, 세계 밖으로 떨어짐.
- 규칙:
RULES.md의 각 줄에 대해 최소 하나의 테스트: 트리거, 조건, 효과, 엣지 케이스. - 점수/진행: 올바르게 증가, 이중 계산 없음, 재시작 시 재설정, 지속성(localStorage)이 새로고침 후에도 유지되고 손상된 데이터를 처리합니다.
- 스폰: 제한 준수, 항상 통과 가능, 재시작 후 엔티티 없음, 시간이 지남에 따라 메모리 증가 없음.
- 프레임 속도 독립성: 시뮬레이션된 30, 60, 144 FPS에서 실행; 게임플레이 결과가 일치해야 합니다.
- 성능: 프레임 시간, 엔티티 개수 증가, 메모리 누수, 드로우 콜(3D).
- 견고성: 창 크기 조정, 탭 전환, 빠른 재시작, 모바일 뷰포트.
- 결정론: 동일한 시드와 동일한 입력이 동일한 결과를 제공합니다.
버그 보고서 형식
각 버그에 대해:
- ID / 제목
- 심각도: 치명적(크래시, 소프트락, 진행 손실) / 주요(규칙 위반) / 사소(시각적, 느낌) / 개선
- 재현 단계 (번호 매김, 정확하게)
- 예상 결과 vs 실제 결과
- 증거: 파일 및 라인, 콘솔 오류, 또는 실패한 테스트명
- 제안된 수정 사항 (한두 줄)
보고서를 심각도별 개수 요약 테이블과 테스트되지 않은 항목 목록으로 마무리합니다.
엄격한 규칙
- 증거(실패한 테스트, 로그, 또는 가리킬 수 있는 코드 경로) 없이 버그를 주장하지 마십시오.
- 실행하지 않은 동작이 작동한다고 주장하지 마십시오. "검토만 함, 실행 안 함"이라고 말하십시오.
- "내가 플레이했는데 괜찮았다"보다 결정론적 테스트를 선호하십시오.
- 요청하지 않는 한 게임플레이 코드를 변경하지 마십시오. 먼저 보고하고, 요청 시 수정하십시오.