배포 날씨 예보 - 오전 9시 빌드, 오후 2시 테스트 시작
- 10 Dec, 2025
배포 날씨 예보 - 오전 9시 빌드, 오후 2시 테스트 시작
오전 7시 - 출근 전 기상 확인
눈 뜨자마자 슬랙 확인했다. 개발팀장 메시지.
“민수님 오늘 2.3.1 배포 예정입니다. 9시 빌드 나갑니다.”
아직 집이다. 샤워도 안 했다. 일단 답장부터.
“네 확인했습니다. QA 완료 예상 시간은요?”
“5시까지요. 6시 스토어 등록 목표입니다.”
9시간이다. 체인지로그 확인했다. 항목 12개. 새 기능 2개, 버그 픽스 10개.
아 씨. 새 기능 있으면 시간 더 걸리는데.

커피 내렸다. 진하게. 오늘 세 잔은 마실 거다.
배포 날은 전쟁이다. 아니 날씨 같다. 예보는 맑음인데 갑자기 폭우 쏟아지는 날 있잖아. 그런 날.
지난달 생각난다. “간단한 수정”이래서 1시간 보고 했더니 결제 플로우 전체가 깨졌다. 밤 11시까지 테스트했다.
배포 날은 예측이 중요하다. 체인지로그만 믿으면 안 된다. 날씨 예보처럼 여러 지표를 본다.
- 마지막 커밋 시간 (새벽 4시면 위험)
- 수정한 개발자 (A개발자면 안심, B개발자면 긴장)
- 변경 파일 개수 (5개 넘으면 연관 버그 각오)
- 지난 배포 핫픽스 여부 (있었으면 이번에도 있다)
오늘 체크했다.
마지막 커밋: 어제 저녁 7시. 괜찮다. 개발자: C님. 중간이다. 50% 확률. 변경 파일: 18개. 많다. 위험. 지난 배포: 핫픽스 1번. 경고.
종합 예보: 흐림. 소나기 가능성 60%.
오전 9시 - 빌드 도착, 초기 점검
회사 도착. 9시 5분. 빌드 슬랙 알림 왔다.
“QA 빌드 #234 업로드 완료”
다운로드 시작. 커피 한 모금. 설치.
첫 실행이 중요하다. 크래시 나면 하루 끝이다.
앱 켰다. 로딩. 메인 화면.
됐다. 일단 한숨.
초기 점검 시작. 체크리스트 꺼냈다. 항상 똑같이 한다.
빌드 도착 직후 10분 체크리스트
- 앱 설치/실행 (크래시 확인)
- 로그인 (계정 3개 돌려가며)
- 메인 기능 3개 (결제, 검색, 내정보)
- 이전 버전 Known Issue (재발 확인)
- 새 기능 진입 (UI 깨짐 체크)
10분 만에 끝냈다. 이상 없음.
개발자한테 메시지.
“빌드 받았습니다. 초기 점검 OK. 본 테스트 들어갑니다.”
답 왔다.
“감사합니다~”
물결 많다. 불안하다는 뜻이다.

오전 10시 - 체인지로그 분석
본격 시작 전에 체인지로그 뜯어봤다.
2.3.1 변경 사항
새 기능:
- 위시리스트 공유 기능
- 다크모드 UI 개선
버그 픽스:
- iOS 결제 실패 이슈
- 검색 필터 안 먹히는 문제
- 프로필 이미지 안 나오는 버그
- 푸시 알림 중복 발송
- 리뷰 작성 시 키보드 안 내려감
- 상품 상세 로딩 느린 문제
- 장바구니 수량 변경 오류
- 쿠폰 적용 안 되는 케이스
- 로그아웃 후 재로그인 오류
- 설정 화면 스크롤 버벅임
12개다. 4시간에 끝낼 수 있나.
우선순위 정했다. 경험상 알다.
Critical (반드시)
- 결제 관련 (1번, 8번)
- 로그인/로그아웃 (9번)
- 새 기능 전체 플로우 (위시리스트, 다크모드)
High (꼭)
- 푸시 알림 (4번)
- 장바구니 (7번)
- 검색 (2번)
Medium (시간 되면)
- UI 버그들 (3, 5, 10번)
- 성능 (6번)
Low는 없다. 배포 날에 Low는 없다. 다 High다.
테스트 케이스 정리했다. 엑셀 켰다.
총 87개 케이스. 새 기능 30개, 리그레션 57개.
4시간이면… 케이스당 3분. 불가능하다.
리그레션 줄였다. 변경 영향 있는 것만. 38개로.
총 68개. 케이스당 3.5분. 빡빡하지만 가능하다.
단, 버그 안 나왔을 때.
오전 11시 - 위시리스트 공유 지옥
새 기능부터 했다. 위시리스트 공유.
간단해 보였다. “공유” 버튼 누르면 링크 복사. 끝.
그게 아니었다.
테스트 시나리오 1: 기본 공유
- 위시리스트 생성
- 상품 3개 추가
- 공유 버튼 클릭
- 링크 복사 확인
- 카톡으로 전송
- 링크 클릭
- 위시리스트 표시
됐다. 다음.
테스트 시나리오 2: 비로그인 수신
- 로그아웃
- 링크 클릭
- 로그인 유도 팝업
- 로그인 후 위시리스트 확인
안 됐다.
로그인 후에 메인 화면으로 간다. 위시리스트 안 뜬다.
버그 1번. Jira 등록.
BUG-1847: 비로그인 상태 위시리스트 링크 클릭 후 로그인 시 딥링크 미작동
재현 스텝 썼다. 스크린샷 5장 첨부. 영상도 찍었다.
개발자한테 슬랙.
“위시리스트 공유 버그 올렸습니다. 확인 부탁드려요.”
5분 후 답 왔다.
“아 그거 스펙 아닌가요? 딥링크는 로그인 상태에서만…”
아니다. 기획서 확인했다. 명시돼 있다. “비로그인도 지원”
기획자한테 물었다.
“위시리스트 공유, 비로그인도 되는 거 맞죠?”
“네 맞아요. 로그인 후 자동으로 이동해야 해요.”
개발자한테 다시.
“기획 확인했습니다. 버그 맞습니다.”
“아… 네 확인할게요.”

