좋은 테스트/나쁜 테스트


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

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

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

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

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

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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s