[TIL] spring-boot-starter-validation, 테스트 코드 모니터링 툴

2025-05-12 TIL

📝 TIL (Today I Learned)
🔗 원본 이슈: #56
📅 작성일: 2025-05-12
🔄 최종 수정: 2025년 05월 22일


🍀 새롭게 배운 것

  • spring-boot-starter-validation
  • 테스트 코드 모니터링 툴

1️⃣ spring-boot-starter-validation

Spring Boot에서 사용자 입력 값(요청 바디 등)을 검증할 수 있게 해주는 의존성 패키지 내부적으로는 javax.validation (JSR-380)이나 jakarta.validation API를 기반으로 동작

  • 주로 아래와 같은 상황에 동작
    • 사용자가 회원가입을 할 때
    • 게시글을 작성할 때
    • 비밀번호 변경할 때 등

프론트엔드에서 필터링한다고 해도, 백엔드에서는 무조건 검증이 필요

  • 신뢰할 수 없는 요청이나 보안 위험을 방지하기 위해서 (프론트는 우회가 가능하므로) 백엔드 검증은 필수!
  • 검증 애너테이션
    • @NotNull, @NotBlank, @Size, @Email, @Min, @Max
  • 검증 실패 시
    • @ControllerAdvice@ExceptionHandler를 이용해 에러 메시지 사용

1. 의존성 추가 (build.gradle)

implementation 'org.springframework.boot:spring-boot-starter-validation'

2. DTO 클래스에 검증 어노테이션 달기

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

public class SignupRequestDto {

    @NotBlank(message = "이메일은 필수입니다.")
    private String email;

    @Size(min = 8, message = "비밀번호는 최소 8자 이상이어야 합니다.")
    private String password;

    // getter, setter
}

3. Controller에서 검증 처리

@PostMapping("/signup")
public ResponseEntity<?> signup(@Valid @RequestBody SignupRequestDto request) {
    // 통과 시 로직 실행
}
  • @Valid가 붙은 객체에서 문제가 발생하면 자동으로 400 에러 발생.
  • 에러 메시지는 @ControllerAdvice를 통해 커스터마이징도 가능.

2️⃣ 테스트 코드 모니터링 툴

“테스트 코드의 품질과 실행 현황을 시각적으로 분석/모니터링하는 도구” 즉, 테스트가 얼마나 잘 되어 있는지 **“숫자와 그래프”**로 보여주는 도구

  • 테스트 코드가 있다고 해도, **정말 전체 코드를 잘 테스트하고 있는지는 모름
  • 그래서 “코드 커버리지”, “테스트 성공률”, “실행 시간” 같은 걸 측정해서 모니터링할 수 있어야 한다.
    • 커버리지
      • 코드의 품질과 신뢰성을 수치로 확인할 수 있는 지표
      • 단순히 테스트를 작성하는 것보다, 커버리지를 보면서 blind spot 없이 테스트하는 게 중요!
  • 🔧 대표적인 도구들 | 도구 | 설명 | | ———————- | ———————————– | | JaCoCo | Java 프로젝트에서 가장 널리 쓰이는 코드 커버리지 측정 도구 | | SonarQube | 코드 품질, 보안 취약점, 커버리지까지 통합 분석 | | IntelliJ 자체 기능 | 실행 후 커버리지를 하이라이팅으로 보여줌 | | Codecov, Coveralls | GitHub Actions와 연동해 커버리지 리포트 자동화 |