Layered Architecture 구조의 레이어별 특징과 테스트 작성법

 

1. 레이어별 특징

Presentation Layer

  • 외부 세계의 요청을 가장 먼저 받는 레이어로, 사용자나 외부 시스템과의 인터페이스 역할을 한다.

  • 클라이언트로부터 전달받은 데이터를 검증하고, 비즈니스 로직을 수행할 수 있도록 Business Layer로 전달한다.

  • 주로 요청 파라미터에 대한 최소한의 검증과 API 응답 형식을 처리한다.

Business Layer

  • 애플리케이션의 핵심 비즈니스 로직이 구현되는 레이어이다.

  • Persistence Layer와 상호작용하며 데이터 처리 및 트랜잭션을 보장한다.

  • 비즈니스 규칙에 따라 데이터를 가공하거나 처리하는 역할을 담당한다.

Persistence Layer

  • 데이터베이스와 직접적으로 상호작용하는 레이어로, 데이터 CRUD(Create, Read, Update, Delete) 작업에만 집중한다.

  • 비즈니스 로직이 포함되지 않으며, 순수하게 데이터 접근 및 저장소 관련 작업만 수행한다.

2. 테스트 작성법

Presentation Layer 테스트

  • 목적: 외부 요청에 대한 파라미터 검증과 컨트롤러 동작을 독립적으로 테스트한다.

  • 방법:

    • 하위 계층(Business Layer, Persistence Layer)은 @MockBean으로 모킹(mocking) 처리하여 독립적인 단위 테스트를 진행한다.

    • Spring MVC 테스트를 활용해 HTTP 요청 및 응답 흐름을 검증한다.

    • 예를 들어, 잘못된 파라미터가 전달되었을 때 적절한 에러 메시지가 반환되는지 확인한다.

Business Layer 테스트

  • 목적: 비즈니스 로직이 의도한 대로 동작하는지 검증하고, Persistence Layer와의 상호작용을 확인한다.

  • 방법:

    • 단위 테스트를 작성하여 특정 메서드의 동작을 검증한다.

    • Persistence Layer를 실제로 호출하지 않고, Mock 객체를 사용해 독립적으로 테스트할 수도 있다.

    • 통합 테스트 시에는 @SpringBootTest와 실제 DB를 활용하여 트랜잭션 롤백 기능으로 데이터를 정리하며 테스트를 진행한다.

Persistence Layer 테스트

  • 목적: SQL 쿼리가 제대로 동작하는지 검증하고, 데이터베이스와의 CRUD 작업이 정상적으로 수행되는지 확인한다.

  • 방법:

    • @DataJpaTest를 활용하여 인메모리 DB(H2 등)를 사용해 빠르게 검증한다.

    • 단위 테스트 성격을 가지며, Repository 계층에서 작성한 쿼리 메서드가 의도한 대로 동작하는지 확인한다.

    • 테스트용 프로필 설정과 초기 데이터 주입 설정을 활용하면 편리하다.

3. 테스트 방법 요약

레이어주요 특징테스트 방법Presentation외부 요청 처리 및 파라미터 검증MockBean으로 하위 계층 모킹 처리 후 단위 테스트 진행 (Spring MVC Test 활용)Business비즈니스 로직 구현 및 트랜잭션 보장단위 테스트 또는 통합 테스트 (@SpringBootTest)Persistence데이터 CRUD 작업@DataJpaTest와 인메모리 DB로 SQL 쿼리 및 CRUD 동작 검증

이처럼 각 레이어는 역할과 책임이 명확히 분리되어 있으며, 각 레이어에 맞는 적절한 테스트 전략을 적용함으로써 코드 품질과 유지보수성을 높일 수 있습니다.

 


 

출처 : https://inf.run/pZXb7

댓글을 작성해보세요.


채널톡 아이콘