테스트 왜하냐

박세환·2020년 8월 16일
1
post-thumbnail

처음 개발을 할때 테스트를 왜 하나싶었다. 유닛테스트, 통합테스트, 종단테스트 등등 이미 배울것도 많고 바빠죽겠어서 그냥 하기싫었다. 그거 배울시간에 좀더 코드를 안전하고 완성도있게 작성하는게 훨씬 효과적일거라생각했다.

하지만 회사에 들어가고 실제 제품운영에 참여 해보면서 나는 갈수록 테스트성애자가 되었다.

불확실성(uncertainty)

  • 개발자는 항상 새로운것을 개발한다
  • 개발 스펙, 고객의 요구조건은 변한다
  • 개발후에는 유지보수가 필요하다
  • 주변 환경은 변한다(시간, 자원, 외부 라이브러리 등)

소프트웨어제품 개발에서 가장 위협이되는 이 불확실성을 낮추기위해서는,

  • 문제를 인식할수있는 시간
  • 문제를 예측할수있는 지식

이 두가지 핵심 요소가있다.
이중 '지식'을 증가시키기 위해서는 물론 공부가 중요하겠지만,
에자일의 핵심 가치인 '협력'과 '피드백'도 핵심 방법이다.

여기서 우리가 테스트를 작성했을때, 불확실성을 줄이는 핵심중 하나인 '피드백'을 테스트로부터 아주 빠르고, 지속적으로 받을수있다.

또한, 테스트는 협력을 용이하게만든다.

  it('비로그인상태에서 결제시도한후 결제가 거부된다', () => {
    test.purchase({isLoggedIn: false});
    test.should(error, "비로그인");
  })

위 코드에서 볼 수 있듯 테스트코드는 어떤행동을 코드로 정의한것이기때문에 테스트코드로 행동을 전달할수있고, 공유하기 쉬워진다.

위처럼 테스트는 즉각적인 피드백과, 적은 협력 비용으로 불확실성을 감소하게한다.

테스트를 하게되면 개발시간이 무조건, 심하게는 두배이상 늘어나게된다. 하지만 결과론적으로는 버그와 협력비용이 줄어 이득이라 볼수있다.

0개의 댓글