[论文解读] On How Developers Test Open Source Software Systems
本研究通过分析三个项目的版本控制、代码覆盖率和规模度量,调查了开源软件中的测试实践。研究发现,测试活动通常在开发后期才开始,且呈分阶段进行,尽管测试覆盖率和代码库规模各不相同,但在发布前并未出现一致的增加趋势。
Engineering software systems is a multidisciplinary activity, whereby a number of artifacts must be created - and maintained - synchronously. In this paper we investigate whether production code and the accompanying tests co-evolve by exploring a project's versioning system, code coverage reports and size-metrics. Three open source case studies teach us that testing activities usually start later on during the lifetime and are more "phased", although we did not observe increasing testing activity before releases. Furthermore, we note large differences in the levels of test coverage given the proportion of test code.
研究动机与目标
- 理解开源系统中测试实践与生产代码协同演化的机制。
- 调查软件发布前测试活动是否增加。
- 分析项目生命周期中测试代码量与测试覆盖率之间的关系。
- 利用版本控制和覆盖率数据探索测试活动的时间模式。
- 评估测试在开发过程中是早期还是后期被整合的程度。
提出的方法
- 分析三个开源项目的版本控制历史,以追踪代码和测试更改随时间的演变。
- 收集并评估代码覆盖率报告,以衡量测试效果和覆盖率趋势。
- 提取规模度量(如代码行数、测试行数),以比较测试工作量与生产代码的相对关系。
- 映射测试代码和生产代码在开发里程碑及发布周期中的演化过程。
- 通过分析测试提交的时间聚类,识别测试活动的阶段。
- 使用统计分析方法,将测试活动与发布周期和代码变更进行相关性分析。
实验结果
研究问题
- RQ1在开源项目中,软件发布前测试活动是否增加?
- RQ2在项目生命周期中,测试代码比例与实际测试覆盖率之间有何关系?
- RQ3测试活动通常在开发开始后多久才开始?
- RQ4是否存在与主要开发阶段一致的稳定测试开发模式?
- RQ5测试覆盖率和测试代码量如何随生产代码变更而演变?
主要发现
- 测试活动通常在项目生命周期后期才开始,而非从一开始就集成。
- 测试开发往往呈分阶段进行,测试提交集中在特定时间段内,而非持续稳定推进。
- 未观察到发布前测试活动的一致性增加,与发布前测试高峰的假设相矛盾。
- 即使测试代码比例相似,各项目之间的测试覆盖率仍存在显著差异。
- 测试代码与生产代码的比例无法可靠预测测试覆盖率水平。
- 生产代码与测试之间的协同演化较弱,表明测试通常为响应式添加,而非主动规划。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。