Skip to content

테스트 주도 개발이란, #4

@BBBOMi

Description

@BBBOMi

TDD의 궁극적인 목표 - 작동하는 깔끔한 코드(clean code that works, Ron Jeffries)


작동하는 깔끔한 코드가 훌륭한 이유는?

  • 예측 가능한 개발 방법이다.
    끊임없이 발생할 버그에 대해 걱정하지 않고, 일이 언제 마무리 될 지 알 수 있다.
  • 코드가 가르쳐 주는 모든 교훈을 학습할 기회를 갖게 된다.
    처음 생각나는 대로 후딱 완료해 버리면 두 번째 것, 더 나은 것에 대해 생각할 기회를 잃게 된다.
  • 당신이 만든 소프트웨어는 사용자의 삶을 향상시켜 준다.
  • 동료들이 당신을 존경할 수 있게 해주며, 당신 또한 동료들을 존경할 수 있게 해준다.
  • 작성하는 동안 기분이 좋다!

TDD에서의 규칙

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

이 규칙이 촉직하는 행동 패턴

  • 매 (설계에 대한)결정사항에 대해 피드백을 제공하는 실행 가능한 코드를 기반으로 하는 유기적인 설계를 해야 한다.
  • 자동화 된 테스트를 다른 사람이 만들어주길 기다릴 수는 없으므로, 직접 테스트를 작성해야 한다.
  • 개발 환경은 작은 변화에도 빠르게 반응할 수 있어야 한다.
  • 테스트를 쉽게 만들려면 반드시 응집도는 높고 결합도는 낮은 컴포넌트들로 구성되게끔 설계해야 한다.

이 규칙에 의해 결정되는 프로그래밍 순서

  1. 실패하는 작은 테스트를 작성한다.
    • 처음에는 컴파일조차 되지 않을 수 있다.
  2. 빨리 테스트가 통과하게끔 만든다.
    • 이를 위해 아래의 것들을 해도 좋다.
      • 기존 코드 복붙하기
      • 테스트만 간신히 통과할 수 있게끔 함수가 무조건 특정 상수를 반환하도록 구현하기
  3. 일단 테스트를 통과하게만 하는 와중에 생겨난 모든 중복을 제거한다(리팩토링)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions