TDD
❓질문
TDD란 무엇인지 설명해주세요.
💡 조사하기전 내가 알고 있던 내용
TDD
는 Test Driven Development의 약자로 테스트 주도 개발이라는 의미를 가지고있습니다.
즉 실제 코드를 우선적으로 치는 개발이 아니라 테스트를 우선적으로 작성하고 후에 실제 개발을 테스트에 맞춰서 작성하는 방식을 의미합니다.
이 방식은 개발 시간은 늦어질 수 있으나 개발에 있어서 오류가 발생할 확률은 적고 디버깅 시간을 줄일 수 있습니다 그리고 테스트의 요구사항에 맞게 작성하는 코드이기 때문에 코드질이 높아집니다.
🏫 정리한 내용
TDD(Test-Driven Development)는 소프트웨어 개발 방법론 중 하나로, 테스트를 먼저 작성한 후 실제 코드를 작성하는 방법론입니다.
TDD
는 일반적으로 ‘Red-Green-Refactor’ 사이클을 따릅니다. 첫 번째 단계는 Red
로, 실패하는 테스트를 작성하는 것입니다. 이 테스트는 아직 구현되지 않은 기능에 대한 테스트로, 코드가 이를 통과하지 못하는 상태에서 시작됩니다. 두 번째 단계는 Green
으로, 테스트를 통과할 수 있도록 최소한의 코드를 작성합니다. 이 단계에서는 테스트를 통과시키는 것만 목표로 하여 코드를 간결하게 작성합니다. 마지막 단계는 Refactor
로, 작성한 코드를 리팩토링하여 가독성이나 성능을 개선합니다. 이때 테스트는 여전히 통과해야 하므로, 리팩토링이 기능에 영향을 미치지 않도록 합니다.
TDD의 장점으로는 첫째, 디버깅 시간을 단축할 수 있습니다.
자동화된 테스트를 통해 오작동하는 영역을 쉽게 좁혀나갈 수 있습니다.
둘째, 리팩토링이 용이
해집니다. 작성된 테스트가 리팩토링 후에도 코드가 올바르게 동작하는지 확인해 주기 때문에, 코드를 수정하는 데 자신감을 가질 수 있습니다.
셋째, 좋은 설계가 유도
됩니다. 테스트를 통해 요구 사항을 명확하게 이해하고, 이를 바탕으로 더 나은 설계를 할 수 있습니다. 또 각 기능을 테스트하기 용이하게 만드는 과정에서 자연스럽게 좋은 설계가 유도됩니다.
처음에는 테스트를 작성하는 데 시간이 소요될 수 있지만, 장기적으로는 위와 같은 장점들로 인해 생산성이 오히려 높아지는 효과를 누릴 수 있습니다.