
워밍업 클럽 3기 BE 클린코드&테스트 - Day16 미션
Layered Architecture
Layered Architecture는 소프트웨어의 기능을 계층별로 분리하여 설계하는 방식으로 모듈화
와 관심사
의 분리를 통해 유지보수성과 확장성을 높이는 데 중점을 둡니다. 각 레이어는 특정 역할을 수행하며 상위 및 하위 레이어와 제한적으로 상호작용합니다. 아래는 주요 레이어의 특징과 테스트 작성법을 정리한 내용입니다.
Presentation Layer
특징
사용자 인터페이스(UI)와 사용자 상호작용을 담당합니다.
RESTful API를 통해 클라이언트와 데이터를 주고받으며 요청을 처리하고 응답을 반환합니다.
비즈니스 로직이나 데이터 저장소에 대한 세부사항은 알 필요가 없습니다.
테스트
REST 컨트롤러가 올바르게 요청을 처리하고 응답을 반환하는지 검증합니다.
@WebMvcTest, @MockitoBean, MockMvc를 사용하여 HTTP 요청/응답 시뮬레이션이 가능합니다.
Presentation Layer와 Business Layer 간의 상호작용이 예상대로 이루어지는지 확인합니다.
실제 API 호출을 통해 전체 흐름을 검증할 수 있습니다.(Postman 활용)
전체 애플리케이션이 사용자 관점에서 올바르게 동작하는지 확인합니다. (API 흐름 검증)
Business Layer
특징
애플리케이션의 핵심 비즈니스 로직과 규칙을 처리합니다.
데이터 변환, 계산, 유효성 검증 등을 수행하며 Persistence Layer와 상호작용합니다.
외부 API 호출이나 복잡한 비즈니스 프로세스를 관리합니다.
테스트
비즈니스 로직이 올바르게 작동하는지 검증합니다.(예: 주문 상태 변경, 합계 계산 등)
Persistence Layer와 상호작용하며 데이터 흐름이 올바르게 이루어지는지 확인합니다.
Spring Boot Test를 사용해 실제 환경과 유사한 통합 테스트를 수행합니다.
Persistence Layer
특징
데이터 저장 및 검색을 담당하며 데이터베이스와 직접 상호작용합니다.
DAO(Data Access Object) 또는 Repository 패턴을 사용하여 데이터 접근 로직을 캡슐화합니다.
비즈니스 로직에서 데이터베이스 세부사항을 숨기고 추상화된 인터페이스를 제공합니다.
테스트
DAO/Repository 클래스의 메서드가 올바르게 동작하는지 검증합니다.
H2와 같은 In-Memory 데이터베이스를 사용하여 실제 DB 연결 없이 테스트를 수행합니다.
@DataJpaTest 어노테이션 활용
댓글을 작성해보세요.