테스트에 대한 두 가지 학파

    새 애플리케이션을 시작할 때 적절한 TDD 방식으로는 두 가지 출발점이 있다. 한 가지 방식은 핵심 도메인을 모델링하는 작은 단위 테스트를 작성하는 것부터 시작해 ‘안에서 밖으로’ 한 계층씩 애플리케이션 계층을 구축해나가는 것이다. 다른 방식은 인수 테스트를 먼저 작성하고, 애플리케이션을 ‘밖에서 안으로’ 마무리하여 핵심 도메인에서 구현을 마치는 것이다.

    밖에서 안으로 구현하는 접근 방법의 핵심적인 이점은 완료하려는 스토리의 외부 제약 사항에 따라 개발 방향을 정할 수 있다는 점이다. 핵심 도메인 자체로부터 시작하면 스토리에 잘 들어맞지 않는 기능을 구현하게 될 위험이 있고, 외부 계층을 구현하는 시기에 도달했을 때 내부 코드를 다시 변경해야 할 수도 있다.

    반면 도메인 모델링이 애플리케이션에서 핵심적인 부분이며, 외부 API는 나중에 결정할 수 있다고 생각한다면 안에서 밖으로 접근하는 방식이 더 나을 것이다.

    또 다른 큰 차이점은 구현 전에 인수 테스트를 작성하면 스토리 시나리오가 완료될 때까지 테스트를 통과시킬 수 없는데, 한 가지 스토리 시나리오를 완성시키는 데는 몇 시간이나 며칠이 걸릴 수도 있다는 점이다. 하지만 실패하는 테스트를 빌드에 남겨둘 수는 없기 때문에, 인수 테스트를 비활성화하거나 진행 중이라고 표시할 방법이 필요하다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.