TDD를 잘하는 방법 최근 개발 관련 이야기를 하다가 "TDD를 잘하려면 어떻게 하는 게 좋을까?"라는 질문이 나왔다. 당시에 만족스러운 답변을 못 했고 며칠을 고민해 봤다. 사람마다 의견이 다르겠지만, TDD 사이클로 설명하는 게 제일 쉽겠다는 생각이 들었다. TDD 사이클은 빨강(테스트 작성) → 초록(테스트 통과) → 리팩토링(중복제거) 순으로, 반복적으로 진행한다. 2000년대 TDD가 소개된 이후로 TDD 사이클은 변경된 게 없다. 어느 정도 안정화된 작업 순서 같다. 그런데, TDD 사이클은 왜 이런 순서로 구성되었을까? TDD 사이클의 단계별 목표는 무엇이고, 작업자는 어떤 이득을 얻을 수 있을까? 아래에서는 TDD 사이클의 단계별 목표를 설명한다. 1. 먼저 테스트를 작성한다이 단계는 '인터페이스'를 설계하는 .. 더보기 TDD로 학습 테스트 (라이브러리 사용법부터 오픈소스 기여까지) 많은 프로젝트에서 외부 라이브러리를 사용한다. 라이브러리는 작업 시간을 아껴주기 때문에 팀원들의 동의가 있고, 해결하려는 문제에 도움이 된다면 사용하는 편이다. [테스트 주도 개발] 책에서는 학습 테스트에 대한 설명이 있다. 학습 테스트는 외부에서 만든 소프트웨어를 처음 사용할 때, 해당 소프트웨어의 기능을 테스트 코드에서 사용해 보는 것을 말한다. 학습 테스트를 작성하면 아래와 같은 효과를 볼 수 있다. 라이브러리 사용법을 학습한다문자 그대로 학습 테스트는 라이브러리의 사용법을 '학습'하기 위해서 작성한다. 나머지는 추가로 얻는 보너스 효과이다. 라이브러리는 많은 기능을 제공한다. 이 중에 프로젝트에서 사용하는 기능에 대해서만 학습 테스트를 작성한다. 라이브러리의 모든 기능을 학습 테스트로 작성하는 것.. 더보기 TDD로 추상화 로직 설계하기 "TDD로 추상화 로직을 어떻게 설계해야 할까?" 2010년에 [테스트 주도 개발]을 읽고 TDD를 처음 알게 됐지만, 이 질문에 대한 답은 최근에서야 정리할 수 있었다. (그동안 꾸준히 TDD를 사용하지는 않았다. TDD에 대한 믿음과 의심을 반복하며 시간을 보냈다) 용어 정리해당 포스트에서는 아래와 같은 용어를 사용한다. 구현 전 설계: 일반적인 '사전 설계'를 의미한다. 코드를 구현하기 전에 코드 구조를 설계하는 것을 의미한다구현 후 설계: 테스트 코드와 구현 코드를 작성한 후, '리팩토링'으로 코드 구조를 설계하는 것을 의미한다 예시 문제A 시스템과 B 시스템의 데이터를 조회해서 비즈니스 로직을 처리해야 하는 이슈가 있다고 하자. A 시스템은 웹 소켓으로 데이터를 조회하고, B 시스템은 주기적으로.. 더보기 이전 1 2 다음