워밍업 클럽 4기 - 백엔드 Day 16

워밍업 클럽 4기 - 백엔드 Day 16

수정내역

  • 썸네일 추가

과제

1. Persistence Layer

데이터를 읽고 쓰는 기능, 즉 DB와 직접 연결되는 창구 역할을 합니다.
데이터 저장, 조회, 수정, 삭제 같은 순수한 CRUD 작업만 담당해야 하며, 복잡한 계산이나 로직은 포함되면 안 됩니다.

어떻게 테스트?

  • JPA 기반의 Repository를 중심으로 테스트합니다.

  • @ActiveProfiles를 사용해 테스트 전용 DB를 따로 두어 테스트

  • 실제 데이터를 저장하고 불러오면서 동작을 검증합니다.

  • 예: 특정 조건으로 조회 시 원하는 값이 정확히 나오는지 확인

     

  • @DataJpaTest 사용시 자동으로 롤백 (@Transactional)

포인트

  • 빠르게 테스트하고 싶으면 @DataJpaTest

  • 순수하게 CRUD에 집중해야 하므로, 로직이 들어있다면 오히려 잘못된 구조일 수 있음


2. Business Layer

비즈니스 로직을 담는 곳입니다.
예를 들어 “결제를 하면 재고가 줄어야 한다” 같은 업무 흐름을 구현하는 레이어며

트랜잭션 보장과 동시성을 고민해야한다.

어떻게 테스트?

  • @SpringBootTest 또는 @ServiceTest 등으로 전체 흐름을 확인할 수 있는 환경 구성

  • 필요한 데이터는 테스트 전 직접 저장하거나 Mock 처리

  • 경계값 테스트

  • given-when-then 구조로 시나리오 기반 테스트 작성

포인트

  • 이 레이어는 트랜잭션이 중요한 레이어이므로, 롤백 여부도 테스트 대상

  • 핵심은 “이 비즈니스 흐름이 내가 기대한 대로 잘 작동하느냐”임


3. Presentation Layer

웹 요청(HTTP 등)을 처음으로 받아들이는 입구입니다.
컨트롤러에서 파라미터를 검증하고, 서비스에 요청을 위임하며, 응답을 구성합니다.
즉, 입력과 출력의 인터페이스 역할을 합니다.

어떻게 테스트?

  • 단위 테스트처럼 접근

  • 컨트롤러만 띄우고, 내부 서비스나 레포지토리는 Mock 처리

  • MockMvc, @WebMvcTest 등을 이용해 REST API 요청/응답을 검증

    • validation, 상태 코드, JSON 응답 구조를 확인

포인트

  • 복잡한 로직보다 “입력값에 따라 어떤 응답이 나오는가”에 집중

  • 실제 호출 흐름이 아니라 API 인터페이스가 잘 동작하는지만 보자


과제 회고

각 레이어마다 역할이 다르기 때문에,
그에 맞는 테스트 전략과 도구도 달라져야 한다는 걸 이번에 확실히 느꼈습니다.

  • Persistence는 DB를 잘 다루는지

  • Business는 로직 흐름이 맞는지

  • Presentation은 입력과 출력이 잘 연결되는지

댓글을 작성해보세요.

채널톡 아이콘