[논문 리뷰] Initial and Eventual Software Quality Relating to Continuous Integration in GitHub
이 연구는 대규모 오픈소스 프로젝트에서 GitHub 풀 리퀘스트의 지속적 통합(CI) 실패 패턴을 분석하며, Travis-CI 로그를 사용해 초깃품질(IQ R)을 평가하고 머지 후 버그 수정을 통해 최종 품질(EQ R)을 측정한다. CI 실패는 소수의 파일에 집중되어 있으며, 최종 결함과는 약한 상관관계를 보이며, CI 실패가 발생한 PR은 향후 결함 발생 확률이 31.5% 높아지므로, CI만으로는 높은 품질의 코드를 보장하지 못함을 시사한다.
The constant demand for new features and bug fixes are forcing software projects to shorten cycles and deliver updates ever faster, while sustaining software quality. The availability of inexpensive, virtualized, cloud-computing has helped shorten schedules, by enabling continuous integration (CI) on demand. Platforms like GitHub support CI in-the-cloud. In projects using CI, a user submitting a pull request triggers a CI step. Besides speeding up build and test, this fortuitously creates voluminous archives of build and test successes and failures. CI is a relatively new phenomenon, and these archives allow a detailed study of CI. How many problems are exposed? Where do they occur? What factors affect CI failures? Does the "initial quality" as ascertained by CI predict how many bugs will later appear ("eventual quality") in the code? In this paper, we undertake a large-scale, fine resolution study of these records, to better understand CI processes, the nature, and predictors of CI failures, and the relationship of CI failures to the eventual quality of the code. We find that: a) CI failures appear to be concentrated in a few files, just like normal bugs; b) CI failures are not very highly correlated with eventual failures; c) The use of CI in a pull request doesn't necessarily mean the code in that request is of good quality.
연구 동기 및 목표
- GitHub의 풀 리퀘스트에서 CI 실패의 분포 및 예측 요인을 이해하기 위해.
- CI 실패로 측정된 초깃품질이 머지 후 최종 소프트웨어 품질을 예측할 수 있는지 조사하기 위해.
- CI 실패 빈도 및 최종 결함 발생에 영향을 주는 프로세스, 제품, 사회적 요인을 특정하기 위해.
- 사전 머지 실패와 사후 머지 결함 복구를 비교하여 CI가 품질 게이트로 효과적인지 평가하기 위해.
- 파일의 이전 결함 패턴이 CI 실패 및 최종 품질 결과에 영향을 주는지 평가하기 위해.
제안 방법
- 대규모 GitHub 프로젝트의 풀 리퀘스트에서 Travis-CI 로그를 추출해 초깃품질 기록(IQ R)을 확보하기 위해.
- 버전 제어 기록과 커밋 분석을 통해 머지 후 결함 수정을 식별해 최종 품질 기록(EQ R)을 구성하기 위해.
- 머지 후 6개월 이내의 기간 동안 파일 및 풀 리퀘스트 수준에서 데이터를 집계하며, CI 실패 및 이후 버그 수정에 중점을 두기 위해.
- 파일 변경 빈도 및 이전 결함 밀도와 같은 다양한 예측 변수와 IQ R, EQ R 간의 상관관계를 평가하기 위해 통계 모델링을 적용하기 위해.
- 초기 CI 실패 지표와 이전 결함 데이터를 기반으로 최종 품질 실패의 오즈 비율을 추정하기 위해 로지스틱 회귀 분석을 사용하기 위해.
- 활동 중인 이슈 트래커를 보유한 프로젝트에 국한하고, CI 로그가 없는 PR을 제외하여 데이터 품질과 일관성을 확보하기 위해.
실험 결과
연구 질문
- RQ1CI 실패는 많은 파일에 퍼져 있는가, 아니면 전통적인 소프트웨어 버그와 유사하게 소수의 파일에 집중되어 있는가?
- RQ2풀 리퀘스트에서 CI 실패가 존재할 경우, 향후 머지 후 결함 발생 가능성을 얼마나 잘 예측할 수 있는가?
- RQ3파일 변경 빈도, 이전 결함 밀도, PR 크기와 같은 요소들이 CI 실패 빈도에 어떤 영향을 미치는가?
- RQ4파일 또는 PR 수준에서 초깃품질(CI 실패)과 최종 품질(머지 후 결함) 간에 의미 있는 관계가 존재하는가?
- RQ5파일의 비-CI 결함 이력이 이후 CI 실패 또는 최종 품질 문제 발생 확률에 영향을 주는가?
주요 결과
- CI 실패는 소수의 파일에 매우 집중되어 있으며, 전통적인 소프트웨어 버그의 분포 패턴과 유사하다.
- 이전에 CI 실패 기록이 있는 파일을 수정하는 PR은 향후 CI 실패 발생 가능성이 더 높다.
- 놀랍게도, 자주 변경되는 파일을 다룬 PR은 CI 실패가 더 적어지며, 이는 고주기 파일이 CI에서 더 안정적일 수 있음을 시사한다.
- 초기 품질 기록이 악화된(PR에 더 많은 CI 실패가 있는) PR이 반드시 높은 최종 품질 문제를 야기하는 것은 아니며, 이는 IQ R과 EQ R 간의 약한 상관관계를 의미한다.
- 전반적인 상관관계가 약할지라도, CI 실패가 발생한 PR은 머지 후 최종 품질 문제와 연관될 가능성이 31.5% 더 높다.
- 비-CI 결함 이력이 있는 파일은 CI 실패 이력을 제어하더라도 향후 EQ R 실패 발생 확률이 더 높으며, 이는 이전 비-CI 결함 수가 1단위 증가할수록 위험도 27.3% 증가한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.