본문 바로가기
TIL

통합 테스트, 단위 테스트

by 스니펫 2023. 12. 4.

Q1)  통합 테스트와 단위 테스트의 차이점

단위 테스트는 전체 코드 중 작은 부분을 테스트하는 것으로 다른 컴포넌트들과 독립적인 반면, 통합 테스트는 단위 테스트와 달리 개발자가 변경할 수 없는 부분(ex. 외부 라이브러리)까지 묶어 검증할 때 사용한다. 

  • 단위 테스트 : 매우 간단하고 명확해야 하며 기본적으로 테스트를 위한 입력 값을 주어 그에 대한 함수의 출력 값이 정확 한지를 판단한다. 단일 서버 / 단일 프로세스 / 단일 쓰레드에서 돌아가는 테스트로, Disk I/O가 있어서는 안되고 Blocking call이 있어서도 안된다.
  • 통합 테스트 : 단일 서버 / 멀티 프로세스 / 멀티 쓰레드에서 돌아가는 테스트로, H2 같은 테스트용 DB를 사용할 수 있게 된다. DB에 접근하거나 전체 코드와 다양한 환경이 제대로 작동하는지 확인하는데 필요한 모든 작업을 수행할 수 있다.

Q2) 통합 테스트과 단위 테스트의 장/단점

통합 테스트

  • 장점 : 단위 테스트에서 발견하기 어려운 버그( 환경 버그  등 )를 찾을 수 있다. 
  • 단점 : 신뢰성이 떨어질 수 있고, 어디서 에러가 발생했는지 확인하기 쉽지 않아 유지보수가 힘들다.

단위 테스트

  • 장점 : 격리된 환경에서 개별적인 코드 단위를 테스트하므로 디버깅과 문제 해결이 쉽다. 코드의 특정 기능을 독립적으로 검증하므로 코드의 신뢰성을 높인다.
  • 단점 : 개별적인 코드 단위를 대상으로 하기에 시스템 전체적인 동작은 반영하지 않는다. 외부시스템이나 의존성에 대한 테스트를 제한적으로 수행하여 통합 이슈를 놓칠 수 있다.

Q3) 레이어별로 나누어서 Slice Test 를 하는 이유

Slice Test는 레이어별로 잘라서 레이어를 하나의 단위로 보는 단위 테스트를 하는 것이다. @SpringBootTest 어노테이션을 이용해 모든 테스트를 진행하지 않고 레이어별로 나누어 Slice Test를 하는 이유는 @SpringBootTest 어노테이션이 다음과 같은 단점을 가지기 때문이다. @SpringBootTest 어노테이션실제 구동되는 애플리케이션의 설정, 모든 Bean을 로드하기 때문에 시간이 오래걸리고 무거우며, 테스트 단위가 크기 때문에 디버깅이 어려운 편이고, 웹을 실행시키지 않고 테스트 코드를 통해 빠른 피드백을 받을 수 있다는 장점이 희석된다는 단점이 있다. 따라서 @SpringBootTest 어노테이션은 어플리케이션 컨텍스트 전체를 사용하는 통합 테스트에 사용돼야 한다.

'TIL' 카테고리의 다른 글

도커  (1) 2023.12.13
Patch & Put 차이점  (2) 2023.12.07
메뉴판 프로그램  (0) 2023.10.23
환경변수 Path 복구  (0) 2023.10.12
팀 소개 페이지 미니 프로젝트(2)  (0) 2023.10.10