# [책] '탐험적 테스팅 '를 읽고
(ref: http://www.yes24.com/Product/Goods/14829054 (opens new window))
일하다 보면 확실히 경험이 많으신 분들의 작업분을 보며 "우와. 이런 부분까지 고려하다니.."라는 감탄을 할 때가 종종 있다. 여기서 경험이 많다는 경력이 많다 와는 다르다고 생각한다. 물론 많은 경험을 하기 위해서는 오랜 시간, 그리고 경력이 쌓이기 마련이긴 하지만 동일한 시간 안에서도 더 다양하고 깊이 경험을 할 수 있는 방법은 있다고 생각한다. 이 책은 산전수전 겪어본 앞 선 이가 건네주는 "이상한 삽질은 이제 그만... 여러 번 해보니까 삽질 다 똑같더라. 어떻게 알았냐고요? 저도 알고 싶지 않았어요" 같은 책이다. 삽질은 분명 좋은 개발자가 되는데 좋은 토양분 임은 분명하지만, 꼭 직접 똥을 싸서 만들지 않아도 잘 만들어진 영양제 사서 써도 된다.
이 책은 소프트웨어 개발에서 고려해야 하는 다양한 케이스들을 어떻게 탐험할 수 있는지 그 방법을 알려주고 있다. 사실 읽다 보면 일명 짬 좀 찬 업계 사람이라면, "당연한 거 아닌가." 라는 생각이 들며 새롭게 다가오는 것이 없을지도 모른다.
예를 들어, 유저는 항상 우리가 기대한 행동으로만 움직여 주지 않는다는 것, 그리고 우리가 모든 케이스들을 다 대응하는 것이 어려운 것은 이미 다들 잘 알 것이다.
- "로그인 중" 페이지를 북마크하고 있다가 나중에 들어올 수 있다는 것 -> url의 파라미터가 내가 의도한대로만 들어오는 것은 아님.
- 알파벳이나 숫자를 써달라고 해도 특수문자 넣기. -> 필드의 타입이 중요한 경우 validation이 필요.
- SQL Injection 공격 해보기 (범인은 개발자다!!!)
- 그리고 알 수 없는 원인들로 인한 버그들 - 유명한 일화 로는 바닐라 아이스크림에 알레르기가 있는 자동차 (opens new window)
이러한 것들은 결국 경험이 빛을 발하는 분야 일텐데, 이 책에서는 이러한 상상력을 기를 수 있는 방법들을 소개해 주고 있다. 그야말로 방법일 뿐이니 자신이 하고 있는 프로젝트 혹은 프러덕트에 알맞게 적용하는 것은 독자의 몫이다.
다양한 방법을 소개하고 있는데 그 하나의 예시를 소개하자면, 시스템의 주요 상태와 이벤트를 정리하여 어떠한 케이스들이 생길 수 있는지 탐험해 보는 방법이 있다.
내가 해야하나는 작업에서 어떠한 주요 상태가 있고 어떠한 이벤트로 서로 연결되고 내가 고려해야하는 케이스가 어디까지 인지 생각해 볼 수 있다. 테스트 케이스 짤 때도 도움이 되는 방법일 것 같다.
소프트웨어 업계 주니어에게는 다음 챕터들을 추천한다.
- 3장 세심하게 관찰하기
- 4장 눈여겨볼 변수 찾아내기
- 5장 결과를 가지고 판단하기
- 13장 처음부터 끝까지 탐험 적용하기
- 부록2 테스트 휴리스틱 치트 시트
어떤식으로 케이스들을 고려할 수 있는지에 대한 방법을 알려준다.
새롭게 팀/프로젝트에 합류 혹은 인수인계 받는 사람에게는 다음 챕터들을 추천한다.
- 11장 기존 시스템 탐험하기
- 12장 요구 사항 탐험하기
- 13장 처음부터 끝까지 탐험 적용하기
덜 헤매이며 시스템을 소화할 수 있는 방법을 되새겨 볼 수 있을 것이다.
소개되는 내용이 시나리오 QA에 더 초점이 맞춰져 있고 (테스트 코드가 아니고) 일을 오래 한 분들이라면 따로 언급하지 않아도 당연히 챙기는 부분들이 더 많을 것이다. 하지만 항상 익숙한 곳에서 예상치 못한 이슈가 터지는 법.
책에서 소개되는 Awareness test (opens new window) 영상을 보면 무슨 말인지 이해가 될 것이다.
끝으로 작가가 독려하는 방법은 이렇게 알게 된 것을 잘 정리하고, 보고하고, 공유하라는 것이다. 결국 개발자들이 계속 테크 컨퍼런스에서 발표하고 블로그를 쓰는 이유도 이것이 아닐까? 나도 책을 읽으며 내가 마주쳤던 운영 이슈들이 몇 가지가 주마등처럼 스쳐 지나갔다. 나중에 알고 보면 별 것 아니지만 당시 때는 그저 물음표 속에서 구글링도 잘 안되었던 케이스들. 앞으로는 잘 정리 해 두어야지. 내 다음 사람은 부디 거인의 어깨에서 더 멀리 더 큰 일을 할 수 있기를.