Showing Posts From

사냥꾼

엣지 케이스 사냥꾼 일지 - 버그는 디테일에 숨어있다

엣지 케이스 사냥꾼 일지 - 버그는 디테일에 숨어있다

엣지 케이스 사냥꾼 일지 - 버그는 디테일에 숨어있다 오늘도 엣지 케이스가 날 찾아왔다 출근했다. 테스트 빌드가 와 있다. 개발팀에서 "간단한 수정"이라고 했다. 간단한 수정일수록 더 무섭다는 걸 4년 차면 안다. 빌드 설치하고 앱 켰다. 정상 시나리오부터 돌린다. 문제없다. 이제부터가 진짜다. 나는 엣지 케이스 사냥꾼이다. 정상 사용자가 절대 안 할 것 같은 동작. 그게 내 테스트 범위다.네트워크를 미친 듯이 끊어봤다 첫 번째 타겟. 네트워크. 앱 실행 → 로그인 → 메인 화면. 여기서 와이파이 껐다. 정상 사용자는 안 그런다고? 지하철 타면 터널이다. 계속 끊긴다. 엘리베이터 타도 끊긴다. 이게 엣지 케이스가 아니라 일상이다. 데이터 로딩 중에 끊었다. 로딩 표시가 멈췄다. 무한 로딩. 뒤로 가기도 안 된다. 앱 죽일 수밖에. 버그 등록했다. 재현 스텝 꼼꼼히 적었다. "데이터 로딩 시작 후 2초 시점에 네트워크 차단 → 무한 로딩 → 사용자 액션 불가" 개발자 답변 왔다. "실제로 그럴 일이 있나요?" 있다. 매일 있다.텍스트 필드에 미친 짓을 했다 두 번째 타겟. 입력 필드. 회원가입 화면 띄웠다. 이름 입력란이 보인다. 정상 입력: "홍길동" 내 입력: 이모지 100개. 🎉🎉🎉🎉🎉🎉🎉... 계속. 앱이 버벅거렸다. 입력은 됐다. 다음 버튼 눌렀다. 서버 에러. 500. 또 입력했다. 이번엔 특수문자. !@#$%^&*() 되긴 된다. 저장도 된다. 마이페이지 가서 확인했다. 레이아웃 깨졌다. 글자가 화면 밖으로. 버그 두 건 등록. "이모지 100자 이상 입력 시 서버 에러" "특수문자 포함 이름 저장 시 UI 깨짐" 개발자가 물었다. "누가 이름에 이모지 100개를 넣어요?" 몰라. 근데 막을 거 아니면 처리해야지. 전화번호 입력란도 테스트했다. 숫자 말고 문자 넣어봤다. "가나다" 입력이 된다. 막혀야 하는데. 인증번호 요청 눌렀다. 당연히 실패. 근데 에러 메시지가 이상하다. "undefined error occurred" 세 번째 버그 등록. "전화번호 필드 문자 입력 허용, 에러 메시지 미정의" 오전에 버그 3개. 아직 점심 전이다. 화면 회전을 미친 듯이 돌렸다 점심 먹고 왔다. 세 번째 타겟. 화면 회전. 결제 화면 띄웠다. 가로로 돌렸다. 세로로 돌렸다. 가로. 세로. 가로. 세로. 5번쯤 돌렸을 때 앱이 죽었다. 재현했다. 또 죽었다. 버그 등록. "결제 화면에서 화면 회전 반복 시 앱 크래시" 개발자 반응. "누가 결제 중에 화면을 돌려요?" 누가 알아. 근데 돌릴 수 있으면 대응해야지.동시에 눌러봤다 네 번째 타겟. 동시 액션. '저장' 버튼이 있다. 한 번 누르면 저장된다. 정상. 양손으로 동시에 눌렀다. 연타했다. 5번. 저장 완료 메시지가 5번 떴다. 데이터 확인했다. 같은 데이터가 5개 저장됐다. 중복 저장 방지 안 됨. 버그 등록. "저장 버튼 연타 시 중복 저장 발생" 개발자: "그렇게 빨리 누를 수가 있나요?" 있다. 터치 반응 느리면 사용자가 연타한다. 실제로 CS에서 중복 결제 문의 들어온 적 있다. 좋아요 버튼도 테스트했다. 연타했다. 숫자가 이상하게 올라간다. 1 → 3 → 2 → 5 → 4 API 호출 타이밍 문제인 듯. 버그 추가 등록. 오후에 버그 2개 더. 백그라운드에서 복귀했다 다섯 번째 타겟. 앱 상태 전환. 앱 켜고 로딩 중에 홈 버튼. 10초 기다렸다. 앱 복귀. 화면이 하얗다. 데이터가 안 보인다. 앱 죽이고 다시 켜야 한다. 버그 등록. "백그라운드 복귀 시 데이터 미표시" 개발자: "생명주기 처리 놓쳤네요" 알고 있었다. QA가 없으면 배포됐을 버그다. 푸시 알림도 테스트했다. 앱 켜진 상태에서 푸시 받았다. 알림 탭했다. 해당 화면으로 이동. 뒤로 가기 눌렀다. 앱이 종료됐다. 스택이 잘못 쌓였다. 버그 등록. 하루에 버그 7개. 평균치다. 권한을 미친 듯이 껐다 여섯 번째 타겟. 권한. 카메라 권한 필요한 기능이다. 권한 거부했다. 안내 팝업 뜬다. 정상. 설정 가서 권한 껐다. 앱으로 돌아왔다. 카메라 실행 버튼 눌렀다. 앱이 죽었다. 권한 체크 안 함. 버그 등록. "카메라 권한 거부 상태에서 크래시" 위치 권한도 테스트했다. '항상 허용'에서 '앱 사용 중에만' 변경. 지도 화면 갔다. 내 위치가 업데이트 안 된다. 권한 변경 감지 안 함. 버그 추가. 알림 권한 껐다. 앱에서 알림 설정 화면 들어갔다. 스위치가 다 켜져 있다. 실제론 안 오는데 UI는 켜진 상태. 또 버그. 오늘 10개. 오래된 데이터를 불러왔다 일곱 번째 타겟. 데이터 상태. 1년 전 테스트 계정이 있다. 로그인했다. 마이페이지 들어갔다. 프로필 이미지가 안 보인다. URL이 만료됐나 보다. 오래된 게시글 눌렀다. 댓글이 이상하게 보인다. 탈퇴한 사용자 표시가 안 됨. 찜 목록 들어갔다. 삭제된 상품이 그대로 있다. 눌렀더니 404 에러. 버그 3개 더 등록. "만료된 이미지 URL 처리 미흡" "탈퇴 사용자 댓글 표시 오류" "삭제된 상품 찜 목록 표시" 개발자들이 안 보는 데이터. 오래된 것, 삭제된 것, 만료된 것. 여기서 버그가 나온다. 이상한 조합을 시도했다 여덟 번째 타겟. 기능 조합. 검색하면서 필터 바꿨다. 정렬하면서 새로고침 했다. 동영상 재생 중에 화면 잠갔다. 검색어 입력 중에 필터 변경. 검색어가 사라졌다. 입력 상태 초기화. 버그. 동영상 재생 중 화면 잠금. 5분 후 해제. 동영상이 계속 재생 중이다. 소리는 안 나는데 재생은 됨. 배터리가 닳는다. 버그. 장바구니에 담고 로그아웃. 다른 계정으로 로그인. 장바구니가 이전 계정 거다. 데이터 안 지워짐. 심각한 버그. 오늘 15개. 배포 전이라 다행이다. 개발자와의 대화 버그 리포트 15건 올렸다. 개발자가 채팅 보냈다. "민수님, 이거 다 고쳐야 해요?" "네." "근데 이런 상황 실제로 일어나나요?" "네. 다 재현했어요." "우선순위 좀 정해주세요." 버그 심각도 다시 봤다. Critical: 3개 (앱 크래시, 데이터 유실) High: 7개 (기능 동작 안 함) Medium: 5개 (UI 깨짐, 불편) "Critical 3개는 배포 전에 필수요." "High는 다음 배포까지요." 개발자가 물었다. "이런 엣지 케이스를 어떻게 다 생각해요?" 몰라. 그냥 생각난다. 앱 쓰다 보면 자동으로 떠오른다. '이렇게 하면 어떻게 될까?' '여기서 끊으면?' '이걸 동시에 누르면?' 4년 차 직업병이다. 엣지 케이스가 일상이 된 순간 퇴근길 지하철. 유튜브 보다가 터널 들어갔다. 네트워크 끊겼다. 버퍼링. 터널 나왔다. 재생 재개. '이거 우리 앱은 어떻게 되지?' 테스트했었다. 버그 있었다. 고쳐졌을까? 내일 확인해야지. 편의점 들렀다. 결제 앱 켰다. 바코드 표시. '화면 밝기 최저일 때는?' '화면 회전하면?' '배터리 1%일 때는?' 다 테스트해봐야겠다. 내일 할 일이 또 생겼다. 집 와서 배달 앱 켰다. 주문하다가 앱이 튕겼다. '재현 가능한가?' 다시 켰다. 또 튕겼다. 리뷰 남겼다. "주문 중 앱 크래시, 아이폰 14 Pro, iOS 17.2, 재현 가능" 재현 스텝까지 적었다. 친구가 물었다. "너 왜 리뷰를 버그 리포트처럼 써?" 습관이다. 고칠 수가 없다. QA의 자부심 사람들은 묻는다. "QA가 뭐 하는 건데요?" "버그 찾는 거요." 틀렸다. 우리는 사용자를 보호한다. 정상 사용자가 안 할 동작을 내가 대신 한다. 앱이 죽을 수 있는 상황을 내가 먼저 찾는다. 엣지 케이스는 엣지가 아니다. 누군가에겐 일상이다. 네트워크가 불안정한 사람. 터치를 빨리 하는 사람. 화면을 자주 돌리는 사람. 백그라운드 전환이 잦은 사람. 그 사람들이 버그를 만나기 전에 내가 먼저 만난다. 개발자들은 정상 시나리오를 만든다. 나는 비정상 시나리오를 만든다. 둘 다 필요하다. 오늘 찾은 버그 15개. 배포 후 사용자가 만났을 버그 15개. 내가 막았다. 내일의 엣지 케이스 내일 테스트 계획 세웠다. 메모리 부족 상황 테스트. 앱 여러 개 켜놓고 우리 앱 실행. 백그라운드에서 죽는지 확인. 저장 공간 부족 상황. 파일 다운로드 시도. 에러 처리 되는지 확인. 시간대 변경 테스트. 해외 시간대로 바꾸고 날짜/시간 표시 확인. 언어 변경 테스트. 영어로 바꿨을 때 레이아웃 깨지는지 확인. 접근성 테스트. VoiceOver 켜고 스크린 리더로 사용 가능한지. 할 게 많다. 엣지 케이스는 끝이 없다. 그래도 좋다. 버그 찾을 때 짜릿하다. '이거 아무도 생각 못 했을 텐데' 싶은 버그 찾으면 이상하게 기분이 좋다. 나는 엣지 케이스 사냥꾼이다. 디테일에 숨은 버그를 찾는다. 그게 내 일이다.오늘도 버그 15개. 내일은 몇 개나 찾을까.