반응형
실용주의 프로그래머를 위한 단위테스트 with JUnit를 읽었습니다. 실용주의 서가에서 나온 책인데요, 데이비드 토머스와 앤드류 헌트가 실용주의 프로그래머의 실천편이라고 보시면 될 듯합니다. 테스트는 코드를 다 작성하고 나서 발견하지 못한 오류를 찾기 위해 나중에 작성하는 것이 아닌가라고 생각하시는 분이 꽤 되리라고 생각합니다. 시간과 공간 자원에 제약이 걸린 일반적인 프로젝트의 경우에는, 동작하는 코드를 만들기에 급급해서 테스트라는 부분을 소홀히 하는 경우도 드물지 않을 것입니다. 그리고 그때 테스트를 수행한다고 해도 그건 요구사항에 적합한지 확인하는 인수 테스트(acceptance test)이죠.

이 책은 단위테스트를 왜 도입해야 하는가에 대해 서론에서 매우 설득력 있게 설명하고 있습니다. 원천적으로 오류가 없는 소프트웨어란 매우 어렵습니다. 목적은 매 순간의 코드를 단위테스트를 통해 검증함으로써 나중에 일어날 수 있는, 즉 찾지 못한 오류가 누적됨으로써 발생하는 재앙을 막아보자는 데 있습니다. 이런 패턴적 문제 해결은 애자일 쪽과 통하는 면이 있습니다. 코드를 작성함으로써 부산물로 나오는 단위테스트 코드는, 그 코드를 후에 인수할 사람들에게는 좋은 문서이자, 참고자료, 나침반이 됩니다.

이 책에서는 JUnit으로 테스트를 작성하는 근본적인 부분부터, 테스트의 대상은 무엇인지, 모의 객체는 어떻게 사용하는지, 프로젝트에서는 테스트를 어떤 식으로 할 것인지 등에 대해 차근차근 다루고 있습니다. 재치있는 약자를 통해 쉽게 책의 내용을 숙지할 수 있도록 돕는 것도 책의 장점입니다. 이를 테면 Right-BICEPCORRECT가 있습니다.

사실 이 책을 고른 이유는, 책의 서문에서 비록 이 책이 예제는 Java를 사용하고 JUnit 프레임워크를 사용했지만 다른 60개가 넘는 언어에서 비슷한 테스트 프레임워크가 지원된다고 했기 때문입니다. c2.com에서 Testing Framework라는 문서를 통해 다양한 프레임워크가 있다는 것을 알 수 있습니다. 개인적으로 SmlUnit[각주:1]이라는 테스팅프레임워크를 다루어 보려고 하다가, 막막해서 JUnit에 대한 책이 나와 있으니 이 책을 우선 참고하는게 어떨까 하는 생각이었죠.

프로젝트에 단위테스트를 도입하여 꾸준한 피드백으로 잘 조직화된 코드를 작성한다면, 유지보수성이 높고 안정적인 결과물이 나오지 않을까 생각해 봅니다.
단위 테스트 (실용주의 프로그래머를 위한) 상세보기
데이비드 토머스 외 지음 | 인사이트 펴냄
소프트웨어 개발의 생산성을 증대하기 위한 기본 도구들을 다룬 '시작 도구 시리즈'의 두번째 책으로 JUnit를 이용한 단위테스트 방법을 소개한다. 이 책은 테스트를 통해 요구사항을 좀더 명확히 하고 질 높은 소프트 웨어를 개발하고자 하는 테스트 주도 개발에 중점을 두고, 자동화 테스트 기구인 JUnit을 이용하여 무엇을 어떻게 테스트할 것인지 구체적이고 실용적인 방법을 제안하고 있다.

  1. SML#, SML/NJ, MLton을 지원하는 Standard ML 버전 프레임워크. SML#-SMLUnit에서 JUnit의 이식된 버전임을 밝히고 있다. SML#의 도구로 포함되어 있다. SML#은 SML에서 C와의 한결같은 상호운용성, 레코드 다형성, 랭크1 다형성 등을 확장한 것이다. 도호쿠 대학 전기통신 연구소에서 일본 문부과학성 등의 후원을 받고 있다. [본문으로]
