본문 바로가기

Spring/Test

유닛 / 통합 / 기능 테스트

 

이미지 출처: https://www.pcloudy.com/

 

1. 유닛 테스트(Unit Test) == 단위 테스트

- 하나의 *모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트

👉🏻  메서드 같이 작은 단위를 테스트, 하나의 모듈을 기준으로 진행된다는 것은 하나의 클래스를 기준으로 독립적으로 진행할 수 있게하면 유닛 테스트로 볼 수 있는 거겠지?

 

모듈(module): 프로그램을 구성하는 구성 요소로, 관련된 데이터와 함수를 하나로 묶은 단위

 

특징

- 테스트 중심 개발(TDD) 시 작성하게 되는 테스트 코드가 유닛 테스트(=단위 테스트)

 

강점

- 어디에서 문제가 발생했는지 빨리 파악할 수 있어 디버깅 시간을 단축시켜줌

- 일부 의존 대상은 스텁이나 모의객체 등을 이용해서 대역으로 테스트함

 

 

2. 통합 테스트(Intergaration Test) 

- 단위 테스트가 끝나고 그 하나하나를 결합해 가며 테스트 하는 방법

- 단위 테스트와 달리 외부 라이브러리 사용한 경우 등 개발자가 변경할 수 없는 부분까지 묶어 검증할 때 사용

👉🏻 DB, 의존하고 있는 라이브러리 등을 사용했을 때 그 것들과의 상호작용을 테스트 하는것

 

강점

- 시스템 내부 구성 요소에 대한 테스트 가능

 

약점

- 많은 코드를 테스트하기 때문에 신뢰성이 떨어질 수 있고 어디에서 문제가 발생했는지 찾기 어려움

 

 

3. 기능 테스트(Fuctional Test) == E2E(End To End) 테스트

- 사용자 입장에서 사용자가 사용하는 상황을 가정하고 테스트하는 것

- 웹이나 어플 등에서 GUI를 통해 시나리오 , 기능 테스트 등을 수행

- 사용자에게 직접적으로 노출되는 부분 점검

- 수행 시 시스템을 구동하고 사용하는데 필요한 모든 구성 요소가 필요(웹 서버, 데이터베이스, 웹브라우저 등)