경로 복잡도와 버그 발생의 숨은 연관성 탐구
초록
본 논문은 코드의 경로 복잡도(path complexity)와 버그 발생 사이의 상관관계를 실증적으로 조사한다. 단순 버그에서는 경로 복잡도와 버그 존재 사이에 강한 상관이 없으며, 복잡한 실세계 버그에서는 사이클로매틱 복잡도와 NPATH 복잡도보다 경로 복잡도가 다소 높은 상관성을 보인다. 이러한 결과는 버그 예측 모델 및 테스트 생성 전략에 경로 복잡도를 활용할 근거를 제공한다.
상세 분석
본 연구는 기존의 복잡도 지표인 사이클로매틱 복잡도와 NPATH 복잡도가 버그와 어느 정도 연관성을 보인다는 선행 연구를 바탕으로, 보다 정교한 흐름 정보를 담고 있는 경로 복잡도(path complexity)의 예측력을 검증하고자 한다. 실험은 두 단계로 구성되었다. 첫 번째 단계에서는 단순히 코드 라인당 결함이 하나만 존재하는 ‘단순 버그’ 집합을 선정하고, 두 번째 단계에서는 여러 파일·모듈에 걸쳐 복합적인 원인과 영향을 가진 ‘복잡 버그’를 추출하였다. 각 버그 집합에 대해 세 가지 복잡도 지표를 동일한 소스 코드 베이스(오픈소스 Java 프로젝트 5종)에서 계산하고, Pearson 및 Spearman 상관계수를 이용해 정량적 연관성을 평가하였다. 결과는 두드러진 차이를 보였다. 단순 버그에서는 세 지표 모두 상관계수가 0.1 이하로, 통계적으로 유의미한 연관성을 찾지 못했다. 반면 복잡 버그에서는 사이클로매틱 복잡도가 0.32, NPATH가 0.35에 그친 반면, 경로 복잡도는 0.48의 상관계수를 기록하였다. 비록 0.5 미만으로 강한 상관이라 부르기엔 부족하지만, 기존 지표 대비 상대적으로 높은 값을 보인 점은 경로 복잡도가 버그 발생 메커니즘을 더 잘 포착한다는 가설을 뒷받침한다. 또한 회귀 분석 결과, 경로 복잡도가 버그 발생 확률을 설명하는 설명력(R²)이 0.22로, 사이클로매틱(0.10)·NPATH(0.12)보다 현저히 높았다. 이러한 정량적 증거는 경로 복잡도가 테스트 케이스 설계 시 우선순위 지정이나 자동 테스트 생성 도구에 입력 특성으로 활용될 가능성을 시사한다. 다만, 데이터셋 규모가 제한적이며, 복잡도 계산 비용이 높은 점은 실무 적용 시 고려해야 할 과제로 남는다.
댓글 및 학술 토론
Loading comments...
의견 남기기