[책] 실용주의 프로그래머를 위한 단위테스트 with JUnit - 데이비드 토머스 & 앤드류 헌트

.

실용주의 프로그래머를 위한 단위 테스트 with JUnit

데이비드 토머스 & 앤드류 헌트 지음
이용원 & 김정민 옮김

.

이바닥 책만 읽으면 프로젝트 관리 관련서적이 대부분이었던 paromix군이 오랫만에 나름데로 이론서인 책을 붙잡아 봤다. 왜 '나름데로' 이론서인고하니, 전체적으로 책이 주는 느낌은 분명 이론서보단 방법론에 관련되어 있는 책인데(물론 두가지의 차이가 그리 분명한건 아니지만 말이지.) 좀더 자세히 살펴보고 있으면 단위테스트를 위한 이론서에 더 가깝다고 볼 수 있기 때문이다.

.

"실용주의 프로그래머"라는 책으로 잘 알려진 저자들이 실용주의 프로그래머가 되기위해 실질적으로 해야할 일들을 정리해 놓은 시리즈가 많이 있는데 그 중 하나가 바로 이 책이다.

.

이 책말고도 "실용주의 프로그래머를 위한..." 시리즈들이 더 나와있으니(버전관리, 프로젝트 자동화) 참고하시기 바란다.(그전에 "실용주의 프로그래머"를 안 읽어보신 분들은 강력추천하니 한번쯤 읽어보시면 좋을 것 같다는 생각을 해본다.^^)

.

단위 테스트를 간단히 말하면 각각의 메소드를 테스트하는 것이라고 정리할 수 있다. 각각의 메소드에 들어갈수 있는 파라메터의 상태(대부분 경계조건에서 테스트가 주를 이루겠지?)에 따라 원하는 결과들이 나오는지, Exception이 발생하는 상황에서 제대로된 Exception이 발생하는지를 테스트하는게 주된 목적이라 할 수 있다.

.

책에서는 제목에서도 볼수 있듯이 JUnit이라는 자바용 패키지를 가지고 자바언어로 개발을 할때 단위테스트를 할 수 있는 방법을 설명해 놓긴 했으나, 다른 언어로 개발할 때에도 비슷한 방법으로 테스트하며 개발할 수 있을 것 같다. 아마 생각에는 C나 C++용 테스트 라이브러리 정도는 있을 것 같은데 시간나면 한번 찾아보던지 해야겠다.(머 못찾겠으면 JUnit보고 비슷한 일을 할 수 있게 간단히 만들어도 될것 같기도 하지만 말이지.)

.

구체적으로 단위테스트를 하는 방법들은 책에 자세하고도 친절하게(게다가 열정적인 사람들을 위한 연습문제까지 준비되어있으니) 설명되어 있으니 굳이 정리해둘 필요는 없을 것 같고.(언제나 말하지만 귀찮아서 그런게 절대 아니다.-_-) 부록에 나와있는 단위테스트 지침 요약만 정리해두고 포스팅을 마쳐야겠다.

.

==================================================================================

일반원칙
  • 망가질 가능성이 있는 모든 것을 테스트한다.
  • 망가지는 모든 것을 테스트한다.
  • 새 코드는 무죄가 증명되기 전까지는 유죄.
  • 적어도 제품 코드만큼 테스트 코드를 작성한다.
  • 컴파일을 할 때마다 지역 테스트를 실행한다.
  • 저장소에 체크인하기 전에 모든 테스트를 실행해본다.
무엇을 테스트해야 하는가 RIGHT-BICEP
  • Right : 결과가 옳은가?
  • Boundary : 모든 경계 조건이 CORRECT(아래 참조)한가?
  • Inverse : 역관계를 확인할 수 있는가?
  • Cross-check : 다른 수단을 사용해서 결과를 교차 확인 할 수 있는가?
  • Error condition : 에러조건을 강제로 만들어 낼 수 있는가?
  • Perfomance : 성능 특성이 한도내에 있는가?
CORRECT 경계 조건
  • Conformance : 예상한 형식과 일치하는가?
  • Ordering : 적절한 순서대로 되어있는가?
  • Range : 최소값과 최대값사이에 있는가?
  • Reference : 외부코드를 참조 하는가?
  • Existence : 값이 존재하는가?
  • Cardinality : 확실히 충분한 값이 존재하는가?
  • Time : 제시간에 때맞추어 일어나는가?
좋은 테스트는 A-TRIP해야 한다.
  • Automatic : 자동적이어야 한다.
  • Through : 철저해야 한다.
  • Repeatable : 반복가능해야 한다.
  • Independent : 독립적이어야 한다.
  • Professional : 전문적이어야 한다.
==================================================================================

.

참고로 paromix군은 회사에 있던 책을 읽어서 번역본으로 읽긴 했지만 번역상태가 그리깔끔하진 않은것 같다. 소장용으로 읽으실 분들은 원서를 사서 읽는것을 좀더 추천해주고 싶다는 말씀을 드리며 물러나겠다.:D

.

"Paromix"


.

이글루스 가든 - 한달에 책 5권씩 읽기

by Paromix | 2006/07/05 01:37 | ■□ 책 이 야 기 □■ | 트랙백 | 핑백(1) | 덧글(3)

트랙백 주소 : http://paromix.egloos.com/tb/2199327
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at - Last Paromix -.. at 2009/09/05 22:07

... . 테스트 주도 개발 켄트 벡 지음 김창준 & 강규영 옮김 . "실용주의 프로그래머를 위한 단위테스트"에 이어 paromix군이 단위테스트에 관한(?) 책을 한권더 읽어버렸다. 전에 읽었던 책이 단위 테스트 자체를 중심으로 쓰여진 책이라면, 테스트 주도 개발은 ... more

Commented by 찻잎 at 2006/07/05 02:41
위의 method 들은, 프로그래밍 이외의 삶에도 적용하면 좋을것 같다는 생각이 드네요^^
Commented by 저공비행사 at 2006/07/05 15:38
새 코드는 무죄가 증명되기 전까지는 유죄.<- 이대목 읽고 웃어버렸습니다.
무죄가 증명되기는 여간 어려운일이 아니더라고요~
Commented by Paromix at 2006/07/06 03:22
찻잎 님 // 전체적으로는 좀 빡빡한 느낌이 드는 방법이긴 하지만 몇몇은 도움이 될듯 하네요.^^
저공비행사 님 // 제가 짠 코드는 아직 대부분 유죄랍니다.ㅠㅠ

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