TDD

CHEESE·2023년 1월 9일
post-thumbnail

TDD

1. 도메인 로직을 단위 테스트

  • 1차적으로는 도메인 로직을 단위 테스트 하는 것에 집중
  • view / controller는 테스트하기 어려운 부분이다. (통합/인수 테스트로 테스트 가능)

2. 테스트를 통과하는 로직 구현

  • 구현에만 집중할 것

3. 리팩토링

  • 제일 중요! 설계를 잘, 자주 해야 함

TDD 시작하기

어디서 시작해야할 지 모르겠다면?

  • 요구사항이 분석이 안됐다.
  • 대략적인 도메인 설계 후에 TDD를 진행하자.

요구사항 분석을 어떻게 잘 할까?

구현할 기능 목록 작성하기

기능 목록 작성도 어렵다면?

일단 구현

→ 도메인 지식이 쌓인다.

구현한 모든 코드를 버린다.

이후 기능 목록 작성 후 가장 만만한 부분부터 TDD로 구현해보기

복잡도가 높아져서 또 어려워지면? 다시 버린다.

TDD 잘하기

  • 특정 상태를 만드는 것을 할 줄 알아야 한다.
  • 끊을 줄 알아야 한다.
  • 설계와 구현을 분리해라.
  • 테스트하기 쉬운 부분과 어려운 부분을 분리해라.
  • 테스트하기 어려운 부분은 설계를 개선해서 테스트하기 쉽게 만들어라.

리팩토링의 중요성

  • TDD를 하면서 리팩토링을 지속하지 않으면 복잡도가 높은 코드는 금방 지저분해진다.
  • 유지보수하기 어려워진다.
  • 그럼 테스트 코드를 짜기 싫어진다 … 😢
  • 점점 더 복잡해진다.
  • (나중) 잘 동작하는 코드 건드렸다가 큰일날까봐(!)
  • (+) get하지 말고 객체에 메시지를 보내라

Test Fixture

  • Test Fixture를 만드는 단계가 복잡할수록 테스트 코드를 짜기가 어렵다.
  • 테스트를 위한 메소드는 추가하면 안된다.
  • 테스트를 위한 생성자는 추가해도 된다. 생성자는 잘 안 써서 많으면 많을수록 좋다.
  • 생성자를 새로 만들어서 Test Fixture를 간단하게 만들 수 있다면 👌🏻
  • 생성자에 인자가 많아진다? 객체의 크기가 큰 것으로 객체의 크기를 줄여라.

0개의 댓글