★★★★★
#출시·운영·디버그 · claude-code
버그 재현 표준 — 사실 vs 가정 분리
상황: 버그 보고를 받았는데 "가능하면 재현해달라", "왜 그런지 모르겠어"가 섞여 있음.
#버그 보고#재현 절차#QA
변수 2개 — 여기 채우면 아래 프롬프트에 바로 들어가요
상황: 버그 보고를 받았는데 "가능하면 재현해달라", "왜 그런지 모르겠어"가 섞여 있음.
**재현의 3단계 기준**:
1. **사실 (Fact) — 직접 확인한 것**:
- 특정 기기에서 재현 가능 (iOS 15.7, iPhone 13)
- 특정 단계를 따르면 항상 재현 (로그인 → 홈 → 알림 화면 → 크래시)
- 에러 로그 캡처 (Firebase 콘솔, Xcode console, logcat)
2. **가정 (Hypothesis) — 원인 추측**:
- "Stream 리스너가 해제 안 되는 것 같다"
- "메모리 누수일 수도"
- "네트워크 끊길 때 발생하는 것 같다"
3. **재현 불가 (Cannot Reproduce)**:
- "시뮬레이터에서는 안 됨, 실기기만"
- "특정 사용자에게만 발생 → 사용자 데이터 이상일 수도"
- "가끔씩 → 동시성 버그일 수도"
**보고 양식**:
```
📱 기기: {{device}} / {{osVersion}}
🔄 재현 단계:
1. ...
2. ...
3. (크래시 발생)
📊 첨부:
- 스크린샷 (에러 화면)
- 로그 (`adb logcat | grep -E "E/|Exception"`)
- Firebase 콘솔 스크린샷
🤔 추측:
- Stream 해제 누락?
- 타이밍 이슈?
✅ 확인사항:
- 다른 기기에서도 재현 여부
- 네트워크 연결 상태
- 특정 사용자 데이터 여부
```
**디버깅 팁**:
- 항상 재현 가능한가? → 코드 버그일 가능성 높음
- 간헐적인가? → 타이밍/동시성/메모리 누수 의심
- 특정 기기만인가? → OS 버전/ROM 맞춤형 버그
검증: 위 양식으로 버그 보고 → 개발자가 1시간 내 재현 가능
쓰는 법 — 위 칸에 본인 값을 채우면 아래 프롬프트에 바로 반영돼요. 복사 버튼을 누르면 채워진 그대로 클립보드에 담기니까, claude-code(또는 본인이 쓰는 AI)에 붙여넣기만 하면 됩니다. 변수가 없으면 그냥 복사해서 쓰세요.

