1 minute read

소개

📖 테스트 주도 개발
🤷‍♀️ 켄트 벡
📢 2008년도 책으로 공부하였으므로 현재 책이랑 차이가 있을 수 있음

TDD의 궁극적인 목표는 ‘작동하는 깔끔한 코드’이다.

두가지 규칙

  1. 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성
  2. 중복을 제거

추가로

  • 매 결정사항에 대해 피드백을 제공하는 실행 가능한 코드를 설계를 해야 함
    • 결정사항: ‘이 부분에서는 상속을 써야겠다’라는 설계에 대한 결정사항
  • 자동화된 테스트를 누군가 만들어주길 기다리는게 아니라 직접 작성하는 마인드
  • 응집도는 높고 결합도는 낮은 컴포넌트들로 구성해야 함

테스트 프로그래밍 순서

💡 빨강/초록/리팩토링은 TDD의 주문이다.

  1. 빨강 - 실패하는 작은 테스트 작성(컴파일 안되도 됨)
  2. 초록 - 빨리 테스트가 통과하도록 변경(복붙, 상수 리턴 등 죄악을 저질러도 됨)
  3. 리팩토링 - 모든 중복 제거

왜 작은 단계를 밟아나가나?

TDD는 프로그래밍을 하면서 나타나는 ‘두려움을 관리하는 방법’이다.

두려움이 우리 프로그래밍에 주는 영향

  • 두려움은 우리를 망설이게 만듦
  • 두려움은 우리가 커뮤니케이션을 덜 하게 만듦
  • 두려움은 우리가 피드백 받는 것을 피하도록 만듦
  • 두려움은 우리를 까다롭게 만듦

어떤 태도로?

그럼 우리는 두려움 대신 어떤 태도를 가져야 하는가?

  • 불확실한 상태로 있는 대신, 가능하면 재빨리 구체적인 학습 시작
  • 침묵을 지키는 대신, 좀더 분명하게 커뮤니케이션을 한다.
  • 피드백을 회피하는 대신, 도움이 되고 구체적인 피드백을 찾는다.
  • (자신의 나쁜 성깔을 직접 해결해야 한다.)

책 구성

1부 Money 예제

  • 코딩하기 전 테스트를 먼저 만드는 방법
  • 설계를 키워나가는 방법

2부 xUnit 예제

  • 자동화 테스트를 위한 프레임워크 만들기
  • 리플랙션이나 예외를 포함하는 복잡한 로직을 테스트하는 예제
  • xUnit 아키텍처 소개
  • 1부보다 더 작은 단계로 작업하는 방식
  • 자기 참조(self-referential)

3부 테스트 주도 개발을 위한 패턴들

  • 어떤 테스트를 작성해야 하는지
  • xUnit에서 어떻게 테스트 할 것인지
  • 예제에서 사용된 디자인 패턴과 리팩토링 소개

공부 순서에 대해

  1. 주변을 배회하기 전에 지도보는 걸 좋아한다
    • 바로 3부 패턴 가서 예제를 설명 대신 봐도 됨
  2. 배회하다가 어디를 지나왔는지 지도로 확인하는 걸 좋아한다
  • 예제를 읽다가 상세한 내용을 알고 싶을 때 패턴 참고하는 방식으로 해도 됨

꼭 순서대로 봐야되는것이 아닌, 본인 습득 타입에 따라 다양하게 읽어도 된다는 뜻인 듯

감사의 글 중 마인드가 멋있었던 말

두 사람이 하나의 머리를 공유한다면 아이디어의 근원이 누구인지 가릴 수 있는 방법이 없다. 이 책에서 나온 훌륭한 아이디어가 전부 Ward의 것이라고 가정해도 무방하다.

Updated: