피드로 돌아가기
테스트 케이스 리듀서는 과소평가된 디버깅 도구
GeekNewsGeekNews
DevOps

테스트 케이스 리듀서는 과소평가된 디버깅 도구

테스트 케이스 리듀서를 통한 디버깅 입력 99% 축소 및 분석 시간 단축

neo2026년 6월 10일11intermediate

Context

대규모 입력 데이터로 인한 프로그램 크래시 발생 시 원인 파악을 위한 수동 축소 방식의 비효율성 존재. 사람이 수행하는 수동 삭제는 검색 공간의 확장 및 상호 의존적인 데이터 삭제 기회 누락으로 인해 병목 지점 식별에 과도한 시간 소요.

Technical Solution

  • Program, Input, Interestingness Test 세 가지 요소를 결합한 반복적 입력 축소 루프 설계
  • Interestingness Test를 통해 특정 오류 재현 여부를 Boolean 값으로 판단하여 후보 입력의 채택 여부를 결정하는 피드백 루프 구축
  • 단순 줄 삭제부터 정수 값 축소, 표준 주석 제거까지 단계별 축소 규칙을 적용하는 계층적 리듀싱 전략 채택
  • 비결정적 버그 해결을 위해 'n회 중 1회 이상 발생'에서 'n회 연속 발생'으로 Interestingness Test의 엄격도를 점진적으로 높이는 전략 적용
  • 입력 길이 외에 Trace Length(실행 추적 길이)를 대리 지표로 설정하여 실행 경로 최적화 유도
  • 타임아웃 설정 최적화 및 임시 디렉터리 기반의 병렬 실행 구조를 통한 테스트 처리량(Throughput) 극대화

1. 오류 재현 여부를 명확히 판별하는 가벼운 Interestingness Test 스크립트를 작성했는가

2. 무한 루프 방지를 위해 프로그램 초기 실행 시간의

1.5~2배 수준으로 Timeout을 설정했는가

3. 비결정적 버그의 경우 '확률적 통과'에서 '결정적 통과'로 테스트 조건을 단계적으로 강화했는가

4. 입력 길이 외에 로그 라인 수나 명령 수행 횟수 등 더 효율적인 대리 지표(Proxy Metric)가 존재하는가

원문 읽기