워밍업 클럽 3기 BE 클린코드&테스트 - Day16 미션

워밍업 클럽 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 어노테이션 활용

댓글을 작성해보세요.

채널톡 아이콘