IT

[SpringBoot] 테스트 개념과 종류

data-cloud 2025. 1. 24. 00:30
반응형

 

🌱 테스트란?

테스트란 개발자가 작성한 코드가 의도된 대로 정확히 작동하는지 검증하는 절차이다.

 

 

 

🌱 테스트 코드를 작성해야 하는 이유

  • 개발 과정 중 예상치 못한 문제를 미리 발견할 수 있다.
  • 작성한 코드가 의도한 대로 작동하는지 검증할 수 있다.
  • 코드 수정이 필요한 상황에서 유연하고 안정적인 대응할 할 수 있게 해 준다.
  • 리팩토링 시 기능 구현이 동일하게 되었다는 판단을 내릴 수 있다.
  • 문서로서의 역할이 가능하다.

 

 

 

🌱 테스트 종류

테스트는 크게 Unit Test(단위 테스트) Integration Test(통합 테스트)로 나눌 수 있다.

Unit Test(단위 테스트)는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다.
여기서 모듈은 애플리케이션에서 작동하는 하나의 기능 또는 메서드로 이해할 수 있다. 예를 들어 웹 애플리케이션에서 로그인 메서드에 대한 독립적인 테스트가 1개의 단위 테스트가 될 수 있다.
즉, 단위 테스트는 애플리케이션을 구성하는 하나의 기능, 하나의 함수가 올바르게 동작하는지를 독립적으로 테스트하는 것으로, 각각의 조건에 대한 유효성을 검증한다.

Integration Test(통합 테스트)는 모듈을 통합하는 과정에서 서로 다른 모듈 혹은 클래스 간 상호작용의 유효성을 검증하는 테스트이다.
일반적으로 애플리케이션은 여러 개의 모듈들로 구성되고, 모듈들끼리 상호작용을 하며 기능을 수행한다. 그렇기에 통합된 모듈들이 올바르게 연계되어 동작하는지 검증이 필요한데, 이러한 목적으로 진행되는 테스트가 통합 테스트이다.
또한 통합 테스트는 각 모듈에 대한 설정 또는 테스트를 하기 위해 사전 조건이 필요한 경우가 있기 때문에 단위 테스트보다 테스트 코드를 작성하기가 복잡하다. 하지만 단위 테스트보다 더 넓은 범위의 종속성까지 테스트함으로써 단위 테스트보다 좀 더 유의미한 테스트가 되는 경우도 많다.

 

반응형

 

🌱 테스트별 장·단점

Unit Test(단위 테스트)

  • 장점
    - WebApplication 관련된 Bean들만 등록하기 때문에 통합 테스트보다 빠르다.
    - 통합 테스트를 진행하기 어려운 테스트를 진행 가능하다.

  • 단점
    - 요청부터 응답까지 모든 테스트를 Mock 기반으로 테스트하기 때문에 실제 환경에서는 제대로 동작하지 않을 수 있다.

 

 

Integration Test(통합 테스트)

  • 장점
    - 스프링 부트 컨테이너를 띄워 테스트하기 때문에 운영환경과 가장 유사한 테스트가 가능하다.
    - 전체적인 Flow를 쉽게 테스트할 수 있다.

  • 단점
    - 애플리케이션의 설정, 모든 Bean을 로드하기 때문에 시간이 오래 걸리고 무겁다.
    - 테스트 단위가 커 디버깅이 어렵다.

 

 

 

 

 

References.

1. ㄹㅇㅈ - Test:: Test Code는 도대체 왜 작성해야 하는가
2. HANAMON - 테스트 코드 작성의 중요성
3. newwisdom's log - 통합 테스트 VS 단위 테스트

 

반응형