반응형
반응형
애자일 프랙티스를 읽었습니다. Practices of an Agile Developer의 제목 공모 이벤트에 참여만 했을 뿐인데 책을 받게 되어 기쁩니다. 책을 처음 펼치자 마자 맞닥뜨린 인용구가 인상적이었습니다. 책에서는 한 장이 시작할 때마다 그와 관련된 속담, 격언, 인용구 등으로 주제를 도입하고 있습니다. The Pragmatic Programmer(실용주의 프로그래머로 국내에서 번역되었죠.)의 공동저자 중 한 사람인 앤디 헌트와 Agile Developer의 설립자 벤캣 수브라마니암이 쓴 이 책은 말 그대로 적용 가능한 실천 지침들을 제공하고 있습니다.

1장에서는 우선 애자일 소프트웨어 개발에 대한 배경적 지식을 논합니다. 2장부터 8장까지 각 장의 서두에는 어떤 지침들이 나올 예정인지 간략히 소개되어 있습니다. 각 지침의 첫 부분에는 악마가 사람들이 피해야 할 나쁜 습관을 일러줍니다. 지침에 관련된 에피소드나 실례를 제시하여 이 지침이 왜 유용한지 거부감없이 느낄 수 있게 하며, 천사가 사람들이 가져야 할 좋은 습관을 일러 줍니다. 책 표지에 악마와 천사가 등장하는 것은, 독특한 캐릭터들이 지침의 설명 부분에 등장하기 때문으로 생각합니다. 그 후에는 "어떻게 느껴야 하는가?"라는 부분이 있습니다. 말 그대로 이런 느낌을 갖고 있다면, 바르게 가고 있다는 안내를 해 주기 위해 도입된 것으로 보입니다.

하지만 어떤 지침이든 지나치게 적용하거나, 느슨하게 적용하면 그 효과를 제대로 발휘하지 못할 수 있습니다. 이런 부분을 바로잡기 위해 "균형 유지하기"에서는 어떤 부분에 중점을 두어야 하고, 어느 정도가 적당한지 지적합니다.

에필로그를 읽다보니 전에 보았던 Ship It!을 개발 기반의 마련을 위한 Starter Kit으로 추천하더군요. 뒤에는 여러 참조 링크와 관련 문헌들이 소개되어 있고, 실용주의 프로그래머처럼 가이드라인 요약본이 뒷표지 앞에 붙어 있습니다.

최근에 IT 회사에 다니시는 분에게 이야기를 들을 기회가 있었습니다. 그 분이 의아해하셨던 것은, "왜 대학에서는 테스트를 가르치는 과목이 없느냐?"였습니다. 애자일의 인프라스트럭처에는 "유닛테스트"가 중요한 위치를 차지하고 있습니다. "테스트 주도 개발"이라는 움직임이 보이고, 국제 테스팅 컨퍼런스(2007년 10월 초에 서울 코엑스에서 열린다고 합니다.) 도 열리고 있으며, 수습 불가능한 스파게티 코드가 되는 일을 피하고 유지보수를 쉽게 하기 위해서라도 테스트의 중요성은 날로 커지고 있습니다. 그래서, 테스트에 대한 과목도 교과과정에 들어있으면 하는 바람이 생겼습니다.

애자일이라는 걸 머리로는 알고 있지만, 어떻게 실천해야 하는가에 대해 막막함을 느낀 분들도 있을거라 생각합니다. 이 책에서 시도하기 쉬운 지침을 선택하여 점진적으로 적용한다면, 개인과 팀에 긍정적인 변화가 생기지 않을까 생각해 봅니다.
애자일 프랙티스 상세보기
벤캣 수브라마니암 지음 | 인사이트 펴냄
애자일 소프트웨어 개발 전문서. 이 책은 45개의 애자일 프랙티스 사례를 통해 어떤 문제에프랙티스를 적용하고 맞추는 방법을 통해 애자일 소프트웨어를 익힐 수 있도록 구성했다. 프랙티스를 올바르게 적용했을 때 어떻게 느껴지는지, 과하게 적용하는 것과 성기게 적용하는 것 사이에서 균형을 맞추는 방법을 설명하고 코딩과 디버깅에 관한 내용도 함께 설명한다. 책 뒤편에는 애자일 프랙티스 자료에 관한 내용도 포함했다.
반응형

+ Recent posts