어떤 소프트웨어 구성요소가

재사용가능하다는 것과 테스트 가능하다는 것은 서로 동치이다.


즉, 어떤 소프트웨어가 재사용가능하다면

그에 대한 테스트를 만들 수 있으며,

어떤 소프트웨어에 대해 테스트를 만들 수 있으면,

그것은 재사용 가능하다.

역으로, 어떤 소프트웨어에 대해 테스트를 만들 수 없다면,

그것은 재사용 가능한 디자인이 아니라는 의미이며,

마찬가지로, 재사용을 할 수 없는 디자인이라면,

테스트도 만들 수 없는 것이 당연하다.


그러므로, 리팩토링을 함에 있어서

타당한 방향을 설정하기 위해서는

'이 리팩토링을 하고 나면 어떤 테스트를 만드는 것이 가능해지나?'

라는 물음에 대한 명쾌한 답을 할 수 있어야 한다.


테스트를 만들 수 없는 리팩토링은

단순한 코드의 재배치에 불과하여

실질적인 프로그램의 체질 개선에

큰 도움을 주지 못한다.

imcgames 의 김학규입니다