TDD(Test-Driven Development, 테스트 주도 개발):
eXtream Programming
의 Test-First
개념에 기반Tip 애자일 소프트웨어 개발 방법론이란?
애자일(Agile)은 ‘기민한, 민첩한’이라는 뜻으로 일정한 주기를 가지고 빠르게 제품을 출시하여 고객의 요구사항, 변화된 환경에 맞게 요구를 더 하고 수정해나가는 탄력적인 방법론을 말한다.
테스트 주도 개발의 개발 주기는 아래 그림과 같이 표현할 수 있다.
테스트 주도 개발에서는 위 그림과 같이 총 3개의 단계로 개발주기를 표현한다.
일반적인 개발 방법은 설계를 진행한 후 그에 맞게 애플리케이션 코드를 작성하고 마지막으로 테스트를 작성하는 흐름으로 진행된다. 반면 테스트 주도 개발에서는 설계 이후 바로 테스트 코드를 작성하고 애플리케이션 코드를 작성한다는 점에서 차이가 있다.
테스트 주도 개발에 따라 개발을 진행하면 다음과 같은 이점을 얻을 수 있다.
이처럼 테스트 주도 개발은 다양한 장점을 가지고 있다. 그러나 아직 테스트 주도 개발 프로세스를 잘 지키며 개발하는 조직은 많지 않다. 기존 개발 방식에 익숙해져 있는 상황에서 모든 프로세스를 바꾸기가 쉽지 않기 때문이다.
테스트 주도 개발이라는 새로운 개발 방법에 적응하는 과정에서 발생하게 될 생산성 저하의 우려로 개발 조직이 쉽게 도전하기 어려운 것이 사실이다.
이번 장에서는 테스트의 개념과 이론을 살펴보고 테스트 코드를 작성하는 방법을 알아봤다. 테스트 코드의 중요성이 부각된 것은 비교적 최근의 일이며, 아직 많은 회사에서는 테스트 코드를 작성하는 것을 비용으로 생각하고 간과하기도 한다.
그러나 대부분의 개발 조직에서 테스트 코드의 중요성에 대해서는 인정하는 분위기이며, 필자 또한 테스트 코드를 잘 작성하는 것은 애플리케이션 개발에 매우 중요한 요소라고 생각한다.
이번 장에서 다룬 테스트 코드 작성법을 기반으로 테스트 코드를 많이 작성해보는 것을 권장한다. 여러 시나리오에 맞춰 다양한 테스트 코드를 작성하다 보면 다양한 예외 상황에 대처하는 순발력과 대처능력도 길러진다.
JaCoCo
를 활용한 테스트 커버리지 관리는 현업에서는 SonarQube
라는 솔루션과 함께 사용되는 경우가 많다. SonarQube는 코드 품질 관리 도구로서 많은 회사에서 채택해서 사용하고 있으므로 기회가 된다면 JaCoCo와 연동하는 것도 좋겠다.