기술면접

단위 테스트와 통합 테스트의 차이

하루우울루 2024. 12. 23. 18:14

단위 테스트는 소프트웨어의 가장 작은 단위, 즉 개별 메서드나 함수의 기능을 검증하는 테스트이다.

특정 기능이 올바르게 동작하는지 확인하기 위함이고, 독립적으로 실행된다.

실행 속도가 매우 빠르고 코드를 작성하면서 동시에 작성하는 것이 일반적이다.

 

반면에 통합 테스트는 개별 모듈들이 결합되어 전체 시스템이 올바르게 동작하는지 검증하는 테스트이다.

모듈 간의 상호작용이 올바르게 동작하는지 확인하기 위함이고, 실제로 데이터베이스, 네트워크 등의 외부 시스템과의 통합을 테스트한다.

실행 시간은 단위 테스트보다 길지만, 실제 운영 환경과 유사한 상황으로 테스트할 수 있다.

여러 컴포넌트 간의 상호작용에서 발생할 수 있는 문제들을 발견할 수 있다.


여기서 슬라이스 테스트라는 것도 있다.

 

슬라이스 테스트는 단위 테스트와 통합 테스트의 중간 정도에 위치한다고 볼 수 있는 테스트이다.

실제 환경과 비슷한 설정에서 테스트하지만, 전체 시스템이 아닌 특정 기능 경로만 테스트한다.

예를 들어, 애플리케이션에서 컨트롤러부터 데이터베이스까지 이어지는 전체 기능의 흐름을 테스트한다.

단위 테스트보다 설정이 복잡하고, 실행시간이 더 오래 걸리지만, 통합 테스트보다는 범위가 좁아 문제 발견이 쉽다.

@WebMvcTest, @DataJpaTest 어노테이션을 사용할 수 있다.

 

테스트 코드를 사용하면 버그를 조기에 발견할 수 있으니 유용하고 리팩터링을 할 때 편리하다.

그리고 개발 속도도 빨라질 수 있고, api문서로서의 역할도 할 수 있다고 생각할 수도 있으니 테스트 코드를 작성하여 사용하는 습관을 들이는 것이 좋을 것 같다.

'기술면접' 카테고리의 다른 글

CORS  (1) 2025.01.02
HTTP 메서드에서 멱등성이란?  (0) 2024.12.27
공유 락과 베타 락에 대해서  (1) 2024.12.21
동기와 비동기  (0) 2024.12.20
외부 서비스 장애에 대처하는 방법  (0) 2024.12.17