왜 테스트를 작성하는가?
개발자가 테스트 작성해야 하는 이유
제품 품질
•
개발자는 작성한 프로그램의 퀄리티에 대한 책임이 있음
•
QA에 넘기기 전에 기본 요구사항을 모두 만족하는지에 대한 검증은 개발자가 해야 함
•
자동화된 테스트를 작성해 두지 않으면, 어플리케이션이 복잡해질 수록 테스트 비용이 증가함
•
이 경우 개발 기간이나 인력 등은 한정되어 있기 때문에, 테스트를 소홀히 하게 되는 경우가 많음.
•
그렇지 않은 경우 QA 와의 커뮤니케이션 비용이 늘어나, 업무 효율이 떨어지게 됨
코드 품질
•
코드 품질을 위해서는 계속해서 리팩토링 등의 개선 작업이 필요
•
이 과정에서 기존에 잘 동작하던 프로그램을 망칠 수 있기 때문에 적극적으로 코드를 개선하지 않게 됨
•
신뢰할 수 있는 자동화된 테스트가 있으면 적극적으로 코드를 개선할 수 있음
두려움(Fear) -> 자신감(Confidence)
통합 테스트를 하는 이유
테스팅 ROI (투자 수익률)
테스트 코드 작성과 유지보수는 비용이다
•
테스트가 없는 것보다는 있는 게 무조건 낫다?
•
테스트는 많을 수록 좋다?
•
불필요한 테스트나 잘못 짜여진 테스트는 차라리 없는게 나음
비용 대비 효과가 충분한가?
•
테스트를 작성하는 비용에 비해 얻을 수 있는 효과가 더 큰가가 중요
•
로직이 거의 없는(trivial) 코드는 따로 테스트하지 않아도 됨
◦
동어 반복적인 테스트를 피하자
•
테스트 범위에 대한 조절이 필요 (단위 테스트 vs 통합 테스트 vs E2E 테스트)
◦
모든 모듈에 대해 단위 테스트를 작성하는 것은 비효율적
◦
모든 테스트 케이스를 E2E 테스트로만 검증하는 것도 비효율적
커버리지 100%를 목표로 하는 것은 비효율적
•
라이브러리 등은 100% 커버리지 가능
•
복잡한 어플리케이션의 경우 적절한 선을 잘 찾는 것이 중요
테스팅 도구와 테스팅 방법론은 아직 성숙한 상태가 아님
•
특정 방법론이나 도구에 집착하지 말 것
•
발전하는 테스팅 도구들을 눈여겨 볼 필요도 있음