Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

TDD, 압도당하지 않고 차근차근 배우는 방법

(이 글은 원래 제 뉴스레터에 쓴 글입니다. 이런 내용을 더 읽고 싶으시다면 뉴스레터 구독을 추천합니다!)

Rails 커뮤니티는 테스트, 그중에서도 TDD(Test-Driven Development)에 대한 강한 집착으로 유명합니다. 이러한 테스트 문화는 Rails가 가진 가장 큰 장점 중 하나죠. 하지만 '테스트해야 하고, 올바르게 테스트해야 한다'는 압박감은 초보자에게 상당히 부담스러울 수 있습니다.

특히 테스트를 전혀 작성해 본 적 없는 환경에서 넘어온 개발자라면 TDD 학습이 더욱 어렵게 느껴집니다. TDD를 제대로 하려면 알아야 할 것이 한두 가지가 아니기 때문입니다.

  • 어떤 기능을 구현할지 파악해야 합니다
  • 각 기능 중 어떤 부분을 테스트해야 하는지 판단할 수 있어야 합니다
  • 테스트 도구를 익혀야 합니다
  • 각 부분에 맞는 테스트 코드를 작성하는 방법을 알아야 합니다
  • 구현 코드를 보기 전에 테스트를 먼저 작성하는 방법을 익혀야 합니다
  • '동작할 수 있는 가장 단순한 것(simplest thing that could possibly work)'을 작성하는 법을 알아야 합니다
  • 테스트를 활용해 코드 설계를 점진적으로 발전시키는 방법을 배워야 합니다

이렇게 나열해서 보면, 힘들지 않으면 오히려 이상할 정도입니다. 결국 제로에서 TDD까지 한 번에 도달하는 것은 불가능하다는 게 분명하죠. 그렇다면 어떻게 해야 할까요? 압도당하지 않고 TDD를 배우려면 어떻게 해야 할까요?

작게 쪼개세요!

불가능해 보이는 과제 앞에 서 있거나 무엇부터 해야 할지 모르겠다면, 지금의 목표에 조금 더 가까워질 수 있는 더 쉬운 것부터 배울 수 있는지 살펴보세요.

예를 들어 RSpec으로 TDD를 배우고 싶다면, 다음과 같이 단계를 나눌 수 있습니다.

  • 테스트 없이 기능을 위한 탐색적 코드를 작성해 본다. (기능을 구상하고 구현하는 경험 자체를 쌓기 위함)
  • 기존 코드를 분석하고, 다양한 입력에 대해 코드가 어떻게 깨질 수 있는지 적어본다. (무엇을 테스트할지, 어떻게 테스트할지 감각을 익히기 위함)
  • Ruby에 내장된 minitest로 이미 존재하는 코드에 테스트를 작성한다. (TDD와 RSpec을 동시에 배우지 않아도 되고, gem 설치나 RSpec 환경 설정과 씨름하지 않으면서 minitest와 기본적인 테스트를 익힐 수 있음)
  • TDD 방식으로 minitest를 사용해 코드를 작성해 본다. (gem 의존성이나 RSpec 학습에 신경 쓰지 않고 TDD 자체에만 집중할 수 있음. 이미 테스트 작성법을 알고 있으므로, '테스트를 먼저 쓰는 것'만 배우면 됨)
  • RSpec으로 TDD를 실천해 본다. (TDD로 어느 정도 연습한 후 진행하면, RSpec 환경 설정과 API, 그리고 RSpec 커뮤니티의 관례에만 집중할 수 있음)

각 단계는 따로 연습할 수 있는 훨씬 작은 스킬입니다. 첫 번째 단계에 집중해 연습하고, 그다음 단계로 넘어가고, 이런 식으로 하나씩 쌓아가면 됩니다. RSpec 기반 TDD로 바로 뛰어드는 대신, 그쪽으로 점진적으로 성장해가는 것이죠.

겉보기에는 일이 훨씬 많아 보일 수 있습니다. 하지만 처음부터 TDD를 통째로 배우려 들 때보다 각 스킬을 더 빠르게 익힐 수 있고, 다음에 새로운 테스트 기법을 만나더라도 튼튼하게 활용할 수 있는 기반이 마련됩니다.

한 번에 한 가지에 집중하세요

핵심은 마지막 단계로 곧장 도약하려 하지 말고, 자신의 편안함 영역 바로 바깥에 있는 것에 집중해 연습하는 것입니다. 각 단계는 그 자체로도 충분한 가치가 있습니다. 첫 단계에서 멈추더라도 여전히 소중한 것을 배운 것이죠. 동시에 단계들이 서로 위에 쌓여가기 때문에, 여러 가지를 한꺼번에 뒤섞어 받아들이는 대신 딱 한 가지를 제대로 익히는 데 집중할 수 있습니다. 그래야 압도당해서 포기하지 않고 배워나갈 수 있습니다.

이 과정을 거치는 동안 스스로에게 실수할 권리를 허락하세요. 배우고 있는 중이라면 실수는 당연합니다! 반복하다 보면 훨씬 쉬워질 겁니다. 꾸준하고 성실하게 연습하고, 이미 아는 것보다 한 단계 위를 계속 향해 나아간다면, 언젠가 반드시 그곳에 도달할 수 있습니다.