Software developers attempt to reproduce software bugs to understand their erroneous behaviours and to fix them. Unfortunately, they often fail to reproduce (or fix) them, which leads to faulty, unreliable software systems. However, to date, only a little research has been done to better understand what makes the software bugs non-reproducible. In this paper, we conduct a multimodal study to better understand the non-reproducibility of software bugs. First, we perform an empirical study using 576 non-reproducible bug reports from two popular software systems (Firefox, Eclipse) and identify 11 key factors that might lead a reported bug to non-reproducibility. Second, we conduct a user study involving 13 professional developers where we investigate how the developers cope with non-reproducible bugs. We found that they either close these bugs or solicit for further information, which involves long deliberations and counter-productive manual searches. Third, we offer several actionable insights on how to avoid non-reproducibility (e.g., false-positive bug report detector) and improve reproducibility of the reported bugs (e.g., sandbox for bug reproduction) by combining our analyses from multiple studies (e.g., empirical study, developer study).
翻译:软件开发商试图复制软件错误, 以理解错误行为并修复错误行为。 不幸的是, 他们常常未能复制( 或修复) 软件错误行为, 从而导致错误和不可靠的软件系统。 然而, 至今为止, 仅做了一些小研究, 以更好地了解软件错误无法复制的原因。 在本文中, 我们进行了一项多式研究, 以更好地了解软件错误不可复制的问题。 首先, 我们用两个流行的软件系统( Firrefox, Eclipse) 的576 不可复制的错误报告进行一项经验性研究, 并找出11个可能导致报告错误无法复制的关键因素。 第二, 我们进行了一项用户研究, 涉及13个专业开发商, 调查开发商如何应对不可复制的错误。 我们发现, 他们要么关闭了这些错误, 要么寻求进一步的信息, 这需要长时间的思考和反效果的手工搜索。 第三, 我们就如何避免不复制( 例如, 错误的错误的错误报告检测器) 进行一些可操作的洞察到的洞察到如何( ) 并改进被报告的错误复制研究的可复制能力( ) 。 ( 例如,,, 和 模拟研究) ( 模拟研究 ) 。