도전 TDD! - 들어가면서

TDD 수행을 시작하기에 앞서

5/21/2024, 8:33:00 PM

TDD에 큰 관심이 생겨서 켄트 벡의 Test-Driven Development: By Example 을 읽기 시작했다. 역자이신 김창준님께서 켄트 벡의 첫 문장이 시작하기도 전에 역자의 글을 4개(+인터뷰 1개)나 적어두셨는데 독자들이 이 책을 올바르게 읽고 통찰의 순간을 느껴보길 바라는 마음이 담긴 듯 하다.

실제로 역자의 글 중 하나는 ‘TDD 수련법’ 이라는 글이다. 역자는 수파리라는 개념으로 TDD 수행의 단계를 설명하는데 상당히 와닿았다. ‘수’는 규칙을 충실히 지키는 것, ‘파’는 그것을 깨뜨리고 자기만의 방식을 찾는 것, ‘리’는 규칙이나 형에서 자유로워 지는 것 을 뜻한다고 한다. 이 책을 사고 대충 훑어본 뒤 아무 감흥 없이 책장 속에 꽂아 두었던 나의 모습을 돌아봤을때, 단순히 읽는 것이 아니라 체득하기 위해 수련을 해야 한다는 맥락에서 공감되었고, 내 것으로 만들어 자유롭게 활용하는 경지를 목표로 한다는 점이 마음에 들었다.

다음은 역자의 글과 저자의 글들 중에서 인상깊었던 구절들에 대한 감상이다.

  1. 제목에 By Example 이라는 부제는 예제를 통해 설명한다라는 의미와 함께, TDD 자체가 예를 통해 진행된다 라는 의미로도 해석할 수 있다고 한다. 테스트가 문제 해결에 본질적인 시스템 사용의 예라는 것이다. 예에 의한 사고 라는 표현을 사용하는데, 나는 설계나 기능에 대해 설명할때 예시나 비유를 중점적으로 설명하기 보다는 명확한 원리와 규칙을 기반으로 이야기하는 것을 좋아하기 때문에, 예에 의한 사고의 강력함을 느끼는 것에 큰 기대를 하고 있다.
  2. 켄트 벡은 프로그래머가 자기 작업의 품질에 대한 우선적 책임을 져야 하고 이것을 위한 방법으로 TDD는 아주 강력하다고 말한다. “프로그래머에게 100퍼센트 책임을 전가하는 상황이라면 TDD 안할 자신 있어?” 라고 하는 도발인 셈이다.
  3. 테스트 주도 개발이 따르는 두 가지 단순한 규칙 - 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. / 중복을 제거한다
  4. TDD 프로그래밍 순서 - 빨강=실패/초록=통과(억지로라도)/리팩토링(중복제거)
  5. TDD에 대해 내심 가지고 있던 의문을 정확하게 꼬집은 문장이 있었다. 왜 엄청나게 복잡한 설계를 머릿속에서 그려낼 수 있는 소프트웨어 엔지니어들마저 작은 단계를 종종걸음으로 밟아나가야만 하는가? 켄트 벡은 용기 때문이라고 한다. TDD를 통해 어려문 문제를 풀 때에 발생하는 불확실성에 기반한 두려움을 줄일 수 있는데, 프로그래밍 도중 내린 결정과 그 결정에 대한 피드백 사이의 간격을 인지할 수 있고 또 통제할 수 있기 때문이다. 두려움을 나타내는 문장을 보여주었는데 정말 자주쓰는 말이라 웃음이 나왔다. “정말 어려운 문제라서 시작 단계인 지금은 어떻게 마무리될지 알 수 없군”

주위를 배회하기 전에 지도를 보는 것을 좋아한다면 3부-테스트 주도 개발을 위한 패턴들 을 먼저 읽으라고 해서 3부부터 읽어볼 생각이다. 이 책과 함께 TDD를 수행해볼 것이다.

댓글

0/20
0/500

* 작성 이후에 수정/삭제 할 수 없어요!

아직 작성된 댓글이 없습니다.