디버깅과 테스팅의 교본『Debug It! 실용주의 디버깅』
Jun 21, 2010소프트웨어 개발자가 꼭 알아야 할 디버깅의 정석
폴 부처(Paul Butcher) 지음 | 박일 옮김
2010년 6월 29일 출간예정 | 268쪽 | 25,000원
YES24, 교보문고, 인터파크, 강컴, 알라딘
1. 잘하면 재미있지만, 잘못하면 짜증난다.
2. 힘들다.
3. 하면 할수록 늘지만, 너무 자주 하는 건 싫다.
4. 밤에 할 때가 많다.
5. 대놓고 얘기하긴 부끄럽다(얘기할 때는 몇 배 부풀린다).
6. 다들 궁금해한다.
7. 책이 별로 없다.
무슨 이야기일까요? 아무래도 좀 난~한 이야기이긴 하지만, 미성년자가 저희 책을 사볼 일은 거의 드물(?) 테므로, 밝히자면, 이 책『Debug It! 실용주의 디버깅』의 역자 박일님이 자신의 블로그 "박피디의 게임 아키텍트 블로그'에 올렸던 '디버깅과 섹스의 공통점'이라는 블로그 글에서 발췌한 내용입니다. 7가지만 추렸지만, 블로그 글을 읽어보시면 역자분이 밝힌 20가지 외에도 수많은 분들이 공통점을 올려주셨네요. 재미있는 예제 글이었습니다. 하지만 실전에선 후자는 누가 알려주지 않아도 몸으로 익히면 그만이고 뭔가를 추구하는 데 어려움이 없는 반면, 디버깅은 개발자들을 졸졸 쫓아다니는 족쇄같은 것으로 뿌리치기도 힘들고 제대로 알기도 어려운 것이 아닐가 싶습니다.
소프트웨어 개발 분야가 발달하고 번창함에 따라 각종 기술과 개발방법론에 대한 책은 엄청나게 쏟아져 나오고 있습니다. 그러나 그 중에서도 유일하게, 이론으로 정립된 서적이나 문헌이 드문 분야가 디버깅 분야가 아닐까 싶습니다. 최근 들어 테스팅 관련 서적이 드물지 않게 쏟아져 나오고 있어서 이에 대한 갈증을 메워주는 역할을 합니다. 그리고 디버깅 관련서적도 심심치않게 보이는 건 사실입니다.
저희 에이콘에서만도 "리눅스 디버깅과 성능 튜닝", "실전 윈도우 디버깅", "메모리 분석과 활용 제1권", "WinDbg로 쉽게 배우는 Windows Debugging" 등 수 권의 디버깅 관련 서적을 출간했습니다. 도구에 관한 설명이나 실제 코드 예제 등을 들어가며 설명하기에 실전에서 활용하기에 충분한 책입니다. 그러나 제목에서 알 수 있듯이 리눅스나 윈도우 등 특정 플랫폼에서 적용가능한 책인 경우가 많아 전체적인 개념을 익히기에는 뭔가 아쉬운 점이 있었습니다.
이 책 『Debug It! 실용주의 디버깅』은 아무도 속시원히 알려주지 않았고, 개발자들을 여간 괴롭히지 않았던, 이론을 정립하기도 실전에서 제대로 활용하기도 너무 힘들었던 디버깅에 관한 모든 것을 알려줍니다.
1부. 문제의 핵심, 2부. 큰그림, 3부. 디버깅 비급 세 부분으로 나뉜 이 책이 돋보일 수밖에 없는 이유는 이 책의 세부 내용을 구성한 방식에 있습니다.
이 책에서 저자 폴 부처는 난해하고도 어려운 갖가지 디버깅 이론과 실제, 그 철학을 설명하는 데 있어 실전적인 방법을 차용합니다. 우선 저자를 비롯한 개발자들이 현장에서 부딪힌 갖가지 수많은 사례들을 보여줍니다.
일례로 두 가지를 들려드릴까요. 프린터 디바이스 드라이버를 개발한 뒤 출력물에 이상한 가로줄이 생기는 버그를 테스팅 팀에게서 신고 받은 개발자 데이브의 일화. 자신의 사무실에서 아무리 프린트를 해봐도 이상한 점을 발견할 수가 없었고, 테스트 환경과 개발 환경에도 별 차이점이 없습니다. 결국 "사무실 위층에 귀신이 살고 있다"라고밖에 주장할 수 없었지요. 그러나 결국 면밀한 조사 끝에 개발사 사무실 전기 배선에 문제가 있었음을 발견합니다. 전력 문제로도 이런 버그가 발생할 수 있음을 알려주는 재미있는 일화지요.
또 하나의 일화. 마이크로소프트 사 인턴으로 취업해 엄청난 삽질을 한 한 개발자의 이야기도 있습니다. CodeView라는 디버거 팀에서 일을 하며 당시 출시전인 C 컴파일러(마이크로소프트 C/C++ 7.0)의 버그 탐색 과정에 들어간 혈기 넘친 젊은 개발자. 왕성한 의욕으로 몇 천 줄이 넘는 소스파일의 전처리 결과에 대한 버그 리포트를 올립니다. 하지만 일주일 지나 엄청난 노력을 기울인 그의 버그 리포트는 중복 판정을 받게 됩니다. 버그 리포트를 훑어보는 일이 얼마나 중요한지 그제서야 알게 되죠.
이처럼 디버깅이란, 우리가 지금까지 알고 있듯이, 너무 멀리 있지도 않으며 아주 어려운 것도 아닙니다. 수많은 변수가 있을 수 있으며 '등잔 밑이 어둡다'는 말처럼 주변의 사소한 것들에 신경을 쓰면 쉽게 찾을 수 있는 것도 많습니다. 이를 위해 저자는 독자들이 흥미와 호기심을 자아낼 수많은 일화와 사례, 그리고 '조(Joe)란느 개발자의 질문'을 통해 누구나 궁금해왔던 버그에 관한 질문을 재미있게 답해줍니다. 또한 두 줄짜리 핵심 요약을 통해 해당 단락과 절을 요약해 디버깅의 핵심을 알려줍니다.
<조의 질문> 몇 가지
1. 코드에 로그를 남겨놔야 할까요?
2. 비결정적 버그가 왜 문제가 되나요?
3. 일일노트가 디버깅에 어떤 도움이 될까요?
4. ‘땜질 코딩’도 괜찮나요?
5. 꼭 컴퓨터로 버그를 추적해야 할까요?
6. 병목이 없다면 어떻게 하죠?
7. 어떻게 하면 경고를 전부 없앨 수 있을까요? ...... and much more
이처럼 여러분이 궁금해하셨던 내용이 이 책에 모두 담겨있습니다.
<핵심 요약> 몇 가지
1. 디버깅은 반복 과정이다.
2. 소프트웨어의 작동에 영향을 미칠 수 있는 것이라면 무엇이든 소프트웨어의 환경이 될 수 있다.
3. 많은 실험을 빠르게 해보는 게 좋다.
4. 동시에 여러 개를 변경하면 잘못된 결론에 이를 수 있다.
5. 뭐든지 우리가 이해하지 못하는 부분은 잠재적인 버그다.
6. 디버깅은 순간이지만 테스트는 남는다.
7. 고쳤을 때 아무런 효과가 없다면 원했던 부분을 고친 게 아니다.
8. 깨끗한 소스에서 시작한다. ...... and much more
그야말로 재미와 얻을거리의 관점에서 저희 출판사의 '조엘 온 소프트웨어'와 인사이트에서 출간한 '실용주의 프로그래밍'에 버금가는 디버깅의 완전 교본이라고 할 수 있습니다.
고급 소프트웨어 엔지니어로 거듭나기 위해 꼭 필요하면서도 간과하기 쉬운 디버깅 기술. 개발 플랫폼에 무관하게 전문 소프트웨어 개발자가 디버깅에 대해 알아야 할 모든 이론과 지식, 실전 경험을 망라해둔 디버깅의 정석. 저자가 쌓아온 노하우와 디버깅 철학을 이 책에 모두 공개한다!
『xUnit 테스트 패턴』의 번역을 마칠 즈음인 어느 날, 호기 있게 이 책의 출간을 적극 권유해주신 박일님의 이 책에 대한 애정은 매우 깊었습니다. 디버깅 서적 시장이 협소함에도 불구하고, 모든 개발자의 필독서로서 우리 땅에서 반드시 출간해야 할 책이라고 일갈하시는 역자님의 열정에 저희도 설득될 수밖에 없었구요. 번역 출간을 앞둔 지금, 박일님의 주장은 한 치도 어긋남이 없을 것이라 믿습니다.
리눅스든 윈도우든 어떤 플랫폼이든 상관없이 모든 소프트웨어 개발자가 꼭 읽으시고, 자신의 내공을 업그레이드하기에 2% 부족했던 그 간극을 메우실 훌륭한 책으로 자리매김하게 되길 바랍니다.
이 책은 지금 YES24, 교보문고, 인터파크, 강컴, 알라딘에서 예약판매 중입니다.
크리에이티브 커먼즈 라이센스 에이콘출판사에 의해 창작된 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
박일님이 블로그에 얘기하시더니
나오는군요 ^^
사실 Pragmatic에서 이런 책이 나온 줄
모르고 있었다가 이번에야 알게 되었네요.
꼭 한번 읽어보겠습니다!
레몬에이드님, 고맙습니다. 다음 주면 나와요. 모두 정독, 필독하시길! ^^
또 좋은 책이 나왔네요~
축하~!!!! -_-)b
박일님께서 번역하셨다니 믿고 사야겠습니다!!
바로 예매 ㄱㄱ~