좋은 테스트/나쁜 테스트


단위 테스트의 장점: 잠시 손을 멈추고 테스트에 대해 생각하게 만든다

이런 질문을 자신에게 하게 된다.

  • 이걸 어떻게 테스트하지?
  • 어떤 종류의 테스트를 해야 하지?
  • expected result가 뭐지?
  • 흔하지는 않지만 발생할 수 있는 예외가 있는가?
  • 어떤 종류의 시스템 오류를 발생시킬 수 있는가?
  • 이 코드에는 외부 의존성이 얼마나 있지?

단위 테스트를 통해 프로그램이 올바르게 동작하는 것을 보장하지는 않음. 단지 위의 질문을 통해 보다 옳은 방향이 되도록 인도한다는 것일 뿐.

단위테스트를 너무 철저하게 하는 것도 문제다. 단위 테스트를 너무 철저하게 하면 코드 수정시에 문제가 발생한다. 리팩토링을 하게 되면 지금껏 했던 단위테스트를 모두 버려야 할 수도 있다. 그렇다고 리팩토링을 하지 않느냐? 그것도 쉽지 않다. 코드 개선은 지속적으로 이루어져야 한다. 그럼 어느 수준으로 단위테스트를 해야 할까? 이 부분에 있어서 적절한 지점을 찾는 것은 쉬운일이 아니다.

그래서 내 개인적인 생각으로는 public interface의 경우에는 철저하게 고민하고 가급적 변경하지 않도록 해야 한다. 충분히 고민할 시간적 여유가 있어야 한다. interface만 unit test하도록 하는 정도가 적당하지 않을까 싶다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중