TDD
TDD란?

실패하는 테스트 작성 (Red) → 테스트를 통과하기 위해
하지만 빠르게 코드를 작성 (Green) → 테스트 통과 후 엉망진창인 코드를 개선한다. (Refactor)
장점
-
테스트가 개발을 주도한다.
-
지속적인 코드 정리
-
빠른 피드백
-
테스트를 통과할 만큼만 코드 작성
- 오버엔지니어링(미래의 쓸 수도 있을 법한 코드를 미리 작성) 방지
-
일부 설계 진행

테스트 종류

- UI(e2e) : 사용자가 처음부터 끝까지 사용한다는 전제의 테스트 (통합)
- 모든 시스템이 연동 및 실행이 됨을 보장(확신)
- 테스트 범위가 넓다.
- 대부분 UI 테스트는 적게 만든다.
- 단위 : 클래스, 메서드 단위로 테스트
- 아주 작은 범위만 테스트 가능
- 실행 속도 빠름 (db 연동, api 호출 등 하지 않기 때문에)
- 대부분 단위 테스트를 많이 만든다.
원칙
- 실패하는 단위 테스트를 작성할 때까지 구현 코드를 작성하지 않는다.
- 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
- 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.