아이템 10 단위 테스트를 만들어라
- 코드를 안전하게 만드는 궁극적인 방법은 다양한 종류의 테스트를 하는 것이다.
- 단위 테스트는 개발자가 작성하며, 개발자에게 유용한 빠른 피드백을 받을 수 있는 테스트다.
- 단위 테스트로 일반적으로 다음 내용을 확인한다.
- 일반적인 유스케이스(happy path라고 표현)
- 일반적인 오류 케이스와 잠재적인 문제
- 에지 케이스와 잘못된 아규먼트
- 테스트는 계속 축적되기에 회귀 테스트도 쉽다.
- 회귀 테스트 - 기존 누적 테스트 케이스를 기반으로 전체 또는 부분을 반복적으로 테스트하는 것
- 단위 테스트의 장점
- 테스트가 잘 된 요소는 신뢰할 수 있어 해당 작업에 자신감이 생긴다.
- 테스트가 잘 만들어져 있다면 리팩터링이 두렵지 않다.
- 수동 테스트를 하는 것 보다 단위 테스트로 확인하는 것이 빠르다.
- 단위 테스트의 단점
- 단위 테스트를 만드는 데 시간이 걸린다. 다만 장기적으로 좋은 단위 테스트는 디버깅 시간을 줄여준다.
- 테스트를 활용할 수 있게 코드를 조정해야 한다.
- 좋은 단위 테스트는 만드는 작업은 꽤 어렵다.
- 단위 테스트를 잘 하려면 다음을 잘 알고 있어야 한다.
- 복잡한 부분
- 계속해서 수정이 일어나고 리팩터링이 일어날 수 있는 부분
- 비즈니스 로직 부분
- 공용 API 부분
- 문제가 자주 발생하는 부분
- 수정해야 하는 프로덕션 버그