Showing Posts From

Qa

버그 수정 확인 - 개발자와의 그 짧은 대화

버그 수정 확인 - 개발자와의 그 짧은 대화

버그 수정 확인 - 개발자와의 그 짧은 대화 그 한마디 "민수씨, 수정했어요." 슬랙 메시지다. 오전 10시 43분. 어제 등록한 버그. JIRA-4521. 로그인 후 프로필 사진 안 뜨는 거. Priority: High. 배포 2일 전이다. "확인하겠습니다." 답장 보내고 빌드 받는다. 20분 걸린다.설치 완료. 로그인한다. 프로필 사진 뜬다. "오, 됐네?" 근데 뭔가 이상하다. 로그아웃했다가 다시 들어간다. 안 뜬다. 다시 켜본다. 뜬다. 앱 강제 종료. 재실행. 안 뜬다. "아..." 두 번째 메시지 "재현 스텝이요." 슬랙에 쓴다. 스크린샷 3장 첨부.로그인 앱 강제 종료 재실행 프로필 사진 안 뜸개발자 답장. 5분 후. "아 그건 캐시 문제일 거예요. 다음 빌드에서 볼게요." Priority가 High에서 Critical로 바뀐다. 배포 2일 전인데. 점심 먹으러 간다. 김치찌개 맛이 없다. 오후의 반복 오후 2시. 새 빌드 온다. "이번엔 진짜 고쳤습니다." 설치한다. 같은 시나리오 돌린다. 된다. 10번 반복한다. 다 된다. "좋아." 근데 직감이 있다. 뭔가 더 해봐야 할 것 같다. 네트워크 끊어본다. 와이파이 껐다 켠다. 프로필 사진 깨진다. 엑스박스 아이콘. "하..."그 짧은 대화 개발자 자리로 간다. 3미터 거리. "저기요, 네트워크 상태 변경하면..." "아 맞다. 그것까지는 못 봤네요." "언제 가능할까요?" "음... 내일 오전?" 배포 하루 전이다. "네, 기다릴게요." 자리 돌아온다. TestRail에 체크한다. "Fixed (Partial)". 커피 마신다. 네 번째다. 신뢰의 문제가 아니다 '수정했어요'를 못 믿는 게 아니다. 개발자가 거짓말하는 것도 아니다. 그냥 '수정했다'의 정의가 다른 거다. 개발자: "코드 수정했다 = 수정 완료" QA: "모든 시나리오 통과 = 수정 완료" 이 간극. 매번 경험한다. 신입 때는 속상했다. "왜 대충 고쳐?" 3년 차쯤 깨달았다. 개발자는 자기가 고친 케이스만 본다. 당연하다. 시간도 없고, 엣지 케이스는 생각 안 난다. 그게 QA 역할이다. 근데 이걸 설명하기 힘들다. "의심해서 죄송합니다" 같은 느낌 들 때 있다. 체크리스트 버그 수정 확인할 때 내가 하는 것.리포트한 시나리오 그대로 (기본) 반대 순서로 빠르게 연속으로 느리게 하나씩 네트워크 끊고 백그라운드 갔다가 권한 꺼보고 다른 기기에서 이전 빌드랑 비교 관련 기능 리그레션10개 다 하면 30분 걸린다. 시간 없으면? 줄인다. 근데 줄이고 나서 배포하면 불안하다.내일 오전 다음 날. 9시 30분. 빌드 온다. "네트워크 이슈 수정" 설치. 테스트 시작. 로그인. 정상. 앱 종료. 재실행. 정상. 네트워크 끊기. 정상. (캐시된 이미지 표시) 와이파이 켜기. 정상. (이미지 갱신) 비행기 모드. 정상. LTE 전환. 정상. 10번 반복. 다 정상. "됐다." JIRA 상태 변경. "Verified". 개발자한테 슬랙. "확인 완료했습니다." 답장. "감사합니다 ㅎㅎ" 이 'ㅎㅎ'에 안도가 느껴진다. 그래도 나오는 버그 배포했다. 다음 날 아침. CS 문의 들어온다. "프로필 사진이 다른 사람 걸로 나와요." "...뭐?" 재현 안 된다. 우리 계정으로는. CS팀이랑 통화한다. 자세한 상황 듣는다. "아, 계정 두 개로 번갈아 로그인하셨구나." 테스트 안 한 시나리오다. 핫픽스 들어간다. 개발자: "QA에서 확인 안 하셨어요?" "..." 말 안 한다. '계정 두 개 케이스는 스펙 문서에 없었는데요' 같은 거. 버그 등록한다. JIRA-4527. "계정 전환 시 프로필 사진 캐시 이슈" Priority: Critical. 완벽한 검증은 없다 4년 했다. 깨달은 거. 모든 케이스 다 볼 수 없다. 시간도 부족하고, 상상력도 한계 있다. 그래도 최대한 본다. 개발자가 '수정했어요' 하면, 믿으면서도 의심한다. 이상한 관계다. 근데 이게 QA다. 신뢰는 '맹신'이 아니라 '검증 후 확신'이다. 대화가 쌓이면 6개월 함께 일한 개발자가 있다. 처음엔 서로 불편했다. 나: "여기 또 재현돼요." 개발자: "제 폰에선 안 그러는데요." 이게 한 달 반복됐다. 근데 어느 순간부터. 개발자: "민수씨, 이 케이스도 확인 부탁드려요." 자기가 놓칠 수 있는 거 미리 말한다. 나: "네트워크 전환이랑 권한 쪽 집중적으로 볼게요." 확인 범위 얘기한다. 대화가 짧아졌다. 근데 신뢰는 더 깊어졌다. '수정했어요'의 의미를 서로 안다. "코드는 고쳤고, 기본 케이스는 확인했다. 나머지는 QA가 봐줄 거다." 이걸 말 안 해도 안다. 금요일 저녁 배포 직전. 6시. 마지막 빌드 확인 중이다. 개발자가 지나가다 묻는다. "민수씨, 그거 됐어요?" "네, 확인 중이에요. 10분 후에 답 드릴게요." "네, 감사합니다." 10분 후. 슬랙. "최종 확인 완료. 배포 가능합니다." "고생하셨습니다!" 배포 버튼 누른다. PM이. 모니터링 시작한다. 나랑 개발자랑. 30분 후. 특이사항 없다. "오늘은 괜찮은가 봐요." 개발자가 웃는다. "민수씨가 확인해서 그런 거죠." "에이, 뭘요." 근데 기분 좋다. 그 짧은 대화의 무게 "수정했어요." 세 글자다. 네 음절. 근데 이 뒤에 30분 검증이 있다. 10가지 시나리오가 있다. 불안과 확신이 있다. 개발자는 코드를 고친다. QA는 수정을 검증한다. 둘 다 필요하다. '수정했어요'를 믿는 건 맹신이 아니다. 검증하겠다는 약속이다. 퇴근길 7시 반. 집에 간다. 지하철에서 앱 켠다. 우리 서비스 아닌 거. 로그인한다. 프로필 사진 확인한다. "잘 뜨네." 앱 종료했다가 다시 켠다. 프로필 사진 안 뜬다. "..." 다른 회사 QA 생각한다. '쟤도 지금 야근 중이겠네.''수정했어요' 뒤에는 '확인하겠습니다'가 따라온다. 이 짧은 대화가 품질을 만든다.

