소프트웨어 개발과 프로젝트 관리
올바르게 동작하는 것으로 알려진 펌웨어 버전 뒤에 1,000개의 커밋이 있고, 최신 커밋에서는 결함이 일어난다. 결함은 어느 한 커밋에서 들어왔고, 그 이후의 커밋에서는 모두 일어난다고 한다. git bisect처럼 이진 탐색으로 원인 커밋을 특정할 때, 빌드하여 테스트하는 횟수의 최댓값은?
- A3회
- B10회
- C500회
정답과 해설 보기
정답: B. 10회
원인의 후보는 1,000개 커밋 중 어느 하나이며, 가운데 커밋을 시험할 때마다 후보를 절반으로 좁힐 수 있습니다. 2¹⁰ = 1,024 ≥ 1,000이므로 최대 10회의 테스트로 하나로 특정할 수 있습니다. 오래된 쪽부터 하나씩 시험하면 최악 999회, 평균으로도 약 500회가 걸리므로, 이진 탐색의 효과는 큽니다. 이 방법을 쓰려면 어느 커밋에서든 빌드와 테스트를 할 수 있도록, 깨진 상태의 커밋을 공유 브랜치에 넣지 않는 것이 중요합니다.