개발 문화 · 협업 · 중급
BDD(Behavior-Driven Development)는 TDD와 어떤 점에서 차이가 있으며, BDD가 강조하는 주요 가치는 무엇인가요?
힌트 · TDD가 개발자 중심의 구현 검증이라면, BDD는 비즈니스 가치와 사용자 행동에 초점을 맞춰 협업을 강조합니다.
행위_명세시나리오_기반이해관계자_협업언어_통일자동화된_테스트
모범답안
BDD는 TDD에서 발전된 형태로, TDD가 개발자 관점에서 '어떻게' 구현할지 검증하는 데 집중한다면, BDD는 '무엇'을 왜 구현해야 하는지에 대한 비즈니스 가치와 사용자 행동에 초점을 맞춥니다.
가장 큰 차이점은 BDD가 행위 명세에 기반한다는 점입니다. 시나리오 기반으로 작성된 명세는 비즈니스 이해관계자, 개발자, 테스터 간의 협업을 촉진하고, 모두가 동일한 이해를 갖도록 돕습니다.
BDD가 강조하는 주요 가치는 다음과 같습니다. 첫째, 이해관계자 간의 협업을 통해 요구사항을 명확히 정의합니다. 둘째, 공통의 언어를 사용하여 커뮤니케이션 오류를 줄입니다. 셋째, 자동화된 테스트를 통해 시스템의 동작을 검증하고, 변경에 대한 안정성을 확보합니다. 즉, BDD는 단순히 테스트를 넘어, 개발 프로세스 전반에 걸쳐 비즈니스 가치를 반영하는 데 목적이 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 테스트 (TDD / BDD) 면접 질문
- 테스트 더블(Test Double)이란 무엇이며, 왜 사용하는지 설명해주세요.
- TDD의 Red-Green-Refactor 사이클을 설명하고, 각 단계에서 개발자가 수행해야 할 주요 활동과 그 중요성에 대해 이야기해주세요.
- TDD를 프로젝트에 적용했을 때 얻을 수 있는 주요 이점과 발생할 수 있는 잠재적인 어려움은 무엇인가요?
- BDD 시나리오 작성 시 사용되는 Given-When-Then 구조에 대해 설명하고, 이 구조가 협업에 어떤 도움을 주는지 이야기해주세요.
- 단위 테스트(Unit Test) 작성 시 Mock이나 Stub 객체를 사용하는 이유와, 실제 객체를 사용하는 경우와 비교하여 설명해주세요.
- TDD/BDD 관점에서 단위 테스트, 통합 테스트, E2E 테스트의 적절한 비중과 각각의 역할에 대해 설명해주세요.