더북(TheBook)

1.2.2 테스트 주도 개발을 실천하라

테스트 주도 개발 (Test-Driven Development , TDD)은 처음부터 프로그램을 제대로 작성했는지 확실히 보장한다. TDD에서는 애플리케이션 코드를 짜기 ‘전에’ 이 코드가 통과해야 할 단위 테스트를 ‘먼저’ 작성한다. 마치 애플리케이션을 개발하듯 전체 단위 테스트 꾸러미를 만들어가는 TDD 방식을 따르면 단위 정의와 인터페이스 설계에 도움이 많이 된다.

테스트성 좋은 코드를 만들기 위해 코딩 단계에서 기억해야 할 TDD의 개념과 실천 방법은 다음 절에서 다룬다.

TDD를 실천하는 개발자는 애플리케이션에 어떤 변화가 생길 때마다 다음 단계를 밟는다. 여기서 변화란 완전히 새로운 기능을 추가하거나 기존 시스템을 고치고 버그를 잡는 일이다.

1. 완벽히 변경하면 성공하나 그렇게 되기 전까지는 반드시 실패하는 단위 테스트를 작성한다.

2. 테스트가 성공할 수 있을 만큼만 ‘최소한으로’ 코딩한다.

3. 애플리케이션 코드를 리팩토링하며 중복을 제거한다.

 

이 세 단계를 흔히 적색(red), 녹색(green), 리팩터(refactor)라고 줄여 말한다. 적색과 녹색은 각각 새 단위 테스트의 실패와 성공 상태를 가리킨다.

TDD에서 가장 중요한 건 테스트를 충족할 코드를 만들기 전에 테스트를 먼저 작성한다는 사실이다. TDD를 시작하는 사람이 가장 적응하기 어려운 사고방식이다. 테스트를 먼저 작성하라는 말이 적잖이 어색하게 들릴 것이다. 특히 변경할 내용이 사소하면 더더욱 그렇다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.