직교성과 테스트

Posted by epicdev Archive : 2011. 10. 1. 13:24
직교적으로 설계, 구현한 시스템은 테스트하기 더 쉽다. 시스템 컴포넌트 간의 상호작용이 형식화되고 제한되었기 때문에 시스템 테스트의 더 많은 부분을 각각의 모듈 수준에서 수행 할 수 있기 때문이다. 이는 모듈 수준의 테스트가 통합 테스트보다 테스트케이스를 만들고 수행하기 훨씬 쉽다는 점에서 좋은 소식이라고 할 수 있다. 우리는 모든 모듈이 자신만의 단위 테스트를 위한 테스트케이스를 갖고, 테스트가 정규 빌드 과정의 일부로 수행되어야 한다고 생각한다.

단위 테스트를 만든다는 것 자체가 직교성을 테스트 해 볼 수 있는 흥미로운 작업이다. 단위 테스트를 빌드하고 링크하기 위해서는 어떤 작업이 필요한가? 시스템 나머지의 상당 부분을 끌어들여 테스트케이스를 만들고 컴파일 혹은 링크해야 하지는 않는가? 만약 그렇다면 이는 모듈과 시스템의 나머지 부분과의 결합도를 적절히 줄이지 못했다는 증거다.

버그 수정은 시스템의 직교성을 총체적으로 점검 해 볼 수 있는 값진 시간이다. 문제가 발생했다면 버그 수정이 얼마나 지역화 되어 있는지 평가해 보라. 모듈 하나만 변경하면 되는가? 변화가 시스템 전반에 걸쳐 분산되어 있지는 않은가? 수정을 했다면 모든 것이 제대로 고쳐졌는가? 수정이 끝난 후 생각지도 못 했던 곳에서 새로운 문제가 발생하지는 않는가? 만약 그렇다면 자동화에 집중 할 좋은 기회다. 만약 소스코드 관리 시스템을 사용한다면 버그를 수정하고 테스트를 마친 뒤 버그 수정에 대한 태그를 붙여라. 이렇게 하면 각 버그 수정에 의해 영향 받은 소스 파일의 개수에 대해 경향을 분석한 월 단위 리포트를 받아 볼 수 있을 것이다.


실용주의프로그래머
카테고리 컴퓨터/IT > 프로그래밍/언어
지은이 앤드류 헌트 (인사이트, 2007년)
상세보기