Spring

JUnit 장점 및 각 테스트 (단위, 통합, 기능)

chbong 2022. 8. 21. 00:18

Junit

 - 자바의 JVM 계열의 언어에서 사용하는 단위 테스트 프레임워크를 말함.

 

단위 테스트(Unit Test)

 - 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차이며 함수, 메서드, 개별 코드 같은 작은 단위에 대해 테스트 케이스로 분리하고 테스트 코드를 작성하여 테스트 하는 것을 말한다.

 - 외부 API와의 연동이 필수라던지 DB 데이터 접근 등 외부 리소스를 직접 사용해야 하는 테스트라면 단위 테스트가 아니다.

 - 단위 테스트에서 외부와의 연동이 필요하다면 테스트 대역을 사용하면 된다

 

테스트 대역

 - 외부 의존 구성요소를 사용할 수 없거나 직접 사용하고 싶지 않을 때, 테스트 대상 코드와 대신해서 상호작용하는 객체를 말한다.

 

* 단위 테스트 < 통합 테스트 < 기능 테스트

 

 

통합 테스트

 - 모듈을 통합하는 과정에서 모듈 간 인터페이스가 올바르게 작동하는지를 테스트 하는 것이다.

 - 일반적인 웹 어플리케이션은 프레임워크, 라이브러리, 데이터베이스, 구현한 코드가 주요 통합 테스트 대상이다.

 - 여러 모듈간 통합을 거치기 때문에 단위 테스트에 비해 테스트 실행 속도가 느린 편이다.

 

기능 테스트

 - 사용자와 어플리케이션의 상호작용이 원할하게 이루어지는지 테스트 하는 것이다.

 - 이 테스트를 수행하려면 시스템을 구동하고 사용하는데 필요한 모든 구성요소가 필요하다.

 - E2E(End to end) 테스트로도 볼 수 있다. 예를 들면 브라우저에서 웹 서버를 구동하거나 모바일에 앱을 구동하고 화면의 흐름에 따라 알맞은 상호 작용을 해야하는 것이다.

 

단위테스트의 장점

 - 테스트 시간 단축으로 문제점 발견 가능성이 높아지고 안정성이 향상

  ● 단위테스트의 목적은 프로그램의 각 부분을 고립시켜서 각각의 부분이 정확하게 동작하는지 확인하는 것이다.

  ● 이를 통해 문제 발생 시 정확하게 어느 부분이 잘못 되었는지를 재빨리 확인할 수 있게 해준다.

  ● 프로그램의 안정성이 높아진다.

  ● 단위 테스트는 개발 시간을 증가시키는 것처럼 보이지만 개발 기간 중 대부분을 차지하는 디버깅 시간을 단축시킴으로써 여유로운 프로그래밍을 가능케 한다.

 - 이전 기능도 함게 테스트하기 때문에 더 쉬워진 코드 변경

  ● 프로그래머는 단위 테스트를 믿고 리팩토링 할 수 있다.

  ● 리팩토링 후에도 해당 모듈이 의도대로 작동하고 있음을 단위 테스트를 통해서 확신할 수 있다. (회귀 테스트)

  ● 어떻게 코드를 고치더라도 문제점을 금방 파악할 수 있고 수정된 코드가 정확하게 동작하는지 쉽게 알 수 있께 되므로 프로그래머들은 더욱더 의욕적으로 코드를 변경 할 수 있게 된다.

 - 테스트 간 결합도가 낮으므로 간단해진 통합

  ● 단위 테스트는 단위 자체의 불확실성을 제거해주므로 상향식 테스트 방식에서 유용하다.

  ● 먼저 프로그램의 각 부분을 검증하고 그 부분들은 합쳐서 다시 검증하는 통합 테스트에서 빛을 발한다.

 

JUnit의 장점

 - 테스트 결과는 테스트 클래스로 작성하여 개발자에게 테스트 방법 및 클래스의 히스토리를 남기고 공유가 가능

 - 단정(Assert) 메서드로 테스트 케이스의 수행 결과를 판별

 - 어노테이션으로 간결하게 지원

 

출처 -  https://beststar-1.tistory.com/27