도전 TDD! - 테스트 주도 개발의 패턴(1)

테스트 주도 개발 패턴 25장~26장

5/23/2024, 9:40:00 PM

25장. 테스트 주도 개발 패턴

테스트란 무엇인가

  • 테스트를 소유하라. 명사로서의 테스트. 자동화된 테스트를 가져라.
  • 테스트를 하는 것(동사로서의 테스트)에 의미를 두게 되면, ‘테스트할 시간이 없다’ 라는 죽음의 나선에 빠지게 된다. 결과를 보장할 수 없고, 그로 인해 에러가 많아지고, 그로 인해 스트레스를 받고, 그로 인해 …
  • 소유한 테스트는 두려움을 지루함으로 바꿔주는 효험이 있다. 두려운 정도를 선택할 수 있다.

격리된 테스트

  • 테스트끼리 서로 아무 영향이 없어야 한다.
  • 문제가 하나면 테스트도 하나만 실패해야 한다. 문제가 둘이면 테스트도 두 개만 실패해야 한다.
  • 테스트를 격리하기 위한 작업 자체가 응집도는 높고 결합도는 낮은 객체 모음으로 구성된 시스템을 만든다.

테스트 목록(⭐️)

  • 시작하기 전에 작성해야할 테스트 목록을 모두 적어둘 것. 발 디딜 곳이 확실해지기 전엔 결코 발을 떼어 전진하지 말 것.
  • 목록 작성법
    1. 구현할 필요가 있는 모든 기능의 사용 예들을 작성
    2. 이미 존재하지 않는 기능에 대해서는 아무 일도 하지 않는 버전을 목록에 작성
    3. 깔끔한 코드를 얻기 위해 반드시 해야하는 리팩토링 목록 작성
  • 한 번에 테스트 목록을 다 구현하지 말자. 초록 막대 상태에서 하나씩 진행해라.

테스트 우선 / 단언 우선

  • 테스트 대상이 되는 코드를 작성하기 직전에 테스트를 작성하라.
  • 단언(assert)을 제일 먼저 쓰고 시작하라. 테스트를 먼저 작성하는 것처럼 단언을 먼저 작성하는게 문제를 더 간단하게 시작할 수 있게 해준다.

테스트 데이터 / 명백한 데이터

  • 의미가 있는 테스트 데이터를 사용하라.
  • 의미가 있는 항목 만큼만의 테스트 데이터를 사용하라
  • 테스트 자체에 예상되는 값과 실제 값을 포함하고 이 둘 사이의 관계를 드러내서 데이터의 의도를 표현하라

26장. 빨간 막대 패턴

한단계 테스트(⭐️)

  • 목록에서 테스트를 고를때의 기준
  • 새로운 무언가를 가르쳐 줄 수 있으며, 구현할 수 있다는 확신이 드는 테스트를 골라라
  • 아는 것에서 모르는 것으로 성장하는 프로그램을 가지게 된다
  • 단순히 하나씩 테스트하는게 아니다. 한 단계 더 알게 되는 것이 포인트

시작 테스트

  • 현실적인 테스트로 첫 시작을 하려면 상당히 많은 문제를 한번에 해결해야 한다. 그로 인해 너무 오랫동안 피드백이 없을 것이다.
  • 아무 일도 하지 않는 경우, 정말 발견하기 쉬운 입출력 과 같은 뭔가를 가르쳐 줄 수 있으면서도 빠르게 구현할 수 있는 것으로 시작하라.(== 한 단계 테스트)

또 다른 테스트

  • 새 아이디어가 떠오르면 존중하고 맞이하되 그것이 내 주의를 흩뜨리지 않게 하라. 아이디어는 리스트에 적어놓고 다시 하던 일을 하자

샤워 방법론

  • 키보드로 뭘 쳐야 할지 알면, 명백한 구현을 한다.
  • 잘 모르겠다면 가짜 구현을 한다.
  • 올바른 설계가 명확하지 않다면 삼각측량 기법을 사용한다.
  • 그래도 모르겠으면 샤워나 해라

소감

TDD란 어떻게하면 더 빠르고 간단하게 작업을 시작하고, 진행시킬 수 있는지 고민한 결과물인 것 같다. 모든 고민의 방향은 동일하다. 한 번에 많은 것을 고민하고 해결하지 말라. 작은 것부터 확실하게 바로 착수하라. 그리고 조금씩 나아가라.

댓글

0/20
0/500

* 작성 이후에 수정/삭제 할 수 없어요!

아직 작성된 댓글이 없습니다.