조종 다음은 개발
article thumbnail

🧐 TDD 가 뭐야?

https://hyem-study.tistory.com/98

Test Driven Development : 테스트 주도 개발

TDD는 TFD(Test First Development) + 리팩토링 하는 방법이다.

단순히 테스트만 먼저 작성하는 것일까? 개발을 하다 보면 TDD라는 단어를 많이 들어보았을 것이다. 그럴 때마다 검색해서 찾아보면 “아, 구현 코드(프로턱션 코드) 보다 테스트 코드를 먼저 작성하는 방식이구나”라고만 이해하고 무작정 TDD를 적용해 보겠다는 생각에 테스트 코드부터 작성하고 구현 코드를 작성해 본 경험이 있을 수 있다. 그러다가 결국 어떻게 되었나 생각해 보면 다음 기능을 구현하기도 바쁜데 테스트 코드를 왜 먼저 작성해야 하는지 의문이 들고 결국 테스트 코드는 뒷전에 두고 구현 코드부터 작성했었다. 그렇다면 왜 굳이 TDD라는 방식을 사용할까?

🕶️ TDD를 사용하는 이유

TDD를 사용하면 실질적이고 회피하지 않는 테스트를 만들 수 있다.

구현코드를 작성하기 우선에 테스트 코드부터 작성하기 때문에 한 객체가 다른 객체에게 어떤 요청을 보내서 어떤 응답을 받고 서로 어떻게 협력하는 지에 대해 정리하는 기회를 가지게 된다.

한 번에 한 가지 일에만 집중할 수 있다.

프로그램 규모가 커지면서 복잡도가 올라가게 되고 도메인에 대한 이해가 된다고 하더라도 한 번에 구현하려고 하면 뇌가 과부하 되는 경우가 종종 발생한다. 이때 TDD를 사용하면 전체적인 도메인을 파악하지 않고 먼저 구현하고자 하는 내용에 대해 객체 간 협력 구조에 대해서 생각해 볼 수 있다.

😯 어떻게 TDD 를 적용할 수 있을까?

TDD를 사용하는 방법에는 다음 사이클이 있다.

  1. 실패하는 작은 단위 테스트를 만든다. (컴파일조차 실패해도 상관없다.)
  2. 해당 테스트를 통과하는 구현 코드(프로덕션 코드)를 구현한다.
  3. 테스트를 통과하면 구현 코드를 리팩토링한다.

🤔 생각해 볼 문제

항상 TDD를 적용하는 게 좋은 방법일까?

TDD를 사용하면 테스트 코드부터 작성하기 때문에 개발을 느리게 할 수도 있다. 물론 프로그램의 유지보수 측면에서 잠재적으로는 개발 속도를 향상하는 효과를 얻을 수 있지만, 간단하고 빠르게 구현해야 하는 프로그램의 경우 TDD 가 오히려 걸림돌이 될 수 있다는 것이다. 그렇기 때문에 상황에 맞게 TDD를 적용하는 것이 옳은 방법인지 생각해 볼 필요가 있다.

모든 기능에 대해 테스트를 먼저 작성해야 하는 것인가?

구현 기능 목록을 작성하고 TDD 방식으로 개발을 시작하려고 했는데 다음과 같은 의문이 들었다. “모든 기능에 대한 테스트를 먼저 작성해야 하나?” 이에 대해 검색을 해보았지만 명확한 답을 찾을 수 없었지만 한 가지 기능씩 TDD 사이클을 적용하는 방식이라고 판단했다. 이에 대해선 계속 알아봐야겠지만 직접 TDD를 사용해 본 결과 한 가지 기능씩 적용하는 방식이 좀 더 수월하게 느껴지고 한 번에 한 가지 일에만 집중하는 TDD의 장점을 살릴 수 있다고 판단했다.

참고 링크

[TDD] 단위 테스트와 TDD(테스트 주도 개발) 프로그래밍 방법 소개 - (1/5)

[우테코] 레벨1을 끝내고 답해보자(2): TDD(Test Driven Development), 자바를 잘하는 것이란?, 컴파일 예외 vs 런타임 예외, 예외의 복구/회피/무시/전환

🧪 TDD 방법론 (테스트 주도 개발) - 알기 쉽게 정리

[우아한테크코스] 2주차 - TDD(Test Driven Development)

profile

조종 다음은 개발

@타칸

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!