티스토리 뷰

테스트 주도 개발이란?

 테스트 주도 개발(Test-Driven Development, TDD)은 코드를 설계하고 구조화하는 기법으로, 단순성을 장려하고 코드의 신뢰성을 높이는 데 중점을 둡니다.

 

이 정의의 다양한 부분을 살펴봅시다.

 

기법

 테스트 주도 개발은 다음 세 가지 믿음을 바탕으로 하는 기법입니다.

  1. 단순성: 불필요한 일을 최대한 줄이고, 단순성을 유지합니다.
  2. 명확성과 명료성: 코드를 읽기 쉽게 만드는 것이 중요합니다.
  3. 깔끔한 코드 작성: 유지보수가 쉽고 재사용할 수 있는 깔끔한 코드를 작성해야 합니다.

 '기법'이라는 것은 타고나는 능력이 아니라 훈련을 통해 습득해야 하는 기술입니다. 따라서, 배움에 대한 동기를 스스로 만들어 배움을 이어나가는 것이 바람직할 것입니다.

 

코드 설계 및 구조화

 테스트 주도 개발의 핵심은 코드를 테스트하는 것에 있는 것이 아닙니다. 코드의 설계와 구조를 개선하는 데 있습니다. 단순히 테스트가 통과되는 것을 목표로 한다면, 비즈니스 코드를 먼저 작성하고 나중에 테스트를 작성하는 것과 비교해 특별한 이점이 없습니다. 테스트 주도 개발은 더 나은 소프트웨어 설계를 위한 기법이며, 그 과정에서 설계의 단순성과 명료성을 이끌어낼 수 있습니다.

 

단순성에 대한 편견

 단순성은 소수만 이해할 수 있는 개념이 아닙니다. 단순성을 측정하는 메트릭은 다음과 같은 것들이 있습니다:

  • 코드 라인의 수
  • 순환 복잡도
  • 사이드 이펙트의 수
  • 실행 시간
  • 메모리 사용량
  • etc...

 테스트 주도 개발은 '동작하는 가장 간단한 것'을 정교하게 만들어가며, 끊임없이 단순성의 메트릭으로 유도합니다. 구체적으로는 다음과 같습니다:

  1. 처음에 테스트를 작성합니다.
  2. 테스트를 통과할 수 있는 가장 간단한 코드를 작성합니다.
  3. 리팩토링을 통해 코드를 개선합니다.

이 과정을 반복하면 코드는 항상 가장 단순한 형태로 유지됩니다. 임의로 복잡성을 증가시키고자 한다면, 반드시 먼저 테스트를 작성해야 합니다. 따라서 막연하게 미래에 필요할 것 같다는 등의 이유로 복잡성을 추가하는 것을 쉽게 저지할 수 있으며, 코드를 단순하게 유지할 수 있습니다.

 

신뢰 향상

테스트 주도 개발은 코드에 대한 신뢰를 높입니다. 신뢰는 예측 가능성에 대한 기대를 말하며, 예상치 못한 결과를 예방하고, 코드 변경에 대한 두려움을 줄여줍니다.


현실적으로 테스트 주도 개발의 실천이 꺼려지는 이유

  1. 어디서부터 시작해야 할지 모르겠다.
    • 테스트 주도 스타일을 익히는 것은 별도의 학습이 필요합니다. 하지만 이를 배울 동기가 부족한 경우가 많습니다.
  2. 참고할 만한 실무 예제가 부족하다.
    • 주로 토이 프로젝트나 블로그 글에서 예제를 찾을 수 있지만, 이러한 자료들은 실무에서 다루는 전문적인 도메인을 포함하지 않습니다. 간단한 예제를 사용하기 때문에 실제 업무와는 거리가 있습니다.
  3. 코드부터 작성하고 테스트는 나중에 작성해도 된다고 생각할 수 있다.
    • 프로덕션 환경에 들어가기 전에 테스트를 작성해도 충분히 신뢰할 수 있는 코드를 작성할 수 있다고 생각할 수 있습니다.

그럼에도 테스트 주도 개발이 필요한 이유

 그럼에도 불구하고 테스트 주도 개발을 실천하는 것은 장기적인 관점에서 코드의 품질을 높이고, 유지보수를 용이하게 하며, 변경에 대한 자신감을 제공하는 등 여러 가지 이유로 소프트웨어 개발에서 중요한 역할을 합니다. 자세한 내용은 차차 교재의 챕터를 따라가면서 살펴보도록 하겠습니다.


0장 - 소개 및 설정

gonode.js 모두 설치된 환경을 가정하여 별도의 설정 과정을 생략하겠습니다.

 

go 1.17 버전을 사용하는 것을 보니, 작성된 지 오래된 책인 것 같습니다. 실습을 진행하면서 버전에 따른 변경 사항이 있을 수 있으니 주의가 필요해 보입니다.


정리

  • 테스트 주도 개발(TDD)은 코드를 설계하고 구조화하는 기법으로, 학습을 통해서 익혀야 한다.
  • TDD는 먼저 테스트를 작성하게 함으로써 복잡성의 증가를 억제하고 코드를 단순하게 유지하도록 한다.
  • TDD는 여러 사유로 실천되기 어렵지만, 그럼에도 장기적인 관점에서 더 나은 코드를 개발하고 더 나은 개발자가 되려면 TDD를 배우는 것이 좋다. 지금 당장!

참고

 

테스트 주도 개발 입문 - 예스24

단위 테스트 코드 작성을 기본으로 하는 테스트 주도 개발 방식은 소프트웨어가 테스트 가능한(Testable) 구조를 갖도록 강제하며, 이로 인해 보다 간단하면서도 구조화된 설계로 이끌 뿐만 아니

www.yes24.com

 

'Go > TDD' 카테고리의 다른 글

테스트 주도 개발 입문 - 시작하기  (0) 2024.07.17
최근에 올라온 글
최근에 달린 댓글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday
글 보관함