도전 TDD! - 테스트 주도 개발의 패턴(1)
테스트 주도 개발 패턴 25장~26장
5/23/2024, 9:40:00 PM
25장. 테스트 주도 개발 패턴
테스트란 무엇인가
- 테스트를 소유하라. 명사로서의 테스트. 자동화된 테스트를 가져라.
- 테스트를 하는 것(동사로서의 테스트)에 의미를 두게 되면, ‘테스트할 시간이 없다’ 라는 죽음의 나선에 빠지게 된다. 결과를 보장할 수 없고, 그로 인해 에러가 많아지고, 그로 인해 스트레스를 받고, 그로 인해 …
- 소유한 테스트는 두려움을 지루함으로 바꿔주는 효험이 있다. 두려운 정도를 선택할 수 있다.
격리된 테스트
- 테스트끼리 서로 아무 영향이 없어야 한다.
- 문제가 하나면 테스트도 하나만 실패해야 한다. 문제가 둘이면 테스트도 두 개만 실패해야 한다.
- 테스트를 격리하기 위한 작업 자체가 응집도는 높고 결합도는 낮은 객체 모음으로 구성된 시스템을 만든다.
테스트 목록(⭐️)
- 시작하기 전에 작성해야할 테스트 목록을 모두 적어둘 것. 발 디딜 곳이 확실해지기 전엔 결코 발을 떼어 전진하지 말 것.
- 목록 작성법
- 구현할 필요가 있는 모든 기능의 사용 예들을 작성
- 이미 존재하지 않는 기능에 대해서는 아무 일도 하지 않는 버전을 목록에 작성
- 깔끔한 코드를 얻기 위해 반드시 해야하는 리팩토링 목록 작성
- 한 번에 테스트 목록을 다 구현하지 말자. 초록 막대 상태에서 하나씩 진행해라.
테스트 우선 / 단언 우선
- 테스트 대상이 되는 코드를 작성하기 직전에 테스트를 작성하라.
- 단언(assert)을 제일 먼저 쓰고 시작하라. 테스트를 먼저 작성하는 것처럼 단언을 먼저 작성하는게 문제를 더 간단하게 시작할 수 있게 해준다.
테스트 데이터 / 명백한 데이터
- 의미가 있는 테스트 데이터를 사용하라.
- 의미가 있는 항목 만큼만의 테스트 데이터를 사용하라
- 테스트 자체에 예상되는 값과 실제 값을 포함하고 이 둘 사이의 관계를 드러내서 데이터의 의도를 표현하라
26장. 빨간 막대 패턴
한단계 테스트(⭐️)
- 목록에서 테스트를 고를때의 기준
- 새로운 무언가를 가르쳐 줄 수 있으며, 구현할 수 있다는 확신이 드는 테스트를 골라라
- 아는 것에서 모르는 것으로 성장하는 프로그램을 가지게 된다
- 단순히 하나씩 테스트하는게 아니다. 한 단계 더 알게 되는 것이 포인트
시작 테스트
- 현실적인 테스트로 첫 시작을 하려면 상당히 많은 문제를 한번에 해결해야 한다. 그로 인해 너무 오랫동안 피드백이 없을 것이다.
- 아무 일도 하지 않는 경우, 정말 발견하기 쉬운 입출력 과 같은 뭔가를 가르쳐 줄 수 있으면서도 빠르게 구현할 수 있는 것으로 시작하라.(== 한 단계 테스트)
또 다른 테스트
- 새 아이디어가 떠오르면 존중하고 맞이하되 그것이 내 주의를 흩뜨리지 않게 하라. 아이디어는 리스트에 적어놓고 다시 하던 일을 하자
샤워 방법론
- 키보드로 뭘 쳐야 할지 알면, 명백한 구현을 한다.
- 잘 모르겠다면 가짜 구현을 한다.
- 올바른 설계가 명확하지 않다면 삼각측량 기법을 사용한다.
- 그래도 모르겠으면 샤워나 해라
소감
TDD란 어떻게하면 더 빠르고 간단하게 작업을 시작하고, 진행시킬 수 있는지 고민한 결과물인 것 같다. 모든 고민의 방향은 동일하다. 한 번에 많은 것을 고민하고 해결하지 말라. 작은 것부터 확실하게 바로 착수하라. 그리고 조금씩 나아가라.
댓글
* 작성 이후에 수정/삭제 할 수 없어요!
아직 작성된 댓글이 없습니다.