어떤 소프트웨어 구성요소가
재사용가능하다는 것과 테스트 가능하다는 것은 서로 동치이다.
즉, 어떤 소프트웨어가 재사용가능하다면
그에 대한 테스트를 만들 수 있으며,
어떤 소프트웨어에 대해 테스트를 만들 수 있으면,
그것은 재사용 가능하다.
역으로, 어떤 소프트웨어에 대해 테스트를 만들 수 없다면,
그것은 재사용 가능한 디자인이 아니라는 의미이며,
마찬가지로, 재사용을 할 수 없는 디자인이라면,
테스트도 만들 수 없는 것이 당연하다.
그러므로, 리팩토링을 함에 있어서
타당한 방향을 설정하기 위해서는
'이 리팩토링을 하고 나면 어떤 테스트를 만드는 것이 가능해지나?'
라는 물음에 대한 명쾌한 답을 할 수 있어야 한다.
테스트를 만들 수 없는 리팩토링은
단순한 코드의 재배치에 불과하여
실질적인 프로그램의 체질 개선에
큰 도움을 주지 못한다.