Don't be afraid of challenges

유닛테스트 기술분석 본문

웹서비스

유닛테스트 기술분석

초아롱 2024. 9. 8. 13:30

유닛테스트란 ?

유닛테스트(Unit Testing)은 소프트웨어 개발과정에서 매우 중요한 초기 단계 테스트 방법

이는 소프트웨어의 가장 작은 단위인 '유닛' (함수,메소드,클래스)이 제대로 작동하는지 확인하는 과정입니다. 유닛테스트의 주요 목적은 개별 코드 부분이 정확하게 기능하는지를 검증하여, 큰 시스템 내에서 발생할 수 있는 복잡한 문제를 사전에 방지하는 것입니다.

 

필요한 이유는 ?

유닛테스트는 일반적으로 개발단계에서 발생하므로 팀이 소프트웨어를 출시하기 전에 문제를 식별하고 수정할 수 있습니다. 단위 테스트는 개발자에게 미래에 문제를 일으키고 전반적인 품질과 성능을 향상시킬 수 있는 잠재적인 오류나 격차에 대해 경고합니다.

 

어떤 라이브러리가 있는가 ?

1. Jest

설명 : Facebook에서 만든 JavaScript 테스트 프레임워크로, React와의 호환성이 매우 뛰어나며 기본적으로 단위 테스트와 스냅샷 테스트를 지원합니다. 모킹(Mock) 기능이 내장되어 있어 의존성 테스트에 유리합니다.

장점 : 

- 설정 없이 바로 사용 가능 (Zero configuration)

- 비동기 코드 테스트 지원

- 스냅샷 테스트 기능

- 광범위한 생태계와 풍부한 플러그 인

단점 : 

- 복잡한 설정이 필요한 경우, 초기에 다소 어려울 수 있음

 

2. React Testing Library

설명 : React 컴포넌트의 UI를 테스트하는 데 중점을 둔 라이브러리입니다. Jest와 함께 사용되는 경우가 많으며, 실제 사용자의 상호작용을 시뮬레이션 하면서 컴포넌트를 테스트할 수 있습니다

장점 :

- 사용자 관점에서의 테스트 권장 ( DOM과 상호작용을 통해 컴포넌트 테스트)

- 복잡한 로직보다는 컴포넌트의 실제 UI 동작 테스트에 중점

단점 : 

- 단위 테스트보다는 통합 테스트에 더 적합할 수 있음

 

3. Enzyme

설명 : Airbnb에서 만든 React 컴포넌트 테스트를 위한 라이브러리입니다. 컴포넌트를 렌더링하고, 트리 탐색 및 조작을 쉽게 할 수 있게 도와줍니다.

장점 :

- React 컴포넌트의 출력물을 쉽게 탐색하고 조작할 수 있는 기능 제공

- Shallow rendering을 통해 단위 테스트에 적합

단점 :

- 최신 React 기능에 대한 지원이 다소 부족할 수 있음 (React Testing Library로 많이 이동하는 추세)

 

4. Mocha

설명 : 매우 유연한 JavaScript 테스트 프레임워크로, 다양한 플러그인을 통해 테스트 환경을 설정할 수 있습니다. Jest처럼 기본 설정 없이 동작하지 않기 때문에 설정이 다소 복잡할 수 있습니다

장점 : 

- 유연성과 확장성

- 비동기 테스트에 강점

단점 :

- 설정이 복잡할 수 있으며, 추가 라이브러리가 많이 필요함 ( Chai, Sinon 등)

 

5. Chai

설명 : Mocha와 함께 사용되는 단언(assertion) 라이브러리로, 테스트 코드의 가독성을 높여줍니다.

장점 :

- 다양한 assertion 스타일 지원(BDD, TDD 스타일 등)

- 확장성 있는 플러그인 시스템

단점 :

- Mocha와 함께 사용되는 경우가 많아, Jest 같은 프레임워크보다는 독립적으로 사용하는 일이 적음

 

6. Sinon

설명 : JavaScript테스트에서 스파이, 스텁,목 기능을 제공하는 라이브러리 입니다. Mocha와 함께 많이 사용되며, 함수 호출 및 비동기 작업을 테스트하는데 유용합니다.

장점 : 

- 복잡한 비동기 코드 테스트 가능

- 독립적이면서도 Mocha, Chai와 좋은 호환성

단점 :

- 독립적으로 사용할 경우 설정이 복잡할 수 있음

 

7. Cypress

설명 : 주로 E2E(End-to-End) 테스트를 위해 사용되지만, 최근에는 컴포넌트 단위 테스트에도 사용할 수 있습니다. 실제 브라우저에서 테스트가 실행되므로 실제 사용 시나리오에 가까운 테스트를 할 수 있습니다.

장점 : 

- 빠르고 강력한 E2E 테스트 기능

- 실제 브라우저에서 테스트 실행

단점 :

- 단위 테스트보다는 통합 테스트에 더 적합할 수 있음

 

8. Vitest

설명 : Vite 프로젝트와 통합된 테스트 러너로, 빠르고 가벼운 Jest 대안입니다. Vite 프로젝트에서 Jest 대신 사용할 수 있습니다.

장점 : 

- 빠른 테스트 실행 속도

- Vite와 완벽한 통합

단점 :

- Jest 만큼 다양한 기능과 생태계는 아직 갖추지 못함

 

'웹서비스' 카테고리의 다른 글

브라우저의 렌더링 원리  (3) 2024.09.11
기술면접 준비  (0) 2024.09.11
프론트엔드 에러모니터링, 로그 데이터 수집의 필요성  (1) 2024.09.08
[usg] 디자인패턴  (1) 2023.10.18
[usg] 다이어그램 공부  (0) 2023.10.17