[TIL] Test-Driven Development, TDD - (1)

Soo·2023년 5월 1일
0
post-thumbnail

평소에 관심이 많았지만, 왜인지 모르게 겁이나서 시작하기 엄두가 안났던 TDD에 대해 간단하게 공부해보고 싶어 강의를 들으면서 TDD 공부를 해보기로 했다.

💡 TDD란?

테스트 주도 개발(Test-Driven Development, TDD)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다.

1️⃣ 우선 개발자는 바라는 향상 또는 새로운 함수를 정의하는 자동화된 테스트 케이스를 작성한다.
2️⃣ 이후, 작성한 케이스를 통과하기 위한 최소한의 양의 코드를 생성한다.
3️⃣ 새 코드를 표준에 맞도록 리펙토링한다.

이러한 프로세스에 맞게, TDD는 개발을 하는 데 있어 테스트가 주가 되어 개발을 한다 라고 보면 될 것같다. 즉, "테스트를 염두에 둔 프로그램 개발 방법" 이라고 보면 더 이해하기 쉬울 것 같다.

❓ TDD 개발을 하면서 얻을 수 있는 장점이 뭔데?

  1. 객체지향적인 코드 개발
  • 테스트 코드를 먼저 작성하고 개발을 진행한다면 좀 더 명확한 기능과 구조를 설계할 수 있다.
  • 또한, 각각의 함수를 정의할 때 각각의 기능들에 대해 철저히 구조화시켜 코드를 작성할 수 있다.
  1. 설계 수정 시간의 단축
  • 테스트 코드를 먼저 작성하기 때문에 최초 설계 안을 만족시키며 입출력 구조와 기능의 정의를 명확히 하게 되므로 설계의 구조적 문제를 바로 찾아낼 수 있다.
  • 미리 테스트 시나리오를 작성해봄으로써 코드 개발 전 기능을 구현하기 위한 예외 상황들을 미리 확인해보고 조사하게 되는 효과가 발생해 예외코드를 작성하기 쉬어진다.
  1. 디버깅 시간의 단축
  • 기본적으로 단위테스트 기반의 테스트 코드를 작성하기 때문에 추후 문제가 발생하였을 때, 각각의 모듈 별로 테스트를 진행해보면 문제의 지점을 보다 쉽게 찾아낼 수 있다.
  • 만약 TDD 개발이 아니라면, 특정 버그를 찾기 위해 모든 영역의 코드들을 살펴봐야 할 것이다.
    -> 문제가 발생할 수 있는 지점은 DB, Application, Data, Memory영역 등 다양하기 때문에 모든 영역을 통합테스트하게 되면 쉽게 문제의 지점을 찾을 수 없게 된다.
    -> 하지만 TDD 개발로 인해 각각의 단위 테스트를 진행하게 된다면 영역을 분할하여 쉽게 찾을 수 있다는 장점이 있다.
profile
Soogineer's Devlog

0개의 댓글