여러분이 한국어로 번역된 『How We Test Software at Microsoft』에 있는 이 글을 읽고 있다니 무척 놀랍습니다. 서울은 이미 세계적인 기술 중심지이고, 한국에서 소프트웨어와 기술의 발전은 계속해서 빠르게 진행될 것이라 생각합니다.
저의 첫 번째 업무는 한국어, 중국어, 일본어 버전 윈도우 95의 네트워크 컴포넌트 테스팅이었습니다(Bj와 저는 같은 장소에서 일했습니다). 한국 출신의 훌륭한 테스터와의 협업은 매우 즐거운 일이었고, 우리 작업이 한국어로 번역돼 출시되는 것은 경이로운 일이었습니다.
우리의 50년 테스팅 경험을 한국 독자와 공유할 수 있게 돼 무척 기쁩니다. 이 책에서 소개한 기법, 접근 방법, 사례는 마이크로소프트의 소프트웨어 테스팅 실무 중 일부입니다. 책을 통해 한국의 모든 독자가 실무에서 활용할 수 있는 조그만 아이디어를 발견할 수 있기 바랍니다. 한국에서 소프트웨어의 중요성이 커지고 있으므로, 독자 여러분 모두가 이 책에서 미래의 소프트웨어를 다듬고 개선할 수 있는 무언가를 발견하길 바랍니다. --- '앨런 페이지-저자 서문' 중에서
이 프로젝트를 처음 시작했을 때는 책이 집필돼 출판되기만을 바랬습니다. 그런데 한국어로도 번역된다니 영광입니다. 전 세계적으로 소프트웨어는 중요한 위치를 차지하고 있으며, 테스팅은 이런 세계 소프트웨어 산업 생태계의 핵심에 위치한다고 생각합니다. --- '켄 존스톤-저자 서문' 중에서
저는 1994년에 윈도우 95 국제화 테스트 팀에 소프트웨어 테스트 엔지니어로 합류하기 위해 일본에서 시애틀로 전근했습니다. 우리의 목표는 영어판 윈도우와 동아시아판 윈도우 버전 간의 격차를 줄이는 것이었고, 한국, 일본, 중국의 팀들과 즐겁게 일했습니다. 그 당시, 테스팅의 초점은 가능한 한 많은 버그를 발견하는 데 있었고, 많은 개발자가 2바이트 인코딩을 이해하지 못했기 때문에 파싱 에러와 같은 버그 리포팅은 어려운 일이 아니었습니다. 하지만 기술은 변하고, 개발자도 문제점들을 예방하는 방법을 알고 적용하게 돼 우리는 테스팅 접근 방법을 수정해야 했습니다. 저는 소프트웨어 테스팅 관련 책을 읽기 시작했습니다. 버그를 찾는 테스팅 프로세스를 이해했지만 소프트웨어 테스팅의 기술적 원리는 이해하지 못하고 있었고, 이런 원리를 업무에 적용해 문제를 예방하는 데까지는 이르지 못했습니다.
현재 저는 테스트 아키텍트로서 마이크로소프트에서 새로운 테스터에게 수많은 제품을 테스트하는 데 사용되는 기술적 원리와 그 원리를 실무에 적용하는 법을 가르치고 있습니다. 기술적인 원리가 실무에 적용되어 제품의 품질을 향상시키고, 제품에 포함될 수 있는 문제를 예방하며, 전체 비용을 절감시킵니다. 이와 같이 테스팅의 기술적인 원리와 이를 실무에 적용하는 방법을 가르치고 있지만 저도 계속해서 테스팅을 공부하는 중입니다. 제품의 품질을 향상시키기 위해서는 끊임없이 배워야 한다고 생각합니다. 고객들이 소프트웨어를 접하는 방법은 급격하게 변화하고 있으므로 테스팅 접근 방법을 계속 배워 적용해야 합니다. 이 책은 테스팅 관련 모든 해결책을 알려주지는 않습니다. 그러나 앨런과 켄, 그리고 제가 수년간 다양한 제품을 테스팅하면서 배웠던 경험을 담고 있습니다. 이 책은 어떤 독자에게는 새로운 지식을 제공하고, 이미 주제를 알고 있는 독자에게는 새로운 시각을 제시합니다. 우리의 책이 한국어로 번역돼 기쁘고, 한국의 테스팅 입문자나 소프트웨어 테스팅 경력자가 이 책을 통해 소프트웨어 테스터 역할 수행에 도움이 될 수 있는 지식을 많이 얻었으면 합니다. --- '비제이 롤리슨-저자서문' 중에서
2007년 늦가을 아침, 관리자 켄 존스톤이 내게 "꼭 책을 한 권 써보세요"라고 말을 건넸다.
그는 테스트 컨퍼런스에서 발표를 마치고 돌아왔는데, 청중의 반응에 몹시 흥분한 상태였다(당시 제목이 『How we test software at Microsoft』는 아니었다). 켄은 발표를 좋아했지만 책의 저자는 나여야 한다고 생각한 것 같다.
나는 농담으로 "좋죠, 안 될 거 뭐 있나요?"라고 말했다. 책은 마이크로소프트에서 사용하는 일반적인 테스트 접근 방법에 대한 피상적 지식과 소프트웨어 테스팅 과정 교육 내용을 담을 수 있을 것이라고 말했다. 흥미는 있었지만 테스팅을 다룬 책은 이미 수도 없이 많았고, 내가 읽은 것도 수십 권에 달하며, 매우 훌륭한 책도 몇 권 있었다. 지금 이 시점에서 테스팅 책을 또 낸다면 테스팅 커뮤니티에 어떤 가치가 있을까?
켄에게 무의미함을 얘기하려고 할 때 중요한 점을 깨달았다. 마이크로소프트에는 세계 최고의 소프트웨어 테스트 교육 과정이 있다. 교육 과정의 교재와 구성은 좋지만 그게 전부는 아니다. 학생들에게 인?을 남기고 영향을 주는 건 과정 전반에서 소개되는 강사의 일화, 성공 사례, 소소한 얘기라고 생각했다. 마이크로소프트가 테스트 접근 방법을 어떻게 사용하는지에 대한 정보와 사례를 담으면 책이 더욱 재미있어질 거라고 생각했다. 교육 과정에서 가르쳤던 내용을 뛰어넘어 테스터에게 재미있을 테스트 개념과 사례를 생각하기 시작했다. 내가 좋아하는 프로그래밍 책은 기술적인 내용은 물론 다양한 사례로 가득 차 있음을 깨달았다.
곧바로 나는 기획안을 쓰기 시작했다. 윤곽이 드러나기 시작했고, 4가지 주제를 갖춘 책의 형태가 만들어졌다. 1부는 마이크로소프트의 사람과 엔지니어링에 대해 일반적인 접근 방법을 사용해 합리적으로 서술했다. 2부와 3부는 마이크로소프트에서 테스팅하는 방법과 사용 툴에 초점을 맞췄고, 4부는 마이크로소프트 내부의 테스팅 미래를 기술했다. 마이크로소프트 출판사에 저서 기획안을 보낸 나는 책의 가능성에 흥분한 상태였지만 한편으론 출판사가 내 제안을 거절하면 그냥 포기하려는 생각도 했다. 다행히 우려한 일은 일어나지 않았고, 얼마 후 나는 컴퓨터 앞에 앉아 첫 문장을 어떻게 시작할까 고민하고 있었다.
시작할 때부터 켄이 처음 2개 장을 써주기를 바랬다. 켄은 마이크로소프트의 관리자로 수년 동안 일했으며, 인사 관련 부문의 전문가였다. 제안서를 제출할 때 켄은 우리 그룹에서 오피스 온라인 그룹 관리자로 자리를 옮겼다. 얼마 지나지 않아 켄은 소프트웨어 플러스 서비스를 어떻게 테스트하는지에 대한 장도 써야 했다. 켄은 웹서비스를 어떻게 테스트하는지 정의하는 회사의 리더가 됐으므로 직접 14장 '소프트웨어 플러스 서비스 테스팅'을 꼭 집필해야 했다. 나중에 마이크로소프트에서 가장 유명한 테스터인 비제이 롤리슨에게 기능적, 구조적 테스트 기법 부분을 써달라고 부탁했다. 비제이 롤리슨은 핵심 소프트웨어 테스팅 과정을 설계했고, 그 누구보다도 테스팅 분야를 잘 알고 있으며, 나보다 테스팅 관련 서적을 많이 읽은 유일한 사람이다. 켄과 비제이, 나 이렇게 세 명으로 구성한 저자진은 꽤 괜찮은 편이었다. 우리가 작업한 결과물은 저마다 달랐고, 마무리 시점에는 마이크로소프트 테스터의 다양함을 반영하는 자료와 저작 스타일을 혼합해야 했다. 비제이는 교수이고, 켄은 역사학자나 이야기꾼이 되려 하고, 나는 정보를 모아서 사실만을 기술한다고 농담을 하곤 했다. 몇 장을 쓰고 나서 우리는 서로의 작업을 편집하고 조언을 했고, 그 결과 책 전체가 하나의 스타일로 모아졌다.
책을 써야 한다는 숙제가 앞에 놓여있을 때 삶의 모든 작은 방해물은 점점 커진다. 이 책을 시작하고 나서 켄은 이전 직무인 마이크로소프트 테스트 엑셀런스 팀의 감독직을 맡게 됐다. 책을 쓰기 시작해서 새로운 직무에 도전했는지는 나도 모르겠다. 그렇지만 그의 도전으로 이 책에 많은 도움이 된 마이크로소프트의 테스트 리더십을 좀 더 깊이 알게 됐다.
이 책을 쓰면서 가장 염려스러웠던 점은 마이크로소프트 테스팅의 많은 부분을 모두 다루지는 못했다는 점이다. 마이크로소프트에는 9,000명 이상의 테스터가 있다. 이 책에서 다룬 테스트 접근 방법은 마이크로소프트의 테스터가 가장 많이 사용하는 방법이지만 미처 다루지 않은 다른 훌륭한 방법도 마이크로소프트에는 무척 많다. 그 중에는 이 책에서 다룬 주제를 변형한 방법도 있다. 우리가 가장 중요하다고 생각하는 테스팅에 관련해 가능한 한 많은 개념을 기술하려고 노력했다. 사실 이 책의 제목이 약간 두렵긴 하다. 『소프트웨어 테스팅, 마이크로소프트에선 이렇게 한다』는 마이크로소프트의 모든 테스터가 작업하는 내용을 이 책에 담았음을 의미하지만 사실 그렇지는 않다. 테스터도 무척 많고, 포트폴리오도 많으므로 마이크로소프트의 모든 테스터가 하는 테스팅을 기술할 수는 없다. 그래서 우리는 절충안을 찾았다. 이 책은 마이크로소프트 테스터가 가장 일반적으로 사용하는 테스팅 작업, 툴, 기법 등을 기술한다. 모든 팀이 책에 나오는 모든 작업을 하지는 않지만 대부분은 이렇게 작업한다. 이 책에 쓰기 위해 고른 내용은 모두 마이크로소프트 제품 테스팅에 성공적으로 적용된 것이고, 이 책의 주제는 우리가 알고 있는 작업의 일부분이다.
마지막으로 책 집필은 끝냈지만 테스터로서 더 잘할 수 있다는 것을 알고 있다. 아직 부족하지만 출판 시점이 다가왔고, 우리는 고객 지원도 열심히 할 계획이다. 책 내용 중 무엇이든 저자와 토론하고 싶다면 웹사이트(www.hwtsam.com)를 방문하라. 집필진은 독자의 의견을 듣고 싶다. --- '저자 서문' 중에서
실무에서 확실히 입증된 소프트웨어 테스팅 기법 및 방법을 알고 현재의 테스팅 업무에 활용하고자 한다면 지금 최적의 책을 보고 있다. 역자들도 번역 후 업무에 이 책의 내용을 참고하며 "업무 활용도 높은 책을 번역했다"면서 뿌듯해 하고 있다. 세계 최대 규모의 소프트웨어 회사가 전사적으로 활용하는 테스팅 방법, 자동화 툴, 테스팅 프로세스로 인정받으려면 수많은 부서에서 오랫동안 적용해 효과를 입증해야 한다. 이렇게 입증돼 손에 잡히듯 적용할 수 있는 내용이 이 책을 가득 채우고 있다.
개발자 1명에 테스터 1~2명, '테스팅 엑설런스 센터(Testing Center for Excellence)' 등으로 개발 및 테스팅 분야에서 잘 알려진 마이크로소프트에서 어떻게 테스팅하는지 알려면 해외 컨퍼런스에 고가의 비용을 지불하고 참석했어야 했다. 그러고도 짧은 시간 발표를 듣고 발표가 끝난 후 못내 궁금한 사항을 잘 안되는 영어로 묻고 이해하느라 고생했던 생각이 아련하다. 이 책의 원서인 『How We Test Software at Microsoft』가 나오기 전까지는 말이다. 오랫동안 궁금했던 세계 최대 소프트웨어 기업의 테스팅 프랙티스를 전부는 아니지만 구체적인 단면을 책으로 볼 수 있게 되어 소프트웨어 테스팅을 업으로 살아가는 한 사람으로서 기쁘게 생각한다.
특정한 회사에서 자사 이름으로 자사의 테스팅 프랙티스 책을 쓴다는 것이 매우 당돌하다는 생각을 해본다. 어떤 독자가 특정 기업을 홍보하는 성격이 강한 책을 사서 볼 것인가? 마이크로소프트이니 이런 책을 쓰는 것이 가능하고, 나조차도 같은 이유로 다시는 번역서를 쓰지 않겠다는 결심을 깨고 이 책을 번역하겠다고 나섰다.
국내에 이런 책을 쓸 수 있는 회사가 없음이 아쉽다. 그런 한국 회사가 있어 그 기업 내 테스팅 전문가가 책을 쓰고 그 책을 영문으로 번역하는 일을 했었다면 더 보람찼을 텐데… 현재 국내 소프트웨어 테스팅 수준은 전반적으로 낮고 그 중요성에 대한 인식도 아직은 부족하다. 소프트웨어 테스팅이 전체 개발 계획에서 고려되지 않는 경우도 존재하고, 고려되어도 개발에 밀려 허겁지겁 적당히 야근해가면서 과거의 습성대로 수행하기도 다반사다. 어느 정도 테스팅 시간이 확보되고 여력이 되는 회사도 많이 고민하고 배워가면서 테스팅을 지적이고 현명하게 수행하고 체계화하는 노력에는 인색하다. 완성도 높은 자사 고유의 테스팅 방식과 기술을 개발해 수준 높은 테스팅을 수행하고 있다기보다는 선진국을 허겁지겁 쫓아가고 있는 수준에 머물고 있다.
어차피 완벽한 테스팅은 존재하지 않는다. 테스팅에는 만병통치약이 있다기보다는 기본적인 이론으로 무장하고 경험으로 보완된 어느 정도 탄탄한 업계의 모범 사례(Best Practice)만이 존재할 뿐이다. 이 책에서 다루는 테스팅 관련 내용도 같은 맥락에 있다. 이는 쉬운 것 같지만 실제로는 무척 도전적이다. 그렇다고 그렇게 어려운 것만도 아니다. 테스팅에 참여하는 개발 관련자의 의지와 경영층의 적절한 지원이 뒷받침되면 해볼 만하다.
마이크로소프트처럼 경영층이 테스팅의 중요성을 인식하고 어느 정도는 충분한 리소스가 제공되는 환경에서 테스팅이 일정 수준 이상 완성도 높게 진행되는 것은 당연할 수 있다. 우리에게 이런 지원과 환경이 갖춰진 후 테스팅하라고 한다면 오히려 마이크로소프트보다 더 잘할 수 있다고 생각한다. 부럽지만 특정 회사의 지원과 투자 및 일하는 환경이 좋을 뿐이지 우리라고 못할 대단한 것은 아니라고 본다. 이 책에는 이런 지원과 환경이 갖춰져 '실제로 활용'되고 있는 '입증된' 프랙티스가 많다. 그런 과정에서 오랫동안 축적하고 경험해온 그들의 테스팅에 대한 인사이트를 독자 여러분의 것으로 만들었으면 한다.
테스팅에 대한 인식이 열악한 대한민국에서 테스팅을 전업으로 하는 과정은 어려움 투성이다. 또한 개발하면서 테스팅하는 개발자가 체계적인 테스팅을 통해 품질을 확보하는 것은 더더욱 쉽지 않다. 이 책의 내용에서 보는 바와 같이 표준적인 테스팅 이론을 적절히 활용하는 수준이 현재의 세계적인 수준이다. 결국 여러분도 마음 '독하게' 먹고, 열악한 상황에서도 국제 및 업계 표준을 적절히 공부하고 이를 적극적이고 지속적으로 업무에 활용한다면 동일한 수준에 오를 수 있다고 본다. 어렵게 했기 때문에 오히려 더 뼈가 되고 살이 될 수 있다.
이 책은 기본적인 테스팅 이론을 실무에 적절히 적용하고 있는 사례를 담고 있다. 또한 적용하는 과정에서 체득한 다각적인 활동 경험을 진솔하게 기록한 부분이 많아 마치 현장에서 테스팅에 참여했다는 착각을 일으키기도 한다. 예를 들어, 특정한 테스트 설계 기법을 어떻게 적용했고 그 과정에서 어떤 어려움이 있었는지, 자동화 툴을 어떻게 개발해 도입했고 실제적으로 어떤 효과를 봐서 전사에 어떤 방식으로 확산했는지 등 다양한 실 사례를 해당 프로젝트를 진행한 다양한 매니저나 담당자가 에피소드 형태로 서술해 경험을 공유한다.
이 책을 통해 세계 최고의 모범 사례 테스팅을 간접 경험하기 바란다. 그리고 이를 소화하고 한 단계 발전시켜 자사의 테스팅 체계를 구축하고 활용한다면 단기간에 세계적 수준의 테스팅을 수행할 수 있다고 본다(물론, 쉽지는 않을 테니 강한 의지와 적극적인 노력이 반드시 필요하다). 마침 국내에서 ISO 소프트웨어 테스팅 표준을 비롯한 안정화된 높은 수준의 테스팅 프로세스 및 프랙티스가 빠른 속도로 확산되고 있어 우리가 테스팅을 잘할 수 있는 환경이 구축되고 있다. 중소기업을 대상으로는 정부의 테스팅 관련 교육 지원과 컨설팅 제공도 줄을 잇고 있다. 이런 기회를 잘 활용해 해외 테스팅 전문가 들이 존중하고 벤치마킹하는 테스팅 분야의 전문가 또는 개발 과정에서 수준 높게 테스팅하는 차별화된 개발 전문가가 많이 탄생하기 바란다.
--- '역자 서문' 중에서