MVI, Paging, Deep link 에 대해 스터디 하기 전에 TDD에 대한 내용을 이해하고 가면 관심사의 분리 등, 코드 개발에 도움이 될 것 같아 TDD를 먼저 알아보게 되었습니다.
Test Driven Development의 약자로 [테스트 주도 개발] 이라는 뜻 입니다.
즉, “테스트가 개발을 이끌어 간다” 라는 모토입니다. 이름부터 테스트를 중시하고 있음을 알 수 있고, 실제로도 테스트가 우선입니다.
단순히 안드로이드, 서버 등 한 분야에서만 사용되는 것이 아닌 소프트웨어 방법론의 하나 입니다.
작은 단위의 테스트 케이스를 작성하고, 이를 통과하는 코드를 추가하는 단계를 반복해서 구현하는 개발 방법론 이라고 할 수 있습니다.
짧은 개발 주기(스프린트)의 반복에 의존하는 개발 프로세스로, XP에서 가장 중요한 실천 방안 중 하나 입니다.
위 그림은, TDD의 개발 주기를 표현했습니다. 위 이미지에서 보는 것처럼, TDD 개발 주기는 저 3단계를 반복합니다.
전통적 개발 프로세스인 [폭포수 모델]에 대해 알고 계신가요?
의 개발 주기를 가지고 있는데, 위 방식은 작업량을 예측하기 힘들고, 변화에 민감하지 못하는 등 많은 단점을 가지고 있습니다.
요구 사항에 민감해야 하고, 민감하고 개방적인 최근의 개발 프로세스는
애자일 개발 프로세스로 향하고 있습니다.
💡 갑자기 비교한 이유는,
TDD는 애자일 개발방법론의 하나인 XP의 중요한 실천 항목 중 하나 이기 때문입니다.
단점은 조금 애매합니다. 소프트웨어의 목적, 규모에 따라 달라진다고 볼 수 있습니다.
💡 TDD 라는 개발 방식 자체에 모순이 생기는 경우가 있다고 합니다.
테스트 코드 작성이 어려울 때, 작성하는데 드는 비용이 상당하다고 판단될 때, 이런 경우
원칙을 지켜야 한다는 강박 관념 때문에 이러지도 저러지도 못한다고 합니다.
참고 자료
https://hanamon.kr/tdd란-테스트-주도-개발/
https://velog.io/@hanblueblue/spring-boot-테스트-코드-작성하기-2.-TDD
폭포수 모델은 제가 잘 알고있습니다! 정처기 공부하면 매일 그 부분만 공부하거든요😏