패스잇
개발 문화 · 협업 · 심화

레거시 시스템에 TDD/BDD를 도입하거나 적용할 때 직면하는 가장 큰 어려움은 무엇이며, 이러한 어려움을 극복하고 점진적으로 레거시 코드를 개선하며 테스트 가능한 상태로 전환하기 위한 구체적인 전략(예: Seam 활용, Golden Master)을 설명해주십시오.

힌트 · 마이클 페더의 'Working Effectively with Legacy Code' 개념, 테스트 커버리지 확보, 의존성 주입, 점진적 개선 전략을 포함해야 합니다.

테스트 격리코드 의존성SeamGolden Master점진적 개선

모범답안

레거시 시스템에 TDD/BDD를 도입할 때 가장 큰 어려움은 테스트 격리가 어렵다는 점입니다. 코드 의존성이 높고, 테스트하기 어려운 전역 상태나 싱글톤 패턴이 많이 사용된 경우가 많습니다.

극복 전략으로는 먼저 'Seam'을 활용하여 의존성을 분리합니다. 핵심 로직을 감싸는 Seam을 만들고, 이 Seam을 통해 외부 의존성을 주입하여 테스트를 용이하게 만듭니다.

또한, 'Golden Master' 테스트를 활용하여 기존 시스템의 동작을 캡처하고, 변경 후에도 동일한 결과를 내는지 검증합니다. 점진적으로 코드를 리팩토링하면서 테스트 커버리지를 확보하고, 새로운 기능 개발 시에는 TDD/BDD를 적용하여 코드 품질을 높입니다. 중요한 것은 한 번에 모든 것을 바꾸려 하지 않고, 작고 안전한 변경을 반복하는 것입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 테스트 (TDD / BDD) 면접 질문

← 테스트 (TDD / BDD) 면접 질문 전체 보기