테스트 코드를 이제 막 짜기 시작한 주니어예요. 단위 테스트(unit test)랑 통합 테스트(integration test)라는 말을 자주 듣는데, 경계가 애매하게 느껴질 때가 많아서 질문 드려요.
제 나름대로 이해한 건요.
단위 테스트 - 함수/메서드 하나를 딱 떼서, 외부 의존성 없이 검증
통합 테스트 - 여러 모듈이 실제로 붙었을 때(예: 서비스 + DB) 잘 도는지 검증
그런데 막상 짜다 보면 헷갈리는 게, 예를 들어 서비스 함수 하나 테스트하는데 그게 리포지토리를 호출하거든요. 이러면 이건 단위 테스트인가요 통합 테스트인가요? 리포지토리를 가짜로 바꾸면 단위, 진짜 DB 붙이면 통합, 이렇게 나뉘는 건가요?
그리고 실무에서 진짜 궁금한 건 비율이에요. 흔히 테스트 피라미드라고 해서 단위를 많이 짜고 통합은 적게 짜라고들 하던데, 왜 그런 건가요? 통합이 실제 동작에 더 가까우니까 통합을 많이 짜는 게 낫지 않나 싶기도 하고요.
회사에 테스트 문화가 딱히 없어서 물어볼 데가 없네요. 처음 시작하는 입장에서 "이 정도 감으로 나눠서 짜라" 하는 실무 기준이 궁금합니다. 조언 부탁드려요.