테스트 주도 개발(Test-Driven Development, TDD)은 소프트웨어 개발 방법론의 하나로, 소프트웨어 기능을 개발하기 전에 먼저 테스트 케이스를 작성하는 것입니다. 이는 코드를 작성하기 전에 코드의 결과를 미리 정의하여, 예상된 대로 동작하는지를 확인하는 방식입니다. 개발자라면 정의는 모두 알고 있을 겁니다. 하지만 그것을 지키고 실행하는 것이 힘들죠... 😅
대부분의 개발은 여유로운 상황에서 이루어지지 않습니다. 마감 기한이 있고 리소스의 제한이 있습니다. 이러한 상황에서 구현하기도 촉박한데 테스트를 쉽게 먼저 짜기란 힘들 것입니다. 네... 제가 그래왔습니다. 🤦♂️
TDD는 개발 초기부터 요구사항을 명확히 하고, 개발 속도를 높이는 데 도움이 되지만, 이러한 이점에도 불구하고 일상 업무에 적용하는 것은 쉽지 않습니다.

나는 딱 정규분포의 가운데에 있나보다... 🎯
이 외에도 팀의 문화, 프로젝트의 성격, 관리자의 인식 등 여러 요인이 TDD의 도입과 실행을 어렵게 만듭니다. 그러나 이러한 어려움에도 불구하고, TDD는 소프트웨어 개발의 질을 크게 향상시킬 수 있는 방법론입니다.
나는 테스트 코드 작성에 들인 노력이 이 짤과 같이 느껴졌다.... 😭
모두 내가 지금까지 TDD를 하기 어려웠던 이유들이다.. 그럼에도 우리는 TDD를 배워야, 적용해야 하는 이유는 뭘까? 🤔

아직 러닝커브에 있는 상황이기 때문에 코드 작성보다 테스크 코드 작성에 더 많은 시간이 들어갔다. 물론 당연한 일이다. 처음 해보는 것이고 익숙하지 않으니까. 하지만 테스트를 통과하고 난 후 내 코드의 의심이 줄었다. 또한 다른 사람에게 코드를 설명할 때 매우 유용했다!! 🎉
나는 아직 작은 프로젝트에는 TDD가 실제로 유용하다고 생각하지 않는다. 하지만 큰 프로젝트에서 내가 겪었던 러닝커브 때문에 진척이 느려져서는 안된다고 생각한다. 지금과 같은 작은 프로젝트에서 연습하면서 나중에 큰 프로젝트에 빛을 발할 수 있다면 그것만으로도 얼마나 가치 있는가. 🌟
작은 프로젝트에서 TDD를 연습함으로써, 큰 프로젝트에서의 적용을 위한 준비를 할 수 있다. 이는 시간이 지나면서 개발자들이 TDD에 익숙해지고, 나아가 큰 규모의 프로젝트에서 더 큰 가치를 창출할 수 있게 한다. 결론적으로, TDD는 초기에는 어렵고 시간이 많이 소요될 수 있지만, 장기적으로 볼 때 소프트웨어 품질과 개발 프로세스를 크게 향상시킬 수 있는 중요한 도구이다.
https://velog.io/@walker/TDDTestCode%EB%8A%94-%EC%99%9C-%ED%95%A0%EA%B9%8C