단위 테스트는 빨리 실행할 수 있어야 한다.
Test / 2007/11/04 16:37
Working Effectively with Legacy Code를 다시 읽고 있다. 처음 읽을 때는 무심코 넘겨 버렸던 부분들에 대하여 정리해볼 생각으로 읽고 있다.
책 첫머리에 다음과 같은 내용이 나와 나의 흥미를 유발한다.
다음과 같은 종류의 테스트들은 단위 테스트가 아니라고 정의하는 부분이다.
물론 이 책의 필자 또한 위와 같은 테스트에 대한 필요성을 무시하고 있는 것은 아니다. 이와 같은 종류의 테스트 또한 가치있는 작업이라는 것을 인식하고 있다. 그러나 우리들이 개발한 코드에 변화가 발생했을 때 테스트를 빨리 실행할 수 있도록 하기 위하여 진정한 unit test와 위 4가지 종류의 테스트를 분리해야 한다고 주장하고 있다.
나 또한 위 내용에 충분히 공감한다. 애플리케이션의 코드가 변경된 다음에 모든 단위테스트를 실행하는데 너무 많은 시간이 소요되기 때문에 전체 테스트를 실행하지 않는 경우가 종종 있다. 위 4가지 테스트는 Slow Test의 주범이기 때문에 이 테스트를 분리하여 관리하는 것이 필요하다고 주장하는 것이다.
이 같은 이유 때문에 이 책에서는 위 4가지 테스트에 대해서는 unit test가 아니라고 주장한다. true unit test를 찾아 별도로 관리하는 것이 unit test를 최대한 빠르게 실행할 수 있는 지름길이 될 것이다.
또한 위 4가지 환경에 의존관계를 가지지 않은 상태로 핵심 비지니스 로직을 테스트하는 방법을 찾아야 할 것이다.
책 첫머리에 다음과 같은 내용이 나와 나의 흥미를 유발한다.
다음과 같은 종류의 테스트들은 단위 테스트가 아니라고 정의하는 부분이다.
- It talks to a database
- It communicates across a network
- It touches the file system
- You have to do special things to your environment(such as editing configuration files) to run it
물론 이 책의 필자 또한 위와 같은 테스트에 대한 필요성을 무시하고 있는 것은 아니다. 이와 같은 종류의 테스트 또한 가치있는 작업이라는 것을 인식하고 있다. 그러나 우리들이 개발한 코드에 변화가 발생했을 때 테스트를 빨리 실행할 수 있도록 하기 위하여 진정한 unit test와 위 4가지 종류의 테스트를 분리해야 한다고 주장하고 있다.
나 또한 위 내용에 충분히 공감한다. 애플리케이션의 코드가 변경된 다음에 모든 단위테스트를 실행하는데 너무 많은 시간이 소요되기 때문에 전체 테스트를 실행하지 않는 경우가 종종 있다. 위 4가지 테스트는 Slow Test의 주범이기 때문에 이 테스트를 분리하여 관리하는 것이 필요하다고 주장하는 것이다.
이 같은 이유 때문에 이 책에서는 위 4가지 테스트에 대해서는 unit test가 아니라고 주장한다. true unit test를 찾아 별도로 관리하는 것이 unit test를 최대한 빠르게 실행할 수 있는 지름길이 될 것이다.
또한 위 4가지 환경에 의존관계를 가지지 않은 상태로 핵심 비지니스 로직을 테스트하는 방법을 찾아야 할 것이다.
