테스트 코드 작성하는 이유

우리는 테스트 코드를 작성할 시간이 없습니다. 기능만 구현하기에도 시간이 부족하다고 생각하기 때문이죠. 테스트 코드를 프로덕션 코드만큼 중요하게 생각하기는 쉽지 않습니다. 모두가 테스트 코드를 프로덕션 코드만큼 중요하게 생각한다면 일정을 산정할 때 테스트 코드 작성에 필요한 비용을 충분히 고려할 텐데, 슬프게도 그런 경우는 흔치 않은 것 같습니다. 하지만 좋지 않은 상황에서도 우리가 테스트 주도적인 개발 방법을 지향하고 익숙해져야 하는 이유가 있습니다. 그 이유를 한 마디로 요약하면 개발 속도를 높일 수 있기 때문이라고 할 수 있겠습니다.

반복 주기를 줄일 수 있다

조금 다르게 생각해 봅시다. 우리가 개발 업무를 수행할 때 잘 동작하는지 확인하기 위해서 어떻게 하나요? 정말 간단한 일이 아니고서야 똑같은 동작을 여러 번 반복하게 됩니다. 수정 사항이 반영된 코드를 빌드하고, 애플리케이션을 직접 실행해서 기능이 잘 동작하는지 수동으로 확인하는 경우가 많습니다. 애플리케이션을 실행하고 수동으로 테스트를 수행하는 데는 주의력과 시간이 소요됩니다. 이를 몇 번 반복하다 보면 굳이 이걸 계속 수동으로 확인해야 하나? 하는 생각이 들기도 하죠. 직접 수동으로 하다 보니 꼭 확인해야 하는 케이스를 빼 먹을 수도 있고요.

반복적인 특정 작업을 수동으로 처리하는 그 시간에 테스트 코드를 작성하는 데 시간을 투자한다면 또 어떤 점이 좋을까요? 하나 둘 작성된 테스트가 누적되면서 촘촘한 그물망을 만들어 내게 될 겁니다. 우리가 반영하고 싶은 수정 사항이 다른 기능을 고장내는 건 아닌지, 생각대로 잘 동작하는지를 간단한 명령 한 번으로 확인할 수 있게 되지요. 만약 업무 중에 특정 작업을 수동으로 반복하고 있다면 잠시 멈춰야 합니다. 그리고 어떻게 반복 주기를 줄일 수 있을 지 고민해보는 시간을 가져야 합니다. 잠깐의 고민을 통해서 생각보다 많은 시간을 아낄 수도 있으니까요!

리팩토링을 가능하게 한다

테스트 코드를 작성해서 테스트를 자동화 해두면 리팩토링을 수행하기 쉬워집니다. 리팩토링은 기능의 동작을 그대로 유지하면서 내부의 코드 구조를 개선하는 작업을 말합니다. 기능을 추가하기 쉽거나 코드를 이해하기 쉽게 만들기 위해서 리팩토링을 수행합니다. 기능 추가 전에 먼저 기능을 추가하기 쉬운 구조로 개선하는 작업을 함으로써, 이해하기 쉬운 코드를 작성할 수 있게 되고 더 쉽게 기능을 추가할 수 있게 됩니다. 구조를 개선하고 싶어도 기존의 코드를 망가뜨릴까봐 그러지 못하는 경우가 많죠. 이 때 테스트 코드가 있다면 자신있게 구조를 개선하는 작업을 할 수 있습니다. 기능의 동작이 그대로 유지되고 있는지 빠르게 확인할 수 있는 도구로 활용할 수 있습니다. 평소에 테스트 코드를 충실히 작성하고 있다면 다른 부분이 망가지지 않았는지도 확인할 수 있죠.

스스로 성장할 수 있는 기회가 된다

테스트 코드를 작성하는 데 시간을 투자하는 게 좋은 이유는 또 있습니다. 테스트 하기 좋은 프로덕션 코드를 작성하는 능력을 얻을 수 있습니다. 의존성을 최소화 하면서 하나의 책임을 가지는 작은 모듈을 만들어 내는 법을 알게 될 거예요. 그런 코드가 유지 보수 하기에도 좋은 코드일 확률이 높죠. 사실 테스트하기 좋은 코드를 작성하는 일이 쉬운 일은 아닙니다. 충분한 경험과 고민이 필요한 일인 것 같아요. 하지만 지속적인 노력으로 그런 코드를 작성할 수 있는 개발자가 되면 테스트 주도적인 개발이 쉬워지고, 그것이 당연한 일이 됩니다. 테스트 코드 없이는 살 수 없는 몸이 되어버리는 거죠.

Junit 시작하기 👈click!!

스스로 경험하며 얻은 깨달음을 공유하기 좋아하며, 세상이 필요로 하는 코드를 작성하기 위해 노력하는 개발자입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다