Showing Posts From
배포
- 25 Dec, 2025
배포 1시간 전, 갑자기 '테스트 범위 줄여주세요'
배포 1시간 전, 갑자기 '테스트 범위 줄여주세요' 오후 4시, 슬랙 메시지 배포는 6시다. 2시간 남았다. 리그레션 테스트 중이다. 핵심 플로우 80% 완료. 슬랙 알림 떴다. 개발팀장: "민수님, 5시까지 테스트 마무리 가능하세요? 배포 1시간 앞당겨야 할 것 같아요." 손이 멈췄다. 화면을 쳐다봤다. 테스트 케이스 234개. 완료 187개. 남은 거 47개. 계산했다. 1시간. 불가능하다. "범위 줄여야 할까요?" 내가 먼저 물었다. 항상 이렇다. "핵심만 보고 넘어가죠." 대답은 빠르다. 준비된 답처럼. 키보드 앞에 앉아있다. 어떤 걸 빼야 하지.4년차의 판단 테스트 범위를 줄인다. 말은 쉽다. 실제론 어렵다. 체크리스트 열었다. 빨간색으로 핵심 플로우 표시되어 있다. 로그인, 결제, 주문. 이건 무조건이다. 노란색은 중요. 프로필 수정, 장바구니, 검색. 파란색은 부가 기능. 공유하기, 즐겨찾기, 알림 설정. 파란색부터 지운다. 47개가 32개로 줄었다. 아직도 많다. 노란색을 본다. 프로필 수정은 이번 배포에 안 건드렸다. 패스. 장바구니는... 결제랑 연결된다. 건드리면 위험하다. 남긴다. 검색은 UI만 바뀌었다. 로직은 그대로. 간단히만. 32개가 21개로. 1시간이면 가능하다. 빡빡하지만. 엑셀에 정리한다. "테스트 제외 항목" 시트 만들었다. 제외 사유 적었다. "이번 배포 미반영", "회귀 위험도 낮음", "시간 제약". 문서화한다. 항상. 나중에 버그 나면 내 방어막이다.머릿속 시뮬레이션 테스트 시작 전에 생각한다. 만약 이거 안 하고 배포하면? 검색 기능. UI만 바뀌었다. 근데 검색 결과 정렬 로직은? 혹시 건드렸나? 지라 티켓 다시 확인했다. "UI 개선"만 적혀있다. 코드 변경 범위는 안 적혀있다. 개발자한테 물었다. "지훈씨, 검색 UI 수정할 때 정렬 로직도 건드렸어요?" "아뇨, CSS만 바꿨어요." "확실해요?" "네." 믿는다. 근데 테스트는 한다. 검색 한 번, 정렬 한 번, 필터 한 번. 3분이면 된다. 즐겨찾기는 뺀다. 이번 배포랑 상관없다. 2주 전부터 안 건드렸다. 근데 찜찜하다. 항상 이렇다. 머릿속으로 시나리오 그린다. 유저가 즐겨찾기 눌렀다. 안 된다. 컴플레인 들어온다. "QA는 뭐 했어요?" "이번 배포랑 무관한 부분이라..." "그래도 테스트는 했어야죠." 변명처럼 들린다. 항상. 그래도 뺀다. 시간이 없다. 리스크 관리다. 완벽한 QA는 없다.4시 30분, 실전 타이머 켰다. 1시간 30분. 집중한다. 로그인. 일반 로그인, 소셜 로그인, 자동 로그인. 통과. 회원가입. 이메일 중복, 약관 동의, 인증번호. 통과. 결제. 카드, 간편결제, 쿠폰 적용. 여기서 5분 더 걸렸다. 쿠폰 할인율이 이상하다. 슬랙 보냈다. "지훈씨, 쿠폰 10% 할인인데 9%만 적용돼요." "아 그거 반올림 이슈요. 수정할게요." 기다린다. 10분. 빌드 다시 받았다. 재테스트. 통과. 시계 봤다. 5시 20분. 남은 테스트 6개. 가능하다. 주문 내역. 취소, 환불, 배송 조회. 빠르게. 푸시 알림. 받음, 안 받음, 클릭 시 이동. 확인. 장바구니. 추가, 삭제, 수량 변경. 마지막. 5시 48분. 끝났다. 슬랙에 보고했다. "핵심 플로우 테스트 완료했습니다. 이슈 1건 수정 완료 확인. 배포 가능합니다." 개발팀장: "고생하셨습니다." 짧다. 항상 짧다. 배포 후, 6시 30분 배포 완료 메시지 떴다. 모니터링 시작한다. 센트리 확인. 에러 없다. 앱 리뷰 확인. 아직 조용하다. 슬랙 공지방 확인. 이상 없다. 긴장 풀렸다. 조금. 근데 찝찝하다. 테스트 안 한 26개 기능. 머릿속에 남아있다. 즐겨찾기, 공유하기, 프로필 수정... 만약 여기서 버그 나면? 확률적으론 낮다. 이번 배포에 안 건드렸으니까. 근데 완벽하게 안전한 건 아니다. QA는 항상 이렇다. 100% 확신은 없다. 확률 게임이다. 저녁 먹으면서 생각했다. '테스트 범위를 줄인다'는 건 '리스크를 떠안는다'는 거다. 내가 판단한다. 내가 책임진다. 무섭다. 가끔. 품질 vs 속도 4년 동안 배웠다. 완벽한 테스트는 불가능하다. 시간은 한정되어 있다. 리소스도 한정되어 있다. 버그는 무한하다. 선택해야 한다. 무엇을 테스트할 것인가. 무엇을 포기할 것인가. 회사는 속도를 원한다. 빨리 배포하고, 빨리 피드백받고, 빨리 수정한다. 애자일이라고 한다. 그럴듯하다. 나는 품질을 원한다. 버그 없는 앱, 매끄러운 경험, 안정적인 서비스. 이상적이다. 현실은 아니다. 타협한다. 매번. 중요한 건 기준이다. 어떤 기준으로 범위를 줄일 것인가. 내 기준은 이렇다.이번 배포 변경 범위 유저 영향도 과거 버그 히스토리 회귀 위험도이 네 가지로 판단한다. 결제는 무조건이다. 유저 영향도 최상. UI 변경은 가볍게. 로직 변경은 무겁게. 과거에 버그 많았던 기능은 꼼꼼히. 연관 기능 많으면 회귀 테스트 필수. 문서화한다. 항상. 판단 근거를 남긴다. 나중에 내 방어막이다. 개발자와의 대화 테스트 범위 줄일 때 제일 중요한 건 커뮤니케이션이다. 개발자한테 물어본다. "이번에 정확히 뭘 고쳤어요?" "연관된 부분은 없어요?" "어디까지 테스트하면 될까요?" 대답은 다양하다. 어떤 개발자는 친절하다. "여기 로직 바꿨고, 여기는 안 건드렸어요. 이 부분만 보면 돼요." 고맙다. 같이 일하기 좋다. 어떤 개발자는 애매하다. "음... 대충 다 봐주세요." 도움 안 된다. 내가 알아서 해야 한다. 어떤 개발자는 방어적이다. "제 로컬에선 문제없는데요." 알아. 근데 QA 환경에선 문제야. 신뢰 관계가 중요하다. 개발자를 믿어야 범위를 줄일 수 있다. "로직 안 건드렸어요" 말을 믿고 테스트를 패스한다. 근데 가끔 배신당한다. "안 건드렸다"는데 버그가 난다. 의도치 않은 사이드 이펙트. 그럴 땐 어쩔 수 없다. 다음부턴 더 꼼꼼히 본다. 4년 동안 배웠다. 말보다 코드 커밋 로그를 본다. "UI만 바꿨다"는데 로직 파일도 수정됐으면 의심한다. QA는 믿음과 의심 사이다. 배포 후 3일째 버그 없다. 다행이다. 테스트 안 한 26개 기능도 문제없다. 판단이 맞았다. 근데 항상 운이 좋은 건 아니다. 지난달 생각난다. 비슷한 상황이었다. 시간 없어서 범위 줄였다. 공유하기 기능 테스트 패스했다. 이번 배포 무관이라고 판단. 배포 3시간 후. 앱 리뷰 터졌다. "공유가 안 돼요." 확인했다. 새로 추가된 권한 체크 로직이 공유 기능을 막았다. 개발자도 몰랐다. 의도치 않은 버그. 팀장한테 불려갔다. "이번 테스트 범위에 공유 기능 없었나요?" "네, 이번 배포 변경 사항이 아니라서..." "그래도 기본 기능은 봐야죠." 할 말이 없었다. 핫픽스 나갔다. 야근했다. 집에 가면서 생각했다. 내 판단이 틀렸나? 시간이 부족했던 건가? 회사가 무리한 건가? 답은 없었다. QA는 이렇다. 버그 안 나오면 당연한 거고, 버그 나오면 QA 책임이다. 억울하다. 가끔. 내가 만든 체크리스트 실수 반복하고 싶지 않았다. 체크리스트 만들었다. "긴급 테스트 범위 축소 가이드" 절대 빼면 안 되는 것로그인/회원가입 결제 플로우 핵심 비즈니스 로직 법적/보안 관련 기능 이번 배포 직접 수정 항목조건부로 축소 가능UI만 변경된 기능 (로직 미변경 확인 필수) 부가 기능 (공유, 알림 등) AB 테스트 대상 (일부 유저만 노출)축소 시 문서화 필수 항목제외한 테스트 케이스 목록 제외 사유 잠재 리스크 배포 후 모니터링 계획이걸 팀 위키에 올렸다. 팀장이 좋다고 했다. "다음엔 이거 기준으로 합시다." 동료 QA가 물었다. "근데 이것도 지켜지지 않으면?" 웃었다. "그럼 또 야근하지 뭐." 현실은 그렇다. 가이드가 있어도 압박은 온다. "그냥 빨리 해주세요." 근데 있는 것과 없는 것은 다르다. 최소한 근거는 있다. 여자친구와의 대화 주말에 여자친구 만났다. 간호사라 바쁘다. 나도 바쁘다. 한 달에 두세 번 본다. 저녁 먹으면서 말했다. "요즘 일이 힘들어." "왜? 야근?" "그것도 있는데... 테스트 시간을 자꾸 줄이래." 그녀가 물었다. "그럼 뭐가 문제야?" "버그 놓칠 수 있잖아. 내 책임이 되고." "근데 시간 없으면 어쩔 수 없는 거 아니야?" "그래도..." 그녀가 웃었다. "나도 비슷해. 환자 많으면 한 명당 시간 줄어들어. 다 못 봐. 그래도 최선은 다해." "그게 되게 와닿네." "중요한 거 먼저 보고, 나머지는 다음에 보는 거지. 완벽은 없어." 간호사도 비슷하구나. 한정된 시간, 무한한 일. 우선순위 정하고, 트리아지하고, 최선을 다한다. 좀 위로됐다. "그래도 내가 놓친 버그로 유저가 피해 보면..." "너 혼자 책임 아니잖아. 팀이 있는 거고." 맞는 말이다. 근데 막상 당하면 혼자 책임지는 느낌이다. "다음에 그런 일 있으면 나한테 푸념해. 들어줄게." "고마워." 집에 오면서 생각했다. 완벽한 QA는 없다. 완벽한 간호사도 없다. 한정된 시간 안에서 최선을 다하는 것. 위로가 됐다. 조금. 4년차의 생존 전략 테스트 범위를 줄이는 건 기술이다. 경험이 쌓여야 한다. 신입 때는 몰랐다. 모든 걸 다 봐야 한다고 생각했다. 안 보면 불안했다. 2년차 때는 혼났다. 테스트 너무 오래 걸린다고. "핵심만 보세요." 3년차 때는 배웠다. 어떻게 줄이는지. 무엇을 봐야 하는지. 4년차인 지금은 안다. 완벽한 테스트는 환상이다. 리스크 관리가 현실이다. 내 생존 전략: 1. 문서화 모든 판단을 기록한다. 왜 이걸 제외했는지. 회의록, 지라 코멘트, 슬랙 메시지. 증거를 남긴다. 2. 커뮤니케이션 개발자한테 계속 물어본다. 정확히 뭘 고쳤는지. 어디까지 봐야 하는지. 애매하면 다시 물어본다. 3. 우선순위 기준 내 기준을 명확히 한다. 팀원들과 공유한다. 판단 근거를 설명할 수 있어야 한다. 4. 배포 후 모니터링 테스트 못 한 부분은 배포 후 바로 확인한다. 센트리, 앱 리뷰, 유저 문의. 빠르게 감지하고 대응한다. 5. 회고 배포 끝나면 복기한다. 놓친 게 있나, 개선할 점은 뭔가. 혼자 또는 팀과 함께. 이렇게 해도 완벽하지 않다. 그래도 최선이다. 밤 11시, 혼잣말 배포 끝나고 집에 왔다. 샤워하고 침대에 누웠다. 오늘도 살아남았다. 테스트 범위 줄이라는 말 들을 때마다 떨린다. 품질을 포기하는 것 같아서. 내 존재 이유가 흔들리는 것 같아서. 근데 이게 현실이다. 모든 걸 다 볼 수는 없다. 시간은 한정되어 있다. QA의 가치는 모든 걸 테스트하는 게 아니다. 중요한 걸 골라내는 거다. 리스크를 관리하는 거다. 4년 동안 배웠다. 완벽한 앱은 없다. 완벽한 QA도 없다. 그래도 나는 최선을 다한다. 주어진 시간 안에서. 내 판단을 믿고. 때로는 틀릴 수도 있다. 버그가 나갈 수도 있다. 그럼 배우고 개선한다. QA는 그런 일이다. 불확실성 속에서 판단하고, 책임지고, 다시 일어서는 것. 내일도 출근한다. 또 비슷한 일이 있을 것이다. "테스트 범위 줄여주세요." 괜찮다. 준비됐다. 핸드폰 꺼두고 잔다. 내일 또 싸운다."배포 1시간 전"은 QA의 일상이다. 완벽보단 최선을 택한다.
- 10 Dec, 2025
배포 날씨 예보 - 오전 9시 빌드, 오후 2시 테스트 시작
배포 날씨 예보 - 오전 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% 정확하진 않지만. 대비는 할 수 있다. 그게 경력이다.