[论文解读] Ticket coverage: putting test coverage into context
本文提出了票证覆盖率(ticket coverage)这一度量指标,用于衡量软件票证中被自动化或人工测试覆盖的变更方法所占比例,从而实现上下文感知的测试透明度。在一项针对650,000行Java代码的工业研究中,票证覆盖率成功揭示了票证级别测试实践中的显著测试缺口。
There is no metric that determines how well the implementation of a ticket has been tested. As a consequence, code changed within the context of a ticket might unintentionally remain untested and get into production. This is a major problem, because changed code is more fault-prone than unchanged code. In this paper, we introduce the metric ticket coverage which puts test coverage into the context of tickets. For each ticket, it determines the ratio of changed methods covered by automated or manual tests. We conducted an empirical study on an industrial system consisting of 650k lines of Java code and show that ticket coverage brings transparency into the test state of tickets and reveals relevant test gaps.
研究动机与目标
- 为解决缺乏评估单个软件开发票证内测试覆盖率的度量指标的问题。
- 识别出更易引入缺陷的未测试或测试不足的代码变更。
- 通过将测试覆盖率直接与软件开发工作流中的票证级变更关联,提升测试透明度。
- 通过实证评估票证覆盖率在真实工业系统中检测测试缺口的有效性。
提出的方法
- 该度量指标计算票证中被自动化或人工测试覆盖的变更方法所占比例。
- 利用版本控制系统和现有测试套件的测试覆盖率数据,分析每个票证的源代码变更。
- 区分自动化测试和人工测试覆盖率,以反映不同的测试实践。
- 将票证中的变更映射到具体方法,并检查每个变更方法是否被任何测试覆盖。
- 使用静态分析和测试插桩技术提取细粒度的方法级覆盖率信息。
- 在包含650,000行Java代码的真实工业系统上评估该度量指标。
实验结果
研究问题
- RQ1票证内的代码变更在多大程度上实际得到了测试?这种覆盖程度在不同票证之间如何变化?
- RQ2票证覆盖率在识别现实世界工业软件开发中的测试缺口方面有多有效?
- RQ3测试覆盖率在票证之间如何分布?是否存在反复出现的测试不足模式?
- RQ4与传统代码覆盖率度量指标相比,票证覆盖率在揭示有意义的测试缺陷方面表现如何?
主要发现
- 票证覆盖率成功揭示了显著的测试缺口,表明许多票证内的变更方法仍处于未测试状态。
- 大量票证中的代码变更未被任何测试覆盖,从而增加了引入缺陷的风险。
- 该度量指标通过突出显示低覆盖率或无覆盖率的票证,为测试实践提供了可操作的洞察。
- 研究证明,仅依靠传统代码覆盖率度量指标无法捕捉到票证级别的测试充分性。
- 票证覆盖率揭示出测试覆盖率在票证之间分布不均,部分票证虽有代码变更却完全无测试覆盖。
- 该度量指标在工业环境中有效提升了单个票证测试状态的透明度。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。