애플리케이션 개발에 있어서 테스트는 매우 중요한 역할을 한다.
코드의 품질을 보장하고, 예상치 못한 오류를 사전에 예방하는데 도움을 준다.
테스트를 수행하는 방법에는 여러가지가 있으며,
그 중 대표적으로 Unit Testing, Integration Testing, End-to-End Testing이 있다.
각 테스트는 목적과 범위가 다르며, 적절하게 조합하여 사용하면 굿 !
1. Unit Testing (단위테스트)
- 가장 작은 코드 단위에 초점을 둔다.
함수, 메서드, 클래스를 독립적으로 테스틑 하는 방법으로 유닛테스트의 핵심은
외부 의존성을 제거하고, 테스트 대상의 코드만을 집중적으로 검증하는 것이다 !
예를 들어,
데이터베이스나 외부 api와 같은 의존성을 Mock(가짜 객체)나 Stub(미리 정의된 값)으로 대체하여,
함수가 기대하는대로 동작하는지 확인한다.
단위 테스트는 코드 변경시 버그를 빠르게 발견할 수 있도록 해주며,
개발 초기 단계에서부터 작성하는 것이 좋다.
유닛테스트의 한계점은
각 함수가 독립적으로 잘 동작하는지는 확인가능하지만, 전체 시스템의 상호작용을 테스트할 수는 없음 .
2. Integration Testing (통합테스트)
- 여러 컴포넌트나 모듈이 서로 올바르게 상호작용하는지 확인하는 테스트임.
예를 들어,
데이터베이스에 데이터를 저장하거나, 다른 API 와 통신하는 경우, 개별적인 기능이 잘 동작한다 하더라도,
이러한 기능들이 결합되었을때 제대로 동작하는지 확인하는것이 중요하다.
실제 환경과 유사한 상태에서의 테스트를 진행하며, 상대적으로 시간이 오래걸린다.
3. End-to-End testing
애플리케이션의 전체 워크플로우가 예상대로 동작하는지 확인하는 테스트.
예를 들어
로그인, 데이터 입력, 결과 확인 등의 과정을 실제 사용자처럼 시뮬레이션하여
애플리케이션의 전체 흐름이 정상적인지 확인한다.
전체 시스템의 동작을 확인할 수 있기 때문에, 테스트가 실패하면 애플리케이션의 전체적인 문제를 찾을 수 있다.
'Testing > Jest' 카테고리의 다른 글
[Jest] 테스팅도구 - Jest란? (1) | 2024.12.01 |
---|---|
[Test] Mock, Stub, Fake : 테스트의 세가지 핵심 개념 (0) | 2024.11.28 |