단위 테스트의 목표

아래 그림은 테스트가 없는 일반 프로젝트의 성장 추이를 보여준다. 처음에는 발목을 잡을 것이 없으므로 빠르게 시작할 수 있다. 하지만 시간이 지나며 시간을 많이 소모해야 처음과 같은 속도로 진척을 낼 수 있다. 결국 개발 속도가 느려지고 진행하지 못할 수도 있다.

개발속도가 빠르게 감소하는 엔트로피 현상

개발속도가 빠르게 감소하는 엔트로피 현상

우리는 테스트로 이런 모습을 뒤집을 수 있다. 테스트는 새로운 기능을 도입하거나 리팩토링한 후에도 기존 기능이 잘 작동하는지 확인하는데 도움이 된다.

한 가지 단점은, 초반에 상당한 노력이 필요하다는 것이다. 하지만 장기적으로 보면 그 비용을 메울 수 있다. 코드 베이스를 지속적으로 검증하는 테스트 없이는 소프트웨어 개발이 쉽게 확장되지 않는다.

좋은 테스트와 좋지 않은 테스트를 가르는 요인

아래 그림을 보면 잘못 작성한 테스트도 초반에 코드가 나빠지는 것을 늦출 수 있다. 즉, 테스트가 전혀 없는 상황에 비해 개발 속도가 덜 느려진다.

결국 침체 단계에 빠지는 잘못된 테스트가 포함된 성장 추이

결국 침체 단계에 빠지는 잘못된 테스트가 포함된 성장 추이

테스트의 가치와 유지 비용을 모두 고려해야 한다. 이 때 비용 요소는 다음과 같은 활동에 필요한 시간에 따라 결정된다.

높은 유지 보수 비용으로 인해 가치가 0에 가깝거나 0보다 작은 테스트를 만들기 쉬운데, 우리는 지속 가능한 프로젝트 성장을 위해서 고품질 테스트에만 집중해야 한다.