예전에 학교 홈페이지 개발실에서 일할 때는 주로 PHP나 ASP로 프로그래밍을 했습니다. 작은 단위의 시스템에 적용할 수 있는 가장 가벼운 개발 방법인 model-1으로 말이죠. 하나의 php 함수에서 파라미터 처리와 데이터 조작, 출력화면 구성까지 모든 걸 다 합니다. php 프로그램의 가장 작은 단위를 함수로 생각해 본다면 기능 단위와 구현 단위가 함수 하나로 동일한 경우이죠. 단위 테스트와 시스템 테스트를 거의 동일하게 화면에서 버튼을 눌러보고 반응을 살펴보는 방식으로 하게 됩니다. 구현의 최상위 수준(UI)부터 최하위 수준(데이터)까지 버무려져 있다고 볼 수 있겠습니다.
출근길에 지금 만들고 있는 애플리케이션에 어떻게 자동화 테스트를 할까 고민하다가 저런 생각이 들었습니다. CI 책에서의 가르침에 따르자면 단위 테스트는 (자바를 기준으로) 최소한의 의존성을 가진 클래스 단위로, 단위 테스트의 상위 레벨인 컴포넌트 테스트는 아직 어떤건지 감이 오지 않습니다. 시스템 테스트는 최상위~최하위, 외부 의존성까지 포함하여 테스트하는 것이라고 합니다.
결국 구현하려는 시스템을 어떻게 나누고 구성하는지에 따라서 테스트할 수 있는 방법도 결정된다고 생각해 볼 수 있겠습니다. 구현 단위를 명확히 구분할 수 있고 시스템의 계층화가 잘 되어 있다면 테스트를 구성할 수 있는 방법도 역시 다양하고 보다 쉽게 자동화시킬 수 있을 것입니다.
어떻게 시스템을 구성해야 할까? 는 별도의 문제인 것 같습니다. 그것에 대한 용어도 많고 조언도 많고 방법도 많습니다. 나중에 직접 체험해 보며 따로 다뤄보겠습니다.
댓글 없음:
댓글 쓰기