从 XML 输出中计算测试强度,“检测到”代表什么?

Calculating Test Strength from the XML output, what does 'detected' represent?

提问人:Jack Johns 提问时间:2/13/2023 最后编辑:Mark RotteveelJack Johns 更新时间:2/14/2023 访问量:54

问:

我正在尝试根据 PIT 的 XML 输出中的数据计算 HTML 输出生成的测试强度,但是我计算的数字与 HTML 报告中的测试强度不一致。

我使用等式 ,其中:(mutationsKilled / (totalMutations - mutationsNotCovered) * 100)

  • mutationsKilled是通过计算条目生成的,其中status = "KILLED"
  • totalMutations是通过计算条目总数生成的
  • mutationsNotCovered是通过计算条目生成的,其中detected = "false"

但是,我怀疑最后一个可能是问题所在,因为在回顾原始 XML 输出时,我发现检测到的指标可能不一定表明突变是否被覆盖。

有没有一种久经考验的方法?还值得一提的是,我正在运行 PIT 1.9.4 以及增量分析模式,如果这与问题有任何关系。

Java Pitest

评论

0赞 Mark Rotteveel 2/14/2023
标签不属于问题标题。请不要再恢复我的编辑。

答:

0赞 Jack Johns 2/13/2023 #1

在进行实验并故意降低测试覆盖率以产生未覆盖的突变体后,我发现存在一种可能的状态。通过调整上述等式,通过对 的条目进行计数来生成正确的统计数据。NO_COVERAGEmutationsNotCoveredstatus = "NO_COVERAGE"

评论

0赞 henry 2/14/2023
这仍然是不正确的,因为您没有考虑TIMED_OUT等状态。Pitest 将为它认为测试可以检测到的所有突变体设置 detected = 'true'。我建议用它来代替检查状态=“KILLED”
0赞 Jack Johns 2/14/2023
@henry澄清一下是有道理的:mutationsKilled 使用 detected='true',totalMutations 计算文件中的所有突变,mutationsNotCovered 使用 status = 'NO_COVERAGE'。使用上述公式和这些定义将产生测试强度。感谢您的帮助。