[스프링 로드맵] F-1. 테스트란

2026. 1. 20. 16:12·백엔드

스프링 프로젝트를 처음 만들면 보통 이런 흐름이다.

  • API 만들고
  • Swagger로 요청 보내보고
  • Postman에서 정상 응답 나오면

그런데 프로젝트 규모가 조금만 커지거나, “이 코드를 남에게 보여줘야 하는 순간”부터 문제가 생긴다.

이 글에서는 Spring에서 테스트가 왜 필요한지 어떤 테스트들이 있고 어디까지 하면 충분한지를 정리한다.


1. Swagger만으로는 왜 부족한가?

Swagger는 테스트 도구가 아니라 문서 + 수동 검증 도구다.

Swagger로는 다음까지만 확인 가능하다.

  • 요청을 보내면 응답이 오는지
  • HTTP 상태 코드가 맞는지
  • 대략적인 JSON 구조

하지만 아래는 보장하지 못한다.

  • 코드 수정 후 기존 기능이 깨지지 않았는지
  • 검증(@Valid)이 정확히 동작하는지
  • 예외 상황에서 서비스 로직이 호출되지 않았는지
  • DB 트랜잭션이 안전하게 동작하는지

Swagger = 지금 당장 동작 확인

Test = 미래의 변경까지 포함한 안전장치


2. 테스트를 하는 이유

보통 이런 상황이 반복된다.

  • 기존 코드 수정
  • 기능 하나 추가
  • 버그 하나 수정

이때마다 매번 Swagger로 모든 API를 다시 눌러볼 수는 없다.

이런 작업이 쌓이다 보면, 변경한 코드 때문에 기존 기능이 영향을 받지 않았는지를 매번 직접 확인하기가 점점 부담이 된다.

그래서 이 코드가 바뀌어도 기존 기능이 깨지지 않는다는 증거로 테스트를 해야한다.

특히 의미있는 건

  • 테스트를 많이 작성하는 것 ❌
  • 테스트를 의미 있게 선택하는 것 ⭕

3. Spring 테스트 종류 한 번에 정리

Spring에서 자주 나오는 테스트들을 간단히 정리하면 아래와 같다.

1) Unit Test

  • 특정 클래스/메서드 단위 테스트
  • Mockito 위주
  • 순수 로직 검증용

👉 선택사항

2) WebMvcTest

  • Controller 계층 테스트
  • MockMvc 사용
  • 요청 / 검증 / 응답 코드 확인

👉 필수에 가까움

3) SpringBootTest

  • 스프링 컨텍스트 전체 로딩
  • Service + Repository + DB 연동
  • 통합 테스트

👉 “이 프로젝트는 실제로 돌아간다”는 증명

4) DataJpaTest

  • Repository(JPA) 전용 테스트
  • 쿼리 검증에 특화

👉 포트폴리오 가성비는 낮음

5) E2E 테스트

  • 실제 서버 띄우고 전체 흐름 테스트
  • 비용 높음

👉 초보 단계에서는 과하다고함


4. 내가 선택한 테스트

테스트도 코드고, 유지보수 비용이다. 모든 테스트를 다 만드는 건 오히려 비효율이다.

 

✅ WebMvcTest 1개

  • 컨트롤러 요청/검증/응답 확인
  • 잘못된 요청에서 서비스가 호출되지 않는지 검증

👉 HTTP 계층 안정성 확보

 

✅ SpringBootTest 1개

  • H2 DB 사용
  • 실제 서비스 로직 + 트랜잭션 검증
  • @Transactional로 롤백

👉 비즈니스 로직 신뢰성 확보

 

❌ DataJpaTest 제외

  • Repository 테스트는 Service 테스트에 포함됨
  • 테스트 중복 대비 효율 낮음

👉 포트폴리오 가성비 관점에서 제외

 

출처:

https://docs.spring.io/spring-framework/reference/testing.html

https://www.baeldung.com/spring-boot-testing

 

'백엔드' 카테고리의 다른 글

[스프링 로드맵] E-2. 전역 예외 처리 - 에러 코드와 로그 기준  (0) 2026.01.20
[스프링 로드맵] E-1. 전역 예외 처리 기본 - 응답을 하나로 묶는 이유  (1) 2026.01.20
[스프링 로드맵] D-2. Validation 응답 설계 - BindingResult vs 예외 처리  (0) 2026.01.20
[스프링 로드맵] D-1. Validation 기본 - DTO 검증이 필요한 이유  (0) 2026.01.20
[스프링 로드맵] C-3. Repository 실전 - JpaRepository가 해주는 것들  (1) 2026.01.19
'백엔드' 카테고리의 다른 글
  • [스프링 로드맵] E-2. 전역 예외 처리 - 에러 코드와 로그 기준
  • [스프링 로드맵] E-1. 전역 예외 처리 기본 - 응답을 하나로 묶는 이유
  • [스프링 로드맵] D-2. Validation 응답 설계 - BindingResult vs 예외 처리
  • [스프링 로드맵] D-1. Validation 기본 - DTO 검증이 필요한 이유
samsam031
samsam031
samsam031 님의 블로그 입니다.
  • samsam031
    samsam031 님의 블로그
    samsam031
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 디지털포렌식
      • 드림핵 문제풀이
      • 대외활동
      • 개발 실습
      • 컴퓨터 보안
      • 클라우드
      • 자격증
      • 자연어처리
      • 백엔드
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
samsam031
[스프링 로드맵] F-1. 테스트란
상단으로

티스토리툴바