육각형 아키텍처의 각 요소 테스트 전략과 유형
7-1. 테스트 피라미드
- 만드는 비용이 적고, 유지보수하기 쉽고, 빨리 실행되고, 안정적인 작은 크기의 테스트들에 대해 높은 커버리지를 유지해야 한다. = 단위 테스트
- 테스트가 비싸질수록 테스트 커버리지 목표는 낮게 잡아야 한다.
- 기능 구현보다 테스트가 오래 걸릴 수도 있으므로
맥락에 따라 테스트 피라미드에 포함되는 계층은 달라질 수 있다.
육각형 아키텍처에서의 테스트 피라미드
- 단위 테스트
- 피라미드의 토대
- 한 클래스를 인스턴스화하고, 해당 클래스의 인터페이스를 통해 검증
- 테스트 중인 클래스(Class Under Test, CUT)가 다른 클래스를 의존한다면 모킹(mocking)한다.
- 통합 테스트
- 연결된 여러 unit을 인스턴스화하고, 시작점이 되는 클래스의 인터페이스로 데이터를 보낸 후 유닛들의 네트워크가 잘 작동하는지 검증
- 두 계층 간의 경계를 걸칠 수 있다.
- 시스템 테스트
- 특정 유스케이스가 전 계층에서 잘 동작하는지 검증
- 애플리케이션의 모든 객체 네트워크 가동
- E2E(end-to-end) 테스트
7-2. 단위 테스트로 도메인 엔티티 테스트하기
도메인 엔티티에 녹아 있는 비즈니스 규칙 검증
도메인 엔티티의 행동은 다른 클래스에 거의 의존하지 않기 때문에 다른 종류의 테스트는 필요하지 않다.
7-3. 단위 테스트로 유스케이스 테스트하기
Mocking