1990년대 초, 10살 때 첫 번째 프로그램을 작성했다. 코모도어 64를 위한 간단한 테스트 기반의 롤플레잉 게임으로 이 프로그램은 많은 GOTO문을 갖고 있었으며 중복 코드가 많았다. 그에게 이 프로그램은 상상하지 못한 소프트웨어의 가장 환상적인 부분이었으며 미래의 경력의 시작점이었다.
25년 후, 여전히 코드를 작성하고 있고 핵심 개발자로 남아 있다. 15년 이상의 경력으로, 그 동안 다양한 역할(개발자, 아키텍트, 프로젝트 관리자, 스크럼 마스터, 테스터, 애자일 코치)을 수행했다. 수행했던 모든 역할에서 지속 가능한 속도, 장인정신, 품질에 관심을 가졌고, 2005년 무렵에는 테스트 분야에 몰입했다. 어떤 의미에서 그의 프로젝트는 돈과 관련된 분야(은행과 게임산업)였기에 테스트에 대한 관심은 피할 수 없었다. 누군가에게 코드를 넘겨주기 전에 코드 품질을 보장하려면 더 많은 일을 할 수 있다고 느껴왔다.
현재 규모 구현 프로세스에 영향을 미칠 수 있는 역할을 찾고 있다. 또한 교육과 코칭을 개발 프로젝트에 결합하고, 콘퍼런스와 로컬 사용자 그룹 회의에서 개발자 테스팅과 품질보증의 기술적 관점 및 비기술적 관점을 공유하고 있다.
4년 전 내가 되고 싶었던, 그리고 독자들이 돼야 하는 이미지를 마음 속으로 명확하게 그리며 이 책을 쓰기 시작했다. 4년은 상당히 긴 기간이며 나는 아이디어와 일부 가정을 수정했다. 집필 중에 발생한 가장 큰 일은 테스트 분야의 다양한 작업에 대응하는 주제를 더 깊이 이해하게 되면서 이 책의 주제에 대해 고민할 것은 더 적어졌다는 것이다.
이러한 관찰과 누적된 경험을 기반으로 이 책의 프로젝트에 대한 몇 가지 목표를 설정했다.
■ 개발자들이 소프트웨어 테스팅의 기초사항을 쉽게 적용할 수 있도록 한다. 그러면 개발자들은 코드 출시에 대해 가장 적절한 검증의 종류와 수준을 선택할 수 있다. 많은 개발자들은 테스팅 관련 책이나 블로그를 읽지 않고 자신에게 다음과 같은 질문을 하지도 않는다. 언제 충분히 테스트됐는가? 얼마나 많은 테스트를 작성해야 하는가? 테스트가 검증해야 할 사항은 무엇인가? 이러한 질문들이 쉬운 결정사항이 되길 원한다.
■ 테스팅 사고방식과 테스트 기법의 사용이 소프트웨어 개발에 대한 일상을 얼마나 편리하게 만들어 주는지 보여준다.
■ 테스트 가능한 코드의 작성을 위한 충분히 좋은 단일 기법들에 대한 지식 체계(body of knowledge)를 만든다. 나는 이러한 작업이 간결하게 유지된다면 더 많이 이해시킬 수 있다는 사실을 알게 됐다. 하지만 수 천 페이지 책과 온라인 자료를 고생하며 읽는 데서 독자를 구할 수 있는 독자가 바라는 영역에 대한 지도를 제공하고 싶었다.