TDD에 대해서 설명해주세요.
TDD, 또는 테스트 주도 개발은 소프트웨어 개발 방법론 중 하나로, 테스트를 먼저 작성하고 통과된 테스트 코드를 실제 프로젝트에 적용하여 작성하는 방식입니다. 이를 통해 개발자는 코드의 동작을 보장하고 코드 변경 시 발생할 수 있는 문제를 사전에 감지할 수 있습니다.
테스트 작성, 테스트 통과, 실제 코드로 구조 변경 및 리팩토링 과정으로 진행되며 이 과정을 반복하면서 실제 프로젝트 코드를 발전해나가게 됩니다. TDD를 통해 코드의 안정성을 높이고, 변경사항에 따른 부작용을 줄일 수 있습니다. 또한, 테스트가 코드와 함께 문서화 역할을 하므로 유지보수가 용이해집니다.
추가질문 :
TDD를 해본적이있는지? 느낀점은 있는지?
부족하지만 미니 프로젝트를 진행 시 초반 부분에 TDD 방식을 시도 해봤습니다. 다만 당시 스프링 프로젝트 자체의 이해도도 부족했고 테스트 코드에 대한 이해도 또한 부족해서 프로젝트 기간은 제한적이기 때문에 시간적인 문제가 있었습니다. 이후 프로젝트 완성을 위해서 기존 방법처럼 로직을 작성하고 그것에 대한 테스트 코드를 작성해가게 되었습니다. 하지만 테스트 코드를 계속 접해보면서 모의 객체를 활용하고 주입하면서 테스트 해가는 등 테스트 코드에 조금씩 익숙해지는것이 느껴졌습니다. 또한 이 테스트 코드 자체를 다양하게 구성할 수록 서비스의 여러 문제들을 미리 개발자가 생각해내고 완벽하진 못하더라도 완벽함을 추구 할 수 있는 개발 방식일 것이다라고 느껴졌습니다. 간단한 프로젝트에서부터라도 TDD 방식으로 한번 프로젝트를 진행해보면서 좀 더 직접 체감해보고 싶은 것을 느꼈습니다.