TIL 4 | TDD란 무엇인가?

Seon Kang choi·2021년 9월 23일
0

TDD란 무엇인가?

Test Driven Development 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 요구사항에 맞는 기능에 대한 테스트 케이스를 작성하고 해당 테스트를 통과하는 간단한 코드를 작성한다. 그리고 작성한 코드를 상황에 맞게 리팩토링하는 과정을 거친다. 말 그대로 테스트가 코드 작성을 주도하는 개발 방법이다.

테스트 주도형 개발에서는 요구사항에 집중하며 정확히 이해하여 케이스를 만들고 설계에서 문제가 있으면 빠른 설계 개선으로 이어질 수 있다.
어떤 새로운 기능을 추가했다고 하면 이전 잘 작동하던 기능이 제대로 작동하지 않는 경우가 발생할 수 있다. 그리고 미처 인지 못할 수도 있다. 이러한 경우를 방지하기 위해 테스트코드를 작성한다. 새로운 기능의 테스트 뿐만아니라 동시에 기존 기능들이 잘 작동하는지 테스트를 통해 확인할 수 있다.

  • TDD 장점
  1. 객체지향적인 코드 개발
    테스트코드를 통해 명확한 기능과 구조를 설계할 수 있다. 함수를 정의할 때 기능들에 대해서 철저히 구조화 시켜 코드를 작성할 수 있다. 이유는 테스트의 용이성을 위해 복잡한 기능을 한 함수에 모두 구현할 경우 테스트 방식이 복잡해지고 시간이 오래 걸리며 코드 수정이 될 경우 테스트 코드를 재사용할 수 없게 됩니다. 따라서 TDD의 목적인 코드의 재사용성을 보장하는 코드를 작성할 수 있습니다.

  2. 설계 수정 시간 단축
    테스트 코드를 작성하면서 입출력 구조와 기능의 정의를 명확하게 되므로 설계 구조적 문제를 찾을 수 있습니다. 인터페이스나 클래스의 구조들을 수정할 수도 있고, 코드 개발 전 기능을 구혀하기 위한 예외 사항들을 미리 확인할 수 있습니다.

  3. 디버깅 시간 단축
    단위 테스트 기반의 코드를 작성 했기 때문에 문제가 발생하였을 경우 모듈 별로 테스트를 진행하여 문제 지점을 쉽게 찾아낼 수 있습니다.

  4. 유지 보수 용이성
    TDD개발로 인해 테스트 요소들이 사용자 관점으로 정의되고 진행되기 때문에 입력과 출력의 흐름이 명확해지고 나중에 구조의 변경 및 소스 수정 시 구조를 쉽게 파악하고 수정이 가능해진다.

TDD라는 개발 방식은 진입 장벽이 존재한다. 어떠한 부분을 테스트해야할 지, 어떻게 테스트해야할 지, 여러 테스트 프레임워크 중 어떤 것이 서비스와 맞는지 등 여러 부분들에 대해 학습이 필요하고 익숙해지는데에도 시간이 걸린다. 하지만 TDD는 많은 장점을 가지고 있고, 개발 시 테스트를 고려한 코드 작성으로 개발 시간이 늦어지는 단점이 보일 수 있으나 전체적인 개발 시간은 비슷하거나 단축되는 효과를 볼 수 있다. 그리고 나중에 수정이나 구조 추가의 용이성을 생각한다면 많은 도움이 될 것이라 본다.

profile
유쾌한 개발 생활~

0개의 댓글