피드로 돌아가기
Dev.toDevOps
원문 읽기
git bisect run을 통한 회귀 버그 탐색 시간 60분에서 11분으로 단축
The git bisect run habit I should have learned ten years sooner
AI 요약
Context
Checkout 서비스에서 특정 프로모션 조합 시 발생한 정밀도 오류로 인해 재무 데이터 불일치 발생. Stack trace나 Exception 없이 결과값만 틀린 Regression 상황에서 수동 Diff 분석을 통한 버그 추적의 낮은 효율성과 인지 편향으로 인한 탐색 실패가 병목 지점으로 작용함.
Technical Solution
- Binary Search 알고리즘 기반의
git bisect를 활용하여 Commit 범위의 탐색 공간을 지수적으로 감소시키는 구조 설계 - 버그 발생 여부를 Boolean(0 또는 non-zero)으로 반환하는 12라인 규모의 경량화된 Check Script를 작성하여 검증 자동화 구현
git bisect run명령어로 테스트 스크립트와 Git 탐색 과정을 연동하여 휴먼 에러를 배제한 결정론적 버그 추적 수행- 빌드 시간이 긴 경우 Mocking을 적용하거나 바이너리 크기를 줄여 Check Script의 실행 비용을 최소화하는 최적화 전략 채택
git bisect skip을 통해 빌드가 불가능한 중간 Commit을 제외함으로써 탐색 프로세스의 연속성 확보bisect start전 Reference Commit의 무결성을 먼저 검증하여 잘못된 기준점으로 인한 리소스 낭비 방지
실천 포인트
- [ ] 버그 재현 가능 시, 즉시 0/1을 반환하는 최소 단위의 Check Script 작성 - [ ] Bisect 시작 전 'Known-Good' Commit이 실제로 정상 작동하는지 우선 검증 - [ ] 반복 발생하는 버그 클래스에 대비해 `bisect/` 디렉토리에 사전 정의된 테스트 하네스 유지 - [ ] Squash Merge 시 가시성을 높이기 위해 Commit Body에 PR 번호를 명시하는 컨벤션 적용