본문 바로가기

Book

[책] Effective Unit Testing

좀 오래 읽은 테스트 관련 도서이다. 목록

기존 이펙티브 시리즈 처럼 항목1, 2, 3 처럼 하지는 않다. 하지만 문제가 있는 테스트의 예를 하나하나 조목조목 들어가며 나열을 하고 있다. 또한 지은이이 '라쎄 코스켈라'가 현직 프로그래머인지 현실에서 벌어질 만한 사례를 들어 설명을 하고 있어서 도움이 된다는 것이다.


역자가 번역을 잘 쓴건지, 원자가 표현력이 풍부한 것인지 재미있는 용어들도 많이 나온다.

p.34 끝판왕

p.98 일용할 야근

p.216 삽질 (yak-shaving)


정오표 또는 개선사항

p.56 그림 2-4, 오리의 예로 캠벨 오리, 댕기 오리, 테스트 더블 오리로 나왔는데, 차라리 원앙, 청둥 오리와 같이 한국인에게 익숙한 오리 이름으로 표를 대체가능 했을 것 같다. 번역에 직역이 더 이해하기 어려운 경우 대체역을 하는 게 나을 듯.

p.94 코드 4-7에 END와 START의 상수 위치가 바뀌었으면 좋겠다.

private static final String END = "2005-05-23 21:21:37";

private static final String START = "2005-05-23 21:20:33";

보다는

private static final String START = "2005-05-23 21:20:33";

private static final String END = "2005-05-23 21:21:37";

가 시작~끝으로 코드 문맥이 자연스럽다는 것. 영문판도 마찬가지다.

p.95 코드가 논리적으로 맞지 않는다.

@Test

public void screenDurationsAreRenderedInSeconds()

throws Exception {

logFile.addContent("[2005-05-23 21:20:35] screen1");

logFile.addContent("[2005-05-23 21:20:35] screen2");

logFile.addContent("[2005-05-23 21:21:36] screen3");


String output = transform(logFile.toString());

assertTrue(output.contains("screen1###0"));

assertTrue(output.contains("screen2###61"));

assertTrue(output.contains("screen3###1"));

}

@Test

public void screenDurationsAreRenderedInSeconds()

throws Exception {

logFile.addContent("[2005-05-23 21:20:34] screen1");

logFile.addContent("[2005-05-23 21:21:35] screen2");

logFile.addContent("[2005-05-23 21:21:36] screen3");


String output = transform(logFile.toString());

assertTrue(output.contains("screen1###0"));    // 처음이므로 지속시간이 0이 맞음

assertTrue(output.contains("screen2###61"));   // 지속시간이 61초가 되려면 1,2 로그 시간이

assertTrue(output.contains("screen3###1"));    //  수정되어야 함

}

가 되어야 한다.

p.146 5.5.3정리

 티어다운 메서드 -> TearDown 메서드 (Thread를 '실'이라 번역하지 않고 '스레드'라고 번역하는 것과 비슷하다)

p.166 5.9 메서드 간 응집력 결핍

 응집력(cohesion)은 잘 작성된 객체지향... 이와 같이 응집력은 바람직하며,

대신

 응집력(cohesion)은 잘 작성된 객체지향... 이와 같이 응집력은 바람직하며,

로 굵은 단어 위치를 하는 것이 일관성에 좋다. (메서드 간의 굵은 글씨체가 있기 때문이다.)


읽기 기록

  1. 12/5 ~p.24
  2. 12/6 ~p.42
  3. 12/10 ~p.62
  4. 12/11 ~p.86
  5. 12/12 ~p.94
  6. 12/17 ~p.100
  7. 12/18 ~p.114
  8. 12/19 ~p.124
  9. 1/3 ~p.134
  10. 1/6 ~p.150
  11. 1/7 ~p.184
  12. 1/8 ~p.212
  13. 1/9 ~p.236
  14. 1/10 ~p.248
  15. 1/13 ~p.278
  16. 1/14 ~p.316 (完)