一句话:通过40名开发者的用户实验,揭示APR补丁建议对调试成功率的影响:正确建议大幅提升,欺骗性建议降低。
自动程序修复(APR)已进入工业部署,开发者将补丁建议用于人驱动调试,但其影响尚不清楚。本文对40名中位经验6年的开发者开展受控用户研究,在9个真实Java缺陷上使用三种APR工具调试。开发者要么仅能访问测试,要么还能看到使所有测试通过的代码建议;建议来自开发者或APR,可能正确或具有欺骗性。160次会话显示:代码建议显著提高提交补丁几率;相比仅有测试,正确APR建议将调试成功几率提高约14,000%,欺骗性建议降低65%,正确建议还加快调试。新手与经验开发者无显著差异,开发者对APR印象积极。
Industrial deployments of automated program repair (APR), e.g., at Facebook and Bloomberg, signal a new milestone for this exciting and potentially impactful technology. In these deployments, developers use APR-generated patch suggestions as part of a human-driven debugging process. Unfortunately, little is known about how using patch suggestions affects developers during debugging. This paper conducts a controlled user study with 40 developers with a median of 6 years of experience. The developers engage in debugging tasks on nine naturally-occurring defects in real-world, open-source, Java projects, using Recoder, SimFix, and TBar, three state-of-the-art APR tools. For each debugging task, the developers either have access to the project's tests, or, also, to code suggestions that make all the tests pass. These suggestions are either developer-written or APR-generated, which can be correct or deceptive. Deceptive suggestions, which are a common APR occurrence, make all the available tests pass but fail to generalize to the intended specification. Through a total of 160 debugging sessions, we find that access to a code suggestion significantly increases the odds of submitting a patch. Access to correct APR suggestions increase the odds of debugging success by 14,000% as compared to having access only to tests, but access to deceptive suggestions decrease the odds of success by 65%. Correct suggestions also speed up debugging. Surprisingly, we observe no significant difference in how novice and experienced developers are affected by APR, suggesting that APR may find uses across the experience spectrum. Overall, developers come away with a strong positive impression of APR, suggesting promise for APR-mediated, human-driven debugging, despite existing challenges in APR-generated repair quality.