소프트웨어 테스트란?
단위·통합·E2E 테스트 차이
중요한 동작이 변경 이후에도 유지되는지 자동으로 확인합니다.
테스트은 무엇인가요?
테스트는 코드가 지금 동작한다는 사실뿐 아니라 이후 변경에서도 중요한 행동이 유지되는지 확인하는 장치입니다.
모든 줄을 검사하기보다 실패 비용이 큰 사용자 흐름과 복잡한 규칙을 우선하고, 단위·통합·E2E 테스트를 목적에 맞게 조합합니다.
먼저 이해할 핵심 개념
도구 이름보다 각 요소가 맡는 책임과 서로 연결되는 방식을 먼저 이해하는 것이 좋습니다.
단위 테스트
작은 함수와 규칙을 빠르고 고립된 조건에서 검증합니다.
통합 테스트
DB, 네트워크 또는 여러 모듈이 함께 동작하는 경계를 확인합니다.
E2E 테스트
실제 브라우저나 앱에서 사용자의 핵심 흐름을 끝까지 실행합니다.
회귀 테스트
이미 고친 버그가 다시 나타나지 않도록 재현 조건을 남깁니다.
실무에서 함께 쓰는 기술
한 제품을 완성할 때는 한 가지 도구가 아니라 역할이 다른 여러 기술을 조합합니다.
JavaScript 단위
Vitest·Jest·Testing Library
웹 E2E
Playwright·Cypress
API
Contract tests·integration environment
품질 자동화
CI·coverage·visual regression
실무에서는 이렇게 진행합니다
- 01
위험 선택
결제, 권한, 데이터 손실처럼 실패 비용이 큰 곳을 찾습니다.
- 02
관찰 가능한 행동
구현 세부보다 입력 뒤 사용자가 보는 결과를 정의합니다.
- 03
적절한 계층
가장 빠르고 안정적으로 자신감을 주는 테스트 수준을 고릅니다.
- 04
CI 연결
실패 원인을 재현할 로그와 결과물을 남깁니다.
선택하고 구현할 때 확인할 것
- 01구현 방식이 아니라 행동을 검증하는가
- 02테스트끼리 데이터와 순서에 의존하지 않는가
- 03핵심 실패 조건과 경계값이 포함되는가
- 04불안정한 테스트를 방치하지 않는가
- 05테스트 시간이 피드백 속도를 해치지 않는가
자주 묻는 질문
테스트 커버리지는 몇 퍼센트가 적당한가요?
하나의 정답은 없습니다. 숫자 목표보다 중요한 규칙과 사용자 흐름이 실제로 보호되는지 확인해야 합니다.
E2E 테스트만 작성하면 충분한가요?
E2E는 신뢰 범위가 넓지만 느리고 실패 원인 파악이 어렵습니다. 복잡한 규칙은 더 빠른 단위·통합 테스트로 보완하는 편이 좋습니다.