테스트 먼저 작성하는 건 어색했다

2018.09.06
켄트 벡, 『테스트 주도 개발』을 읽고

TDD라는 단어만 알았지 실천은 없었다. 이 책을 통해 원칙과 패턴을 배웠다.

'테스트 작성(빨강) -> 성공(초록) -> 리팩터링' 사이클을 의도적으로 실천했다. 코드가 사용되는 관점에서 먼저 생각하니 꼼꼼해졌다. 짧은 피드백 주기가 주는 안정감이 있었다.

물론 모든 순간이 즐겁지는 않았다. 하염없이 모킹(Mocking)을 하며 뭘 테스트하는지 회의감이 들기도 했다. 동료들과 테스트 케이스를 공유하며 복잡한 로직에서의 어려움을 토로하기도 했다.

TDD에 입문했다. 코드 품질을 높이는 실천적 방법이자 코드를 실행하며 검증하는 실용성을 긍정하게 되었다. 아직 비용이 많이 들지만 의도적인 수련을 계속하려 한다.

갈무리

  • TDD 사이클: 실패하는 작은 테스트 작성(빨강) -> 빨리 통과하게 만듦(초록) -> 중복 제거(리팩터링).
  • 인터페이스 상상: 테스트를 작성할 때는 오퍼레이션의 완벽한 인터페이스를 상상하라.
  • 자신감: 완벽함이 아니라 자신감을 가지고 전진할 수 있을 만큼만 결함을 낮춘다.
  • 테스트 먼저: 스트레스를 받으면 테스트가 줄고, 테스트가 줄면 스트레스가 커진다. 테스트를 먼저 작성하면 이 악순환을 뒤집을 수 있다.
  • 가짜 구현: 등산할 때 피톤을 미리 박아두는 것과 같다. 도달하면 안전하다는 것을 알 수 있다.
  • 나쁜 코드: 나쁜 코드는 썩어 문드러져 팀의 발목을 잡는다. TDD는 깔끔한 설계를 돕고 적절한 문제에 집중하게 한다.