애플리케이션의 품질과 안정성을 높이기 위해
사전에 결함을 찾아내고 수정하기 위한 행위
테스트는 주로 특정 모듈(컴포넌트)이 사양에 잘 동작하는지 검증
테스트 코드의 효과
- 좋은 설계에 대한 사고를 도와준다.
- 테스트 코드를 작성할 때 테스트 코드를 독립적으로 작성할 수 있도록 결합도를 낮추도록 설계하여 작성 가능
- 의미 있는 컴포넌트 단위로 분리가 가능하도록 설계
- 테스트 코드를 기반으로 빠르고 안정적이게 리팩토링 할 수 있다.
- 리팩토링: 결과의 변경 없이 코드의 구조를 수정
- 좁은 범위를 개선 하고 테스트를 한다면 문제를 발견하기가 훨씬 쉽다.
- 애플리케이션 기능의 이해를 돕는 문서가 된다.
올바른 테스트 작성을 위한 규칙
- 인터페이스를 기준으로 테스트를 작성해야 한다.
- 내부 구현에 대한 테스트는 캡슐화를 위반하여 좋지 않은 테스트
- 컴포넌트 단위로 테스트하되 내부 구현사항은 최대한 테스트를 하지 않는 것이 좋다.
- 커버리지를 늘리기 보다는 의미 있는 테스트인지 고민해야 한다.
- 커버리지: 테스트 코드가 애플리케이션 코드의 몇 %를 검증하고 있는지 나타내는 지표
- 단순한 UI 렌더링 하는 컴포넌트, 억지로 실패하게 만들지 않는한 실패하지 않는 간단한 함수는 커버리지만을 늘리는 테스트코드가 된다.
- 가독성을 높여야 한다.
- 테스트 하고자 하는 내용을 명확하게 적어야 한다.
- 하나의 테스트에서는 하나의 동작만 검증해야 한다.(SRP원칙)