
워밍업 클럽 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
전체 애플리케이션 컨텍스트 로딩@DataJpaTest
JPA 관련 빈만 주입, 빠른 테스트 가능
미션
회고
이번 주는 단순히 테스트 코드를 작성하는 것이 아니라
각 계층의 역할에 맞춘 책임 분리와 테스트 전략 수립의 중요성을 몸소 느낄 수 있던 시간이었다.
특히 레이어드 구조를 이해하고,
Persistence는 데이터 검증에만 집중하고
Business는 로직 흐름과 트랜잭션을,
Presentation은 외부 입력에 대한 응답 및 검증에만 집중하는
테스트의 방향성과 목적을 처음 명확히 잡아볼 수 있었다.
이번에는 회사 출근과 프로젝트가 야간근무도 몰려서 많은 정리를 못해서 중구난방이라
아직 잘 이해를 못한 점이 많다.
더 한번더 복습이 필요하다.
댓글을 작성해보세요.