
정의 : 단위 테스트는 애플리케이션의 작은 단위 , 즉 메서드나 함수와 같은 개별적인 모듈을 테스트하는 방법입니다. 외부 의존성을 Mocking 하거나 Stubbing하여 개별 모듈의 동작을 검증합니다.
주요 목적 : 코드의 각 단위가 올바르게 동작하는지 확인하는 것
장점 :
빠른 테스트 실행 속도 : 외부 의존성이 없거나 Mocking으로 대체되기 때문에 테스트 실행이 매우 빠릅니다.
버그 발견이 용이 : 작은 단위로 테스트하므로 버그가 발생한 부분을 정확하게 추적하기 쉽습니다.
코드 품질 향상 : 세부적인 동작을 검증하므로 코드 품질을 개선하고 유지보수성을 높입니다.
단점 :
제한된 범위 : 개별 단위의 동작만 검증하므로 시스템 전체의 동작을 보장하지는 못합니다.
Mock 객체의 과도한 사용: 많은 외부 의존성을 Mock으로 처리하다 보면 실제 환경과는 다른 결과가 나타날 수 있습니다.
정의 : 통합 테스트는 여러 모듈이 상호 작용하는 방식이나 외부 시스템과의 통합이 올바르게 이루어지는지 검증하는 테스트입니다. 데이터베이스, 네트워크, 파일 시스템 등 실제 의존성들을 포함해 전체 시스템의 동작을 확인합니다.
주요 목적 : 여러 모듈 간의 통합과 상호작용이 예상대로 동작하는지 확인하는것
장점 :
실제 환경에 가까운 테스트 : 실제 의존성을 사용하여 더 현실적인 시나리오를 테스트하므로 실제 환경에서 발견할 수 있는 문제를 발견할 수 있습니다.
전체적인 안정성 검증 : 시스템 간 상호작용이 예상대로 작동하는지 확인할 수 있어,전체 시스템의 안정성을 보장할 수 있습니다.
단점 :
느린 실행 속도 : 외부 시스템과의 통합을 포함하므로 단위 테스트보다 훨씬 느립니다.
버그 발견이 어려움 : 버그가 발생했을 때 여러 모듈이 연관되어 있기 때문에 정확한 문제의 원인을 찾는데 시간이 오래 걸릴 수 있습니다.