개발 문화 · 협업 · 중급
TDD를 프로젝트에 적용했을 때 얻을 수 있는 주요 이점과 발생할 수 있는 잠재적인 어려움은 무엇인가요?
힌트 · 설계 개선, 버그 감소, 문서화 효과와 함께 학습 곡선, 초기 개발 속도 저하 등의 측면을 고려하여 설명하세요.
테스트 용이성코드 품질 향상리팩토링개발 속도학습 곡선
모범답안
TDD를 프로젝트에 적용했을 때 얻을 수 있는 주요 이점은 코드 품질 향상과 설계 개선입니다. 테스트를 먼저 작성하면서 자연스럽게 테스트하기 쉬운 코드를 만들게 되고, 이는 곧 모듈화된 깔끔한 설계로 이어집니다. 또한, 버그를 초기에 발견하고 리팩토링을 더욱 안전하게 할 수 있다는 장점도 있습니다. 일종의 살아있는 문서 역할도 수행하죠.
하지만 TDD에는 어려움도 따릅니다. 처음 TDD를 접하는 개발자는 학습 곡선을 경험하게 되고, 테스트 코드 작성에 시간을 투자해야 하므로 초기 개발 속도가 느려질 수 있습니다. 또, 완벽한 테스트를 작성하는 데 집중하다 보면 오히려 개발이 지연될 수도 있습니다. 따라서 프로젝트 상황에 맞춰 TDD를 적절히 적용하는 것이 중요합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 테스트 (TDD / BDD) 면접 질문
- BDD(Behavior-Driven Development)는 무엇이며, TDD와 비교했을 때 어떤 특징이 있나요?
- 테스트 더블(Test Double)이란 무엇이며, 왜 사용하는지 설명해주세요.
- TDD의 Red-Green-Refactor 사이클을 설명하고, 각 단계에서 개발자가 수행해야 할 주요 활동과 그 중요성에 대해 이야기해주세요.
- BDD(Behavior-Driven Development)는 TDD와 어떤 점에서 차이가 있으며, BDD가 강조하는 주요 가치는 무엇인가요?
- BDD 시나리오 작성 시 사용되는 Given-When-Then 구조에 대해 설명하고, 이 구조가 협업에 어떤 도움을 주는지 이야기해주세요.
- 단위 테스트(Unit Test) 작성 시 Mock이나 Stub 객체를 사용하는 이유와, 실제 객체를 사용하는 경우와 비교하여 설명해주세요.