실용주의 프로그래머를 위한 단위 테스트 with JUnit (데이비드 토머스, 앤드류 헌트, 2004) 독후감

1 minute read

nil

처음 읽어보는 The Pragmatic Programmers 시리즈. 두께도 얇고 관심이 있는 유닛 테스트에 관련된 책이라 읽었는데, 만족스럽다. 달리 실용주의 프로그래머를 들먹이는 게 아니구나. 딱 필요한 내용으로 바로 유닛 테스트를 해보면서 어떤 건지 경험하게 해준다. C++을 주로 사용하는데, 쉽게 쓰였고 문법이 비슷해서인지 예제 코드를 읽는데 어려움은 없었다.

유닛 테스트를 시작하는 단계인지라 어떻게 테스트하면 될지. 어떤 것을 테스트하면 될지. 막막하게 느껴지는데, 가이드 라인은 제공해줘서 많은 도움이 됐다. 딱~ 기억하기 좋은 줄임말을 사용했다.

테스트 영역 : Right-BICEP (이두근을 생각하면 된다.)

  • Right – 결과가 옳은가? : 이 코드가 올바르게 동작한다면, 어떻게 그것을 알 수 있는가?
  • B - 모든 경계(boundary) 조건이 옳은가?
  • I – 역(inverse) 관계를 확인할 수 있는가?
  • C – 다른 수단을 써서 결과를 교차 확인(cross-check)할 수 있는가?
  • E – 에러 조건(error condition)을 강제로 만들어 낼 수 있는가?
  • P – 성능(performance) 특성이 한도 내에 있는가?

경계 영역 : CORRECT

  • 형식 일치(Conformance) – 값의 형식이 예상한 형식과 일치하는가? : 이메일, 전화번호 등
  • 순서(Ordering) – 순서대로 되어 있는가? : 레스토랑 주문은 애피타이저, 샐러드 순이다.
  • 범위(Range) – 최솟값과 최댓값 사이인가? : 사람 나이가 200,000살?
  • 참조(Reference) – 자기 영역을 벗어난 참조하는가? : 스택의 pop()은 스택이 비어 있지 않아야 한다.
  • 존재성(Existence) – 값이 존재하는가? : null이 아님. 0이 아님 등
  • 개체 수(Cardinality) – 확실히 충분한 값이 존재하는가? : ’0-1-n 규칙’, off-by-one
  • 시간(Time) – 순서대로 일어나는가? 제시간에?