워밍업 클럽 4기 - 백엔드 3주차 회고

워밍업 클럽 4기 - 백엔드 3주차 회고

수정내역

  • 썸네일 추가

3주차 회고

 

강의 수강

레이어드 아키텍처와 계층별 테스트 전략

이번 주에는 Spring 기반의 레이어드 아키텍처 구조를 중심으로,
Persistence / Business / Presentation Layer 각각의 책임과 역할을 이해하고
이에 적절한 단위 및 통합 테스트를 직접 구성해보는 학습을 진행했습니다.


1. Persistence Layer 테스트

Persistence Layer는 애플리케이션의 가장 하단에서 데이터 접근(CRUD)만을 책임지는 레이어(data access의 역할)
비즈니스 로직은 이 레이어에 포함되지 않아야 하며, 주로 JPA 기반 Repository를 테스트 대상으로 삼습니다.

  • 사용 기술: Spring Data JPA, @DataJpaTest

  • 테스트 대상: Repository + JPA 동작 확인

  • 특징

    • 실제 DB와 유사하게 동작하는 경량 통합 테스트 수행

    • DB 변경 없이 테스트 가능 (자동 롤백)

       


2. Business Layer 테스트

Business Layer는 도메인의 핵심 로직을 처리하는 계층으로, 서비스 클래스가 주를 이룹니다.
Persistence Layer와 상호작용하며 트랜잭션을 보장하는 것이 중요합니다.

  • 테스트 대상: Service 클래스, 로직 흐름

  • 사용한 테스트 기법

    • given-when-then 패턴

       

  • 검증 내용:

    • 입력에 따라 기대하는 응답이 나오는지

    • 트랜잭션 롤백이 제대로 작동(@Transactional

      )

  • @SpringBootTest, @DataJapTest차이 DataJpaTest 는 트랜잭션 어노테이션이 있어 자동 롤백


 

3. Presentation Layer 테스트

Presentation Layer는 외부 요청(HTTP 등)을 가장 먼저 받는 계층으로,
파라미터 검증이나 라우팅 처리 등의 역할을 담당합니다.

  • 테스트 방식: 컨트롤러 단위 테스트 + 나머지 계층은 Mocking

  • 학습한 포인트:

    • @Transactional(readOnly = true)를 클래스 단에 선언하여 조회 메서드는 최적화

    • CUD 작업은 개별 메서드에 @Transactional을 덮어써 트랜잭션 활성화

    • 동시성 이슈를 고려한 설계 및 분리

 


4. 테스트 환경 구성

  • application.yml을 통해 프로파일(local/test) 분리

  • 테스트 환경에 따라 다른 DB, 포트, 설정이 적용되도록 구성

  • 테스트 도중 DB 변경 방지를 위해 자동 롤백 + @AfterEach 정리 수행

어노테이션역할@SpringBootTest전체 애플리케이션 컨텍스트 로딩@DataJpaTestJPA 관련 빈만 주입, 빠른 테스트 가능


미션

 

회고

이번 주는 단순히 테스트 코드를 작성하는 것이 아니라
각 계층의 역할에 맞춘 책임 분리와 테스트 전략 수립의 중요성을 몸소 느낄 수 있던 시간이었다.

특히 레이어드 구조를 이해하고,

  • Persistence는 데이터 검증에만 집중하고

  • Business는 로직 흐름과 트랜잭션을,

  • Presentation은 외부 입력에 대한 응답 및 검증에만 집중하는
    테스트의 방향성과 목적을 처음 명확히 잡아볼 수 있었다.

이번에는 회사 출근과 프로젝트가 야간근무도 몰려서 많은 정리를 못해서 중구난방이라

아직 잘 이해를 못한 점이 많다.

더 한번더 복습이 필요하다.

댓글을 작성해보세요.

채널톡 아이콘