⭐️ 테스트는 가정을 검증하고 피드백을 주는 도구다

📌 실패할 게 뻔해 보여도 테스트는 실행하자.

테스트를 격리해라

경험에 의한 교훈

  1. 하나의 테스트가 충분히 빨라서 자주 실행할 수 있어야 한다.

  2. 테스트는 작은 스케일로 하는게 좋다.

  3. 📌 각각의 테스트는 다른 테스트와 완전히 독립적이어야 한다.

    → 테스트가 실행 순서에 독립적이게 된다.

  4. 각 테스트를 실행하기 위한 환경을 쉽고 빠르게 셋팅할 수 있게 해야 한다.

테스트를 격리하기 위해서는 시스템이 응집도는 높고 결합도는 낮은 객체의 모음으로 구성되도록 한다.

테스트 목록

테스트하기 전에 모든 테스트 목록을 적어보세요.

<aside> 💡

그래서 저는 앞으로 몇 시간 동안 해야 할 일들을 종이 쪽지에 적는 습관을 들였습니다. 좀 더 장기적인 주간/월간 목록은 벽에 따로 붙여두었습니다.

이렇게 다 적고 나면 "뭔가를 빠뜨릴 걱정은 안 해도 되겠다"는 확신이 들었습니다.

새로운 항목이 생기면 의식적으로 판단해서 그것이


📌 TDD에서는 앞으로 작성할 테스트들을 목록에 적습니다.

  1. 먼저, 구현이 필요한 모든 동작에 대한 테스트 예제들을 목록에 적습니다.
  2. 아직 존재하지 않는 동작은 null 버전을 포함시킵니다.
  3. 마지막으로, 이 세션이 끝날 때 리팩터링 항목들도 함께 적습니다.

그럼 테스트를 한 번에 다 구현하면 안 되나?

그렇게 해봤지만 잘 안 되더군요. 이유는 다음과 같습니다: