개발 문화 · 협업 · 중급
TDD/BDD 관점에서 단위 테스트, 통합 테스트, E2E 테스트의 적절한 비중과 각각의 역할에 대해 설명해주세요.
힌트 · 테스트 피라미드를 떠올리며, 각 테스트 레벨이 검증하는 범위와 목적을 명확히 구분하여 설명하는 것이 중요합니다.
테스트 피라미드단위 격리행동 기반통합 인터페이스E2E 시나리오
모범답안
TDD/BDD 관점에서 테스트 피라미드를 생각하면 각 테스트의 비중과 역할을 이해하기 쉽습니다.
단위 테스트는 가장 많은 비중을 차지해야 합니다. TDD에서는 코드를 작성하기 전에 테스트를 먼저 작성하여 코드의 설계와 동작을 명확히 정의합니다. BDD에서는 "Given-When-Then" 형식으로 비즈니스 로직을 검증하는 테스트를 작성합니다. 핵심은 각 단위가 격리된 상태에서 예상대로 동작하는지 확인하는 것입니다.
통합 테스트는 단위 테스트보다는 적은 비중을 가져야 합니다. 단위 테스트를 통과한 모듈들이 서로 연동될 때 인터페이스가 제대로 작동하는지 검증합니다. 예를 들어, API 호출이나 데이터베이스 연동 등이 제대로 이루어지는지 확인합니다.
E2E 테스트는 가장 적은 비중을 차지해야 합니다. 실제 사용자의 시나리오를 따라 전체 시스템이 예상대로 동작하는지 검증합니다. 브라우저를 사용하여 UI를 테스트하거나, API를 호출하여 전체 흐름을 테스트하는 방식이 있습니다. E2E 테스트는 비용이 많이 들기 때문에 핵심적인 시나리오에 집중하는 것이 좋습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 테스트 (TDD / BDD) 면접 질문
- BDD(Behavior-Driven Development)는 TDD와 어떤 점에서 차이가 있으며, BDD가 강조하는 주요 가치는 무엇인가요?
- BDD 시나리오 작성 시 사용되는 Given-When-Then 구조에 대해 설명하고, 이 구조가 협업에 어떤 도움을 주는지 이야기해주세요.
- 단위 테스트(Unit Test) 작성 시 Mock이나 Stub 객체를 사용하는 이유와, 실제 객체를 사용하는 경우와 비교하여 설명해주세요.
- 테스트 더블(Test Double)의 개념과 종류(Dummy, Fake, Stub, Spy, Mock)에 대해 간략히 설명하고, 각각의 사용 사례를 예시로 들어주세요.
- TDD/BDD가 시스템 아키텍처 설계에 미치는 심층적인 영향은 무엇이며, 특히 모듈성, 응집도, 결합도 측면에서 어떤 변화를 가져온다고 생각하십니까? 실제 프로젝트에서 이러한 영향을 어떻게 경험하셨습니까?
- 마이크로서비스 아키텍처와 같은 분산 시스템 환경에서 TDD/BDD를 적용할 때 직면하는 주요 도전 과제는 무엇이며, 서비스 간의 상호작용 및 통합 테스트 전략을 TDD/BDD 원칙에 따라 어떻게 수립하고 구현할 수 있을까요?