1,000개의 오류, 구글 시트 하나, 그리고 다시는 되돌릴 수 없는 5시간
모든 버그에는 이야기가 있습니다. 대부분은 "내 컴퓨터에서는 잘 되는데"라는 문구로 시작하죠.
우리는 리드 생성(lead generation) 기업을 위한 데이터 가져오기 기능을 테스트하고 있었습니다. 기능은 단순해 보였습니다. 가져오기 버튼을 클릭하고, 스프레드시트를 업로드하면 시스템이 연락처를 불러오는 방식이었죠. 모두가 잘 작동할 것이라고 생각했습니다.
그 가정이 바로 함정입니다.
테스터는 그 가정을 깨뜨리기 위해 존재합니다. '해피 패스(happy path)'는 언제나 당신에게 거짓말을 합니다.
깨끗한 엑셀 파일을 사용했다면 가져오기는 성공했을 것입니다. 우리는 점심을 먹으러 갈 수도 있었고, 기능을 출시할 수도 있었겠죠. 하지만 고객은 월요일 아침 운영 환경(production)에서 그 버그를 발견했을 것입니다.
문제는 구글 시트였습니다.
실제 사용자들은 깨끗한 엑셀 파일을 사용하지 않습니다. 그들은 엉망진창인 구글 시트를 사용합니다. 그리고 시스템이 자신들의 혼돈을 처리해주길 기대하죠.
구글 시트 데이터를 업로드했을 때, 시스템은 실패했습니다. 1,000개가 넘는 오류가 발생했습니다. 화면은 오류로 가득 찼습니다. 단지 소스 형식이 바뀌었다는 이유만으로, 동일한 버튼과 동일한 데이터 유형이 시스템의 완전한 붕괴를 초래했습니다.
우리는 더 많은 테스트를 위해 다시 엑셀로 돌아갔습니다. 유효한 행과 유효하지 않은 행을 섞어서 시도해 보았습니다. 시스템은 이를 잘 처리했습니다. 잘못된 행은 건너뛰고 다음으로 넘어갔죠.
그러고 나서 우리는 실제 세상의 혼돈을 시도했습니다. 수백 개의 행이 담긴 대량 파일을 업로드했습니다. 대부분은 쓰레기 데이터였고, 제대로 된 것은 몇 개뿐이었습니다.
시스템은 완전히 망가졌습니다. 검증 로직은 몇 개의 잘못된 행에 대해서는 작동했지만, 산더미처럼 쌓인 잘못된 데이터 앞에서는 무너지고 말았습니다.
우리는 근본 원인을 찾는 데 5시간을 보냈습니다. 화면을 뚫어지게 쳐다보고, 테스트를 다시 실행하고, 파일과 브라우저, 그리고 커피를 탓하며 시간을 보냈습니다.
그 5시간은 저렴한 대가였습니다. 그렇지 않았다면 고객이 오후 시간을 허비하고 우리 제품에 대한 신뢰를 잃었을 것입니다. 테스트 단계의 버그는 시간으로 비용을 지불하지만, 운영 단계의 버그는 고객으로 비용을 지불합니다.
저는 언제든 5시간을 선택하겠습니다.
훌륭한 테스터는 기능이 작동하는지 묻지 않습니다. 훌륭한 테스터는 어떻게 하면 기능을 망가뜨릴 수 있을지를 묻습니다.
개발자처럼 생각하는 것을 멈추십시오. 대신 다음과 같은 사람들의 관점에서 생각하기 시작하십시오.
- 잘못된 파일 형식을 업로드하는 게으른 사용자.
- 병합된 셀과 빈 행이 가득한 혼돈의 사용자.
- 깨끗한 데이터 10개 대신 4,000개의 지저분한 레코드를 가진 대량 사용자.
- 하지 말아야 할 행동을 정확히 해내는 트러블메이커.
소프트웨어는 예상치 못한 입력값에서 망가집니다.
가장 '단순한' 기능이 종종 가장 위험합니다. 가져오기 버튼, 검색창, 문의 양식은 무해해 보이지만, 그렇지 않습니다.
기능이 해피 패스를 통과했다고 해서 다음으로 넘어가지 마십시오. "상상할 수 있는 최악의 파일을 업로드한다면 어떻게 될까?"라고 묻는 사람이 되십시오.
그러고 나서 직접 해보십시오.
Optional learning community: https://t.me/GyaanSetuAi
