Sprint 8 _ 안정화_ 성능_ 경계조건 QA
목표
“데모 가능한 앱”이 아니라 “운영 가능한 앱”으로 만든다.
Sprint 8은 기능을 늘리지 않고, 사고 확률을 줄이는 데 집중한다.
S8-1 QA 시나리오 30개 작성 및 체크리스트화
목적
테스트를 감이 아니라 문서로 고정한다.
작업
시나리오 카테고리
권한/위치
슬롯 조회/필터
확보/타이머/만료
체크인/수량 차감
히스토리
제재
네트워크/오프라인
각 시나리오에 기대 결과(상태/화면/로그) 명시
완료 조건
30개 이상의 체크리스트가 문서화됨
릴리즈 전 반복 실행 가능
S8-2 네트워크 재시도 정책 표준화
목적
실패가 “앱이 멈춘 것처럼” 보이지 않게 한다.
작업
요청 유형별 정책
조회(getNearbySlots, listHistory): 자동 재시도 1~2회 가능
상태 변경(createReservation, checkin, redeem): 자동 재시도 최소화(중복 위험) + idempotency 키 고려
공통 에러 매핑(타임아웃, 401, 403, 500 등)
사용자 메시지 템플릿 통일
완료 조건
같은 오류는 항상 같은 UI/문구로 처리됨
상태 변경 API에서 중복 실행 위험이 낮아짐
S8-3 Idempotency(중복 실행 방지) 적용
목적
연타/재시도/네트워크 재전송에서 상태가 꼬이지 않게 한다.
작업
createReservation: (userId, slotId, active window) 기준 중복 방지
checkin: reservationId 기준 idempotent
redeem(있다면): reservationId 기준 idempotent
클라이언트 단에서도 single-flight 유지
완료 조건
같은 요청이 2번 들어와도 결과가 1번과 동일
수량 차감이 중복되지 않음
S8-4 위치 오차/정확도 낮음 대응 강화
목적
현장에서 가장 흔한 실패 원인을 “정책적으로” 흡수한다.
작업
accuracy가 나쁠 때 UI 안내 개선
체크인 반경/정확도 임계값 튜닝 가능한 구조로 분리
위치 갱신 실패 시 재시도 UX 개선(3초 쿨다운 등)
완료 조건
정확도 나쁨 상태에서 사용자가 다음 행동을 알 수 있음
무한 재시도/연타 루프가 생기지 않음
S8-5 앱 재시작/복구 시나리오 완성
목적
사용자가 앱을 껐다 켜도 “현재 예약 상태”가 복원돼야 한다.
작업
앱 시작 시
activeReservationId를 로컬 저장소에 보관(secure storage 또는 async storage)
시작 시 서버에서 상태 재조회 후 복원/정리
만료/도착 상태에 따라 적절한 화면으로 유도
reserved면 ReservedScreen
arrived면 Arrived 화면
expired면 정리 후 Home
완료 조건
앱 강제 종료 후 재실행해도 예약 상태가 이어짐
오래된 activeReservation이 앱을 막지 않음(정리됨)
S8-6 성능 점검: 리스트/상세/타이머 렌더링
목적
“느린 앱”은 정책이 아무리 좋아도 실패한다.
작업
FlatList 성능 점검(스크롤 중 프레임 드랍 관찰)
SlotCard 메모이제이션 검토
불필요한 상태 구독 분리
타이머 화면 렌더 최소화(초당 업데이트 영향 확인)
완료 조건
실사용 기기(중급 안드로이드)에서 스크롤이 안정적
타이머 화면에서 배터리/CPU 과도 사용 징후 없음
S8-7 UI/문구 통일(정책 톤 유지)
목적
광고성/과장/감정적 문구를 제거하고 “차분한 운영 도구” 톤 유지.
작업
공통 문구 정리
권한 필요
만료 안내
체크인 실패(반경/정확도)
제재 안내
문구 스타일 가이드 적용(짧고 구체적으로, 비난 없음)
완료 조건
동일 상황에서 문구 톤이 일관됨
과도한 CTA/배너 느낌 없음
S8-8 관측 가능성(Observability) 최소 패키지
목적
운영 중 문제를 “재현 없이도” 추적할 수 있게 한다.
작업
클라이언트 이벤트 로그를 서버 테이블로 전송(선택, 최소)
- 실패 이벤트(네트워크, checkin_fail, reserve_fail) 우선
서버 로그(함수/RPC 실행, 실패 reason) 기록 강화
각 이벤트에 correlation id(세션/요청 id) 부여(선택)
완료 조건
주요 실패가 로그로 남고, 원인 분류가 가능
“사용자가 안 된대요” 상황에서 최소한의 단서 확보
S8-9 출시 전 점검: 빌드/권한/스토어 준비(안드로이드 내부 테스트)
목적
기능이 아니라 배포가 막히는 사고를 예방한다.
작업
안드로이드 권한 선언 정리
릴리즈 빌드 생성(서명/버전 코드)
내부 테스트 배포(Closed testing)
크래시/ANR 기본 점검
완료 조건
내부 테스트 설치/실행 가능
핵심 플로우 10개를 실기기에서 통과
Sprint 8 완료 정의
다음이 가능해야 한다.
QA 시나리오 30개를 통과
앱 재시작/복구가 안정적
중복 요청/연타/재시도에서 상태가 꼬이지 않음
네트워크/위치 불안정 상황에서도 안내가 명확하고 앱이 죽지 않음
내부 테스트 배포까지 완료