30분 지났다. 아직 시나리오 2다.
테스트 시나리오 3: 품절 상품 포함
- 위시리스트에 품절 상품 추가
- 공유
- 수신자 확인
품절 상품이 안 보인다. 의도인가 버그인가.
기획자한테 또 물었다.
“품절 상품도 보여야 하나요?”
“당연하죠. 품절 표시하고 보여줘야죠.”
버그 2번.
BUG-1848: 위시리스트 공유 시 품절 상품 미표시
개발자 반응.
”?? 품절은 필터링하는 게 맞는 거 아닌가요”
기획자 반응.
“아니요. 보여줘야 해요.”
이래서 스펙 문서가 중요하다. 근데 스펙 문서에 없다. 당연한 거라고 생각해서.
당연한 게 없다. QA한테는.
테스트 시나리오 4-10
계속했다. 엣지 케이스.
- 위시리스트 삭제 후 링크 클릭
- 상품 전체 삭제된 위시리스트
- 공유 링크 만료 (7일)
- 동일 링크 재사용
- 위시리스트 100개 상품 (대량)
- 특수문자 포함 상품명
- 이미지 없는 상품
버그 4개 더 나왔다.
11시 30분. 새 기능 하나에 1시간 반.
아직 다크모드 안 했다.
오후 12시 - 점심 거른다
식당 갈 시간 없다. 편의점 갔다.
삼각김밥 2개. 바나나우유. 에너지바.
책상에서 먹으면서 다크모드 테스트.
다크모드는 UI 테스트다. 모든 화면 봐야 한다.
다크모드 체크리스트
- 메인 화면 (배경, 텍스트, 아이콘)
- 상품 리스트 (카드, 이미지 경계)
- 상품 상세 (리뷰, 문의, 구매)
- 마이페이지 (프로필, 설정)
- 결제 화면 (폼, 버튼)
- 팝업/토스트 (대비, 가독성)
- 에러 메시지 (빨간색 가독성)
화면 50개. 하나씩 라이트/다크 전환하며.
삼각김밥 먹으면서 스크린샷 찍었다.
버그 발견. 결제 화면.
다크모드에서 입력 필드 테두리가 안 보인다. 배경이랑 같은 색.
버그 등록.
BUG-1853: 다크모드 결제 화면 입력 필드 테두리 미표시
심각도 High. 결제는 Critical 경로다.
개발자 반응.
“헉 확인했습니다. 바로 수정할게요”
빠르다. 좋다.
근데 또 있다.
리뷰 별점. 라이트모드에선 노란 별. 다크모드에선… 흰 별.
배경이 어두운 회색인데 흰 별이면 안 예쁘다. 이건 버그인가 디자인인가.
디자이너한테 물었다.
“다크모드 별점 색상 흰색 맞나요?”
“어? 노란색이어야 하는데요.”
버그다.
BUG-1854: 다크모드 리뷰 별점 색상 오류 (노란색→흰색)
12시 40분. 점심 시간 끝났다.
다크모드 30개 화면 남았다.
오후 1시 - 리그레션의 압박
새 기능만 하면 안 된다. 리그레션 해야 한다.
기존 기능이 안 깨졌는지. 이게 더 무섭다.
“새 기능 버그는 찾아도 괜찮다. 기존 기능 버그는 QA 책임이다.”
누가 그랬나. 나다.
리그레션 리스트 38개. 우선순위 높은 것부터.
결제 플로우 (30분)
- 일반 결제
- 쿠폰 적용
- 포인트 사용
- 복합 결제 (쿠폰+포인트)
- 결제 실패
- 환불
다 됐다. 이상 없음.
근데 이상하다. iOS 결제 실패 이슈 수정했다는데 테스트 케이스가 없다.
개발자한테 물었다.
“iOS 결제 실패 이슈, 어떤 상황에서 실패했던 건가요?”
“아 그거요. 카드 할부 선택 시 크래시 나던 거요.”
할부? 내 테스트 케이스에 없었다.
급하게 테스트.
할부 3개월. 결제. 됐다. 할부 6개월. 결제. 됐다. 할부 12개월. 결제.
크래시.
“결제 정보를 불러올 수 없습니다.”
아직 안 고쳐졌다. 아니 부분만 고쳐졌다.
버그 리오픈.
BUG-1799: [RE-OPEN] iOS 12개월 할부 결제 시 크래시
개발자 반응.
”?? 3개월이랑 6개월은 되는데요?”
“12개월은 안 됩니다. 재현 영상 첨부했어요.”
“아… 확인할게요.”
1시 30분. 배포까지 4시간 반.
리그레션 30개 남았다.
오후 2시 - 핫픽스 빌드 온다
개발자가 급하게 수정했다.
“민수님 핫픽스 빌드 올렸습니다. #235”
30분 만에 왔다. 빠르다. 불안하다.
빠른 게 좋은 게 아니다. 꼼꼼한 게 좋은 거다.
다운로드. 설치.
핫픽스 확인 항목
- 수정된 버그 (비로그인 딥링크, 결제 필드, 별점, 12개월 할부)
- 주변 기능 (혹시 다른 거 깨졌나)
- 전체 플로우 재확인 (빠른 수정은 실수 동반)
하나씩.
비로그인 딥링크: 됐다. 결제 필드: 됐다. 별점 색상: 됐다. 12개월 할부: 됐다.
좋다. 근데 방심하면 안 된다.
주변 확인. 로그인 플로우 전체 다시.
일반 로그인. 됐다. 소셜 로그인. 됐다. 회원가입. 됐다. 비밀번호 찾기. 됐다.
결제도 전체 다시.
일반 결제. 됐다. 할부 전체. 됐다.
됐다. 됐는데.
위시리스트 공유 다시 해봤다.
로그인 상태에서 링크 받기. 됐다.
근데 앱을 강제 종료하고 링크 클릭하면?
앱 실행. 로딩. 메인 화면.
위시리스트 안 뜬다.
또 버그다.
BUG-1855: 앱 미실행 상태 위시리스트 딥링크 미작동
개발자 멘션.
“딥링크 한 가지 더 확인 부탁드립니다.”
답이 없다.
5분 후.
“아… 콜드 스타트 케이스 놓쳤네요. 수정할게요.”
또 기다린다.
오후 3시 - 두 번째 핫픽스
빌드 #236 왔다.
이번엔 더 꼼꼼하게.
콜드 스타트 딥링크: 됐다. 웜 스타트 딥링크: 됐다. 백그라운드 딥링크: 됐다.
모든 상황 테스트했다.
이제 진짜 됐다.
리그레션 재개. 25개 남았다.
검색 기능 (20분)
- 키워드 검색
- 필터 (카테고리, 가격, 평점)
- 정렬 (인기순, 최신순, 가격순)
- 최근 검색어
- 자동완성
됐다.
장바구니 (15분)
- 상품 추가/삭제
- 수량 변경
- 옵션 변경
- 선택 삭제
- 전체 삭제
수량 변경에서 걸렸다.
100개 입력. 저장. 확인.
수량이 1로 돌아갔다.
버그인가? 체인지로그 확인. “수량 변경 오류 수정”
이게 수정된 거다. 100개는 최대 수량 초과라서 1로 리셋.
그럼 에러 메시지가 떠야 하는 거 아닌가?
기획자한테.
“장바구니 최대 수량 초과 시 동작이요?”
“최대 수량으로 자동 조정하고 토스트 띄워요.”
토스트 없다. 버그.
BUG-1856: 장바구니 최대 수량 초과 시 안내 메시지 미표시
개발자.
“토스트까지 해야 하나요? 간단한 수정인데…”
기획자.
“네 사용자가 왜 수량이 바뀌었는지 알아야죠.”
추가 수정 들어갔다.
3시 40분. 배포까지 3시간 20분.
리그레션 15개 남았다.
오후 4시 - 마지막 빌드의 공포
세 번째 핫픽스. 빌드 #237.
이제 지친다. 커피 네 번째.
토스트 확인. 됐다.
근데 불안하다. 세 번째 핫픽스. 경험상 알다.
“세 번 고치면 네 번째 버그가 온다.”
전체 플로우 다시. 처음부터.
로그인. 검색. 상품 담기. 위시리스트. 공유. 결제.
전부 됐다.
괜찮다. 이번엔 괜찮다.
리그레션 나머지.
프로필 (10분)
- 정보 수정
- 이미지 업로드
- 배송지 관리
- 리뷰 목록
됐다.
설정 (10분)
- 알림 설정
- 약관 확인
- 버전 정보
- 로그아웃
됐다.
푸시 알림 (15분)
이게 제일 귀찮다. 실제 발송 테스트 해야 한다.
개발자한테.
“푸시 테스트 발송 부탁드려요.”
발송 왔다. 확인.
앱 꺼진 상태: 알림 옴. 클릭. 해당 화면 이동. 됐다. 앱 켜진 상태: 인앱 알림. 클릭. 이동. 됐다.
중복 발송 확인. 안 온다. 수정 확인.
성능 체크 (10분)
상품 상세 로딩. 2초. 괜찮다.
리스트 스크롤. 부드럽다.
이미지 로딩. 빠르다.
메모리 사용량. 정상.
배터리 소모. 측정 불가. 시간 없다.
4시 50분. 리그레션 완료.
오후 5시 - 최종 보고서
테스트 끝났다.
최종 결과
총 테스트 케이스: 68개 실행: 68개 통과: 59개 실패: 9개 (모두 수정 완료)
발견 버그: 11개 Critical: 0개 High: 3개 Medium: 8개
빌드: #237 (3차 핫픽스)
배포 가능 여부: 조건부 승인
조건: 모니터링 필수 항목
- 위시리스트 딥링크 (신규 기능)
- 12개월 할부 결제 (iOS)
- 장바구니 수량 변경 (토스트)
보고서 작성. 슬랙에 공유.
“QA 완료했습니다. 배포 승인합니다. 단, 위 3개 항목 모니터링 부탁드립니다.”
팀장 반응.
“고생하셨습니다. 6시 배포 진행하겠습니다.”
개발팀장.
“민수님 덕분에 큰 버그 잡았네요. 감사합니다.”
기분 좋다. 이럴 때 보람 느낀다.
근데 아직 끝 아니다.
오후 6시 - 스토어 배포 모니터링
개발자가 빌드 업로드했다.
앱스토어: 심사 대기 플레이스토어: 심사 중
플레이스토어는 빠르다. 1시간이면 통과.
앱스토어는 느리다. 길면 24시간.
오늘은 빨랐다. 2시간 만에 둘 다 통과.
배포 시작. 단계별 배포.
1단계: 5% (1시간) 2단계: 25% (2시간) 3단계: 100%
5% 배포. 모니터링 시작.
Firebase Crashlytics 켰다. 크래시 리포트 확인.
없다. 좋다.
GA4 켰다. 실시간 사용자.
위시리스트 공유 이벤트. 5건. 성공 5건.
결제 이벤트. 12건. 성공 11건, 실패 1건.
실패 로그 확인. 카드사 오류. 우리 버그 아니다.
슬랙 모니터링. CS 문의 없다.
1시간 지났다. 이상 없음.
25% 배포.
2시간 더 모니터링.
크래시 없음. CS 문의 없음.
괜찮다. 이번 배포는 안정적이다.
오후 9시 - 퇴근 전 회고
100% 배포 완료.
총 사용자 50만. 크래시율 0.1%. 정상.
배포 성공이다.
오늘 배운 것.
배포 날 생존 법칙
- 체인지로그를 믿지 마라. 직접 확인해라.
- 첫 빌드에 모든 버그가 있다. 각오해라.
- 핫픽스는 또 다른 버그를 부른다.
- 빠른 수정보다 정확한 수정이 낫다.
- 엣지 케이스를 놓치지 마라.
- 개발자와 기획자 사이에서 팩트로 말해라.
- 리그레션을 절대 건너뛰지 마라.
- 마지막까지 방심하지 마라.
- 모니터링까지가 배포다.
- 커피는 필수다.
책상 정리했다. 테스트폰 5대. 노트북. 체크리스트.
여자친구한테 카톡.
“끝났어. 배고파 죽겠다.”
“고생했어 ㅠㅠ 뭐 먹을래?”
“고기. 무조건 고기.”
가방 챙겼다. 불 껐다.
내일 출근하면 또 버그 리포트가 쌓여 있겠지.
CS팀에서 “이거 버그 아닌가요?” 하는 문의.
개발자는 “다음 버전에 넣을게요” 하는 답변.
그게 QA 일상이다.
그래도 오늘은 잘했다. 큰 버그 다 잡았다. 사용자는 모를 거다.
모르는 게 최고다. 모르게 하는 게 QA 실력이다.
배포 날씨는 예보할 수 있다. 100% 정확하진 않지만. 대비는 할 수 있다. 그게 경력이다.
