일반적인 개발 방법은 다음과 같습니다.
일반적인 개발 방법
설계 → 구현 → 테스팅
그런데 구현된 프로그램에 대한 테스팅은 도대체 무엇을 수행해야 할까요?
완성된 프로그램에서 버그를 찾는 것은 어려운 일 입니다. 복잡한 내부 로직을 분석하고 발생할 수 있는 예외를 찾아야 하기 때문입니다.
이를 해결하기 위해 테스트 주도 개발 방법론이 제시됩니다. 테스트 주도 개발 방법론은 해당 기능이 정상적으로 동작하는지 검증하기 위한 테스트 코드를 작성하고 이를 통해 테스트를 통과할 수 있는 최소한의 코드를 작성합니다. 그리고 테스트를 통과한 코드에 대해 리팩토링(refactoring)을 수행합니다.
테스트 주도 개발 방법
기능 단위 테스트 코드 작성 → 최소한의 구현 → 리팩토링
일반적으로 완성된 프로그램은 피드백을 통해서 코드 개선 및 로직 수정이 이루어집니다. 테스트 주도 개발에서는 프로그램이 사용자에게 전달되기 전에 기능 단위의 테스트가 진행될 수 있기 때문에 피드백이 빠릅니다.
빠른 피드백을 통해 코드에 담겨있는 문제점을 확인할 수 있고, 이를 개선하여 코드의 안정성을 유지할 수 있습니다.
기능을 구현하거나 개선할 때 그 범위를 벗어나는 코딩이 이루어지는 것을 방지합니다. 테스트 주도 개발의 원칙 중 하나인, 테스트를 통과하기 위한 최소한의 코드만 작성 혹은 개선해야 한다 를 따름으로써 문제가 없는 코드에 영향을 줄 수 있는 오버 코딩을 예방합니다.
테스트 코드를 작성하는 과정에서 쌓이는 기록을 통해 과거에 개발이 어떤 방향으로 진행되었는지 확인하기 용이해집니다.