운영 환경과 동일한 환경에서 테스트 하라
테스팅 포인트란 시스템이 제품으로서 갖는 문제를 해결하기 위한 제어 가능한 조건이다. 여기서 중요한 부분은 시스템이 실행되는 환경에 있다. 만일 다른 환경에서 테스트 한다면, 모든 차이는 테스트가 실행되지 않았어야 하는 상황에서 실행되면서 발생하는 위험에 따른 결과를 만들게 된다.
그렇기 때문에 테스트 환경을 실제 제품이 운영되는 환경과 가능한 일치시켜야만 한다. 같은 버전의 같은 데이터베이스 소프트웨어, 같은 버전의 운영체제를 이용하라. 시스템이 실제로 라이브러리를 이용하지 않는다 하더라도 테스트 환경에서도 운영 환경과 같이 똑같은 라이브러리를 배치하라. 같은 IP 주소와 포트를 이용하고 같은 하드웨어에서 실행되도록 하라.
물론 현실에는 한계가 있다. 만일 데스크 탑 소프트웨어를 개발한다면, 다른 사람들이 실행하는 외부 업체 소프트웨어가 설치된 모든 가능한 데스크탑 사본에서 테스트 한다는건 비현실적이다. 유사하게 어떤 운영환경은 이중화 하는데 비용이 너무 비싸서 불가능할 수도 있다.(내가 가끔은 적당히 비싼 환경을 이중화 하지 않는것이 경제적으로 잘못되었다는 현실에 부딪힐지라도)
이런 한계에도 불구하고 목표는 가능한 운영환경을 이중화하는 것이고 테스트 환경과 운영환경간의 모든 차이를 받아들이고 이에 따른 위험을 이해해야 한다.
만약 다루기 힘든 많은 커뮤니케이션을 제외하면 매우 간단한 설정만 남는다면, 최소한의 차이만 있는 환경에서 커밋빌드를 실행할 수 있다. 그러나 때로는 시스템 응답속도가 느리거나 중단되기 때문에 test doubles를 이용할 필요가 있다. 커밋 테스트의 속도를 높이기 위해 인위적인 환경을 구성하는것은 일반적이며 두번째 테스트를 위해서는 운영환경과 동일한 환경을 이용해야 한다.
나는 테스트 환경을 구성하는것을 용이하게 하기 위해 가상화를 이용하는데 관심이 증가하는데 주목하고 있다. 가상화 서버는 모든 필요한 요소를 가상화 함으로써 비용을 줄여준다.
최신 빌드를 설치하고 테스트를 실행하는것은 어느정도 수월한 작업이다. 더우기 이는 한 서버에서 여러 테스트를 가능하게 해주면서 네트워크 상의 여러 서버를 하나의 서버처럼 테스트 할수 있게 해주기도 한다. 가상화가 성능상에 불이익을 가져다 주지만, 의미있는 선택이다.
'Work & Study > TechTalk' 카테고리의 다른 글
| Continuous Integration by Martin Fowler 11/15 (0) | 2007/09/24 |
|---|---|
| Continuous Integration by Martin Fowler 10/15 (0) | 2007/09/23 |
| Continuous Integration by Martin Fowler 9/15 (0) | 2007/09/23 |
| Continuous Integration by Martin Fowler 8/15 (0) | 2007/09/23 |
| Continuous Integration by Martin Fowler 7/15 (0) | 2007/09/20 |
| 『찰스 페졸드의 WPF』가 10월 1일 출간됩니다. (2) | 2007/09/18 |