모니터링 중 발견한 버그 vs 사용자가 먼저 발견한 버그

모니터링 중 발견한 버그 vs 사용자가 먼저 발견한 버그

모니터링 중 발견한 버그 vs 사용자가 먼저 발견한 버그 배포 후 30분 배포가 끝났다. 오후 2시. 개발자들은 점심 먹으러 갔다. 나는 모니터 3개 앞에 앉아 있다. 왼쪽 모니터: 실서버 로그 중앙 모니터: 앱스토어 리뷰 오른쪽 모니터: 고객센터 문의 심장이 빨리 뛴다. 배포 후 한 시간이 가장 무섭다.새로고침을 누른다. 로그에 에러가 없다. 다시 누른다. 여전히 없다. 5분마다 새로고침. 괜찮은가 보다. 그런데 불안하다. 배포 후 1시간까지는 내가 먼저 찾아야 한다. 그게 QA의 자존심이다. 내가 먼저 발견했을 때 오후 2시 40분. 로그에 이상한 게 보였다. "결제 API 타임아웃 20건." 앱을 켰다. 결제 화면으로 들어갔다. 로딩이 조금 길다. 다시 시도. 또 길다. 세 번째. "오류가 발생했습니다." 찾았다. 재현 스텝을 정리했다.앱 실행 상품 선택 결제 버튼 클릭 3초 후 타임아웃스크린샷 3장. 로그 캡처. Charles Proxy 패킷 덤프. Jira에 티켓을 등록했다. 제목: [긴급] 결제 API 타임아웃 발생 우선순위: Critical 담당자: 백엔드 팀장 슬랙에 메시지를 보냈다. "@channel 결제 장애 확인. 티켓 확인 부탁드립니다." 10분 후 회신이 왔다. "확인했습니다. 서버 스케일업 중." 30분 후 해결됐다. "민수님 덕분에 빨리 잡았네요." 이럴 때 기분이 좋다. 사용자가 모르게 해결했다. 이게 진짜 QA다.사용자가 먼저 발견했을 때 최악의 시나리오. 오후 3시. 아직 점심 안 먹었다. 모니터링 중이었다. 슬랙 알림이 울렸다. 고객센터 채널이다. "결제가 안 된다는 문의 들어왔어요." "저도 방금 받았습니다." "저도요. 3건." 심장이 멎었다. 앱을 켰다. 결제를 시도했다. 에러가 났다. 로그를 확인했다. 30분 전부터 에러가 쌓여 있었다. 왜 못 봤지. 로그 필터를 잘못 걸었나. 아니다. 그냥 못 본 거다. Jira에 티켓을 급하게 올렸다. 슬랙에 메시지를 보냈다. "@channel 결제 장애 발생. 사용자 리포트 들어왔습니다." 분위기가 다르다. "언제부터였어요?" "30분 전부터요." "왜 이제 알렸어요?" 할 말이 없다. 백엔드 개발자가 말했다. "모니터링 뭐 하고 있었어요?" QA 팀장이 들어왔다. "민수씨, 잠깐 얘기 좀." 1시간 후 해결됐다. 하지만 기분이 다르다. 앱스토어 리뷰에 별 1개가 3개 달렸다. "업데이트 후 결제 안 됨" "환불해주세요" "테스트 안 하나요?" 마지막 리뷰가 제일 아프다.30분의 차이 똑같은 버그다. 똑같은 심각도다. 똑같은 해결 시간이다. 하지만 평가가 다르다. 내가 먼저 발견: "민수님 덕분에" 사용자가 먼저: "모니터링 뭐 했어?" 30분 차이다. 억울하다고 생각했다. 같은 버그인데 왜. 근데 맞는 말이다. 사용자가 겪기 전에 막는 게 QA다. 죄책감의 무게 사용자가 먼저 발견한 버그는 무겁다. 테스트는 완벽하게 했다. 배포 전 체크리스트 다 통과했다. 리그레션 테스트도 했다. 그런데 나왔다. 누구 잘못일까. 개발자는 말한다. "테스트 환경에선 안 그랬는데." 기획자는 말한다. "스펙대로 만들었는데." 디자이너는 말한다. "디자인은 문제없는데." 그럼 QA 잘못인가. 명확한 답은 없다. 하지만 사용자는 생각한다. "테스트 안 하나?" 그 한 줄이 제일 아프다. 모니터링의 압박 배포 후 모니터링은 전쟁이다. 새로고침을 200번 넘게 누른다. 에러 로그를 실시간으로 본다. 앱스토어 리뷰를 5분마다 확인한다. 점심도 못 먹는다. 화장실도 빨리 다녀온다. 왜 이렇게까지 하냐고. 30분 차이 때문이다. 내가 먼저 발견하면 영웅. 사용자가 먼저 발견하면 무능. 극단적이다. 알고 있다. 하지만 현실이 그렇다. 완벽한 배포는 없다 4년 차 QA다. 배포를 100번 넘게 했다. 완벽한 배포는 한 번도 없었다. 크고 작은 버그가 항상 나온다. 테스트 환경과 실서버는 다르다. 사용자 패턴은 예측 불가다. 그래서 모니터링이 중요하다. 내가 먼저 발견하는 게 최선이다. 사용자보다 1분이라도 빨리. 사용자 리포트의 무게 고객센터에서 버그 리포트가 올라오면. 그날은 집에 가도 찝찝하다. 샤워하면서도 생각난다. "내가 뭘 놓쳤지?" 자기 전에 테스트 케이스를 다시 본다. 어디서 놓쳤는지 찾는다. 대부분은 찾지 못한다. 엣지 케이스였거나. 실서버 환경 이슈였거나. 타이밍 이슈였거나. "이건 못 찾을 수밖에 없었어." 스스로 위로한다. 근데 별로 위로가 안 된다. 다음 배포 다음 배포 때는 더 꼼꼼히 본다. 체크리스트를 늘린다. 모니터링 시간을 늘린다. 새로고침 주기를 줄인다. 그래도 버그는 나온다. 완벽은 없다. 하지만 계속 노력한다. 내가 먼저 발견하기 위해서. QA의 자존심 사용자보다 먼저 버그를 찾는 것. 이게 QA의 자존심이다. 개발자에게 물어봤다. "QA 왜 필요한 것 같아요?" "버그 찾아주니까요." 반만 맞다. 사용자보다 먼저 찾아주니까다. 오늘의 배포 오늘도 배포가 있다. 오후 2시. 점심은 간단히 먹었다. 모니터 앞에 앉았다. 새로고침 준비 완료. 이번엔 내가 먼저 찾을 거다.30분 먼저 발견하는 게 QA의 일이다.