본문 바로가기

Spring/Test

📝 테스트 코드 작성의 장/단점과 테스트 범위에 따른 분류

1. 테스트 코드 작성의 장단점

 

장점

  • 예상 동작과 실제 동작을 비교하여 빠르고 정확한 테스트가 가능하기 때문에 초기 개발의 디버깅이 쉬워짐
  • 어플리케이션이 확장, 리팩터링 등 변경되더라도 올바르게 작동하는지 확인 할 수 있음
  • 단위 테스트 자체를 어플리케이션에 대한 문서로 사용할 수 있음

 

단점

  • 테스트 코드까지 작성해야하기 때문에 개발시간이 오래걸림
  • 테스트코드 유지보수 비용 발생

 

 

2. 테스트 코드 범위에 따른 분류

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

 

1)단위 테스트(Unit Test)

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

 

강점

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

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

 

 

2) 통합 테스트(Intergaration Test) 

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

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

 

강점

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

 

약점

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

 

 

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

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

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

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

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