在Sonarqube中计算测试指标的公式是什么?

时间:2016-01-14 10:19:01

标签: math sonarqube metrics

我正在使用SonarQube 4.5.4,我想知道单元测试的测试字段中度量的公式 - 请考虑下面的图像。我得到你在下面找到的价值。看完SonarQube's documentation on metrics后,我仍感到困惑。

我只找到单位测试成功密度%。设ρ为密度,m u 单位测试次数,m e 单位测试误差数和m f 单位数测试失败。然后我们

$$ \rho = m_u - \left(\frac{m_e + m_f}{m_u}\cdot 100  \right)$$

这是对的吗?其他值的公式是什么?

test data

2 个答案:

答案 0 :(得分:1)

到目前为止,我唯一能回答的是你的公式不正确,因为你误读了括号。

正确的公式是,带有您的记号:

http://www.HostMath.com/Show.aspx?Code=%5Crho%20%3D%20%5Cfrac%7Bm_u%20-%20(m_e%20%2B%20m_f)%7D%7Bm_u%7D%20%5Ccdot%20100

屏幕截图中的其他值在文档中定义(其中“Coverage”是您的“单元测试覆盖率”):

  

条件覆盖率=(CT + CF)/(2 * B)
  线路覆盖范围= LC / EL
  覆盖率=(CT + CF + LC)/(2 * B + EL)

     

,其中

     

CT =至少一次评估为“真”的条件   CF =至少一次评估为“假”的条件   LC =包含线= lines_to_cover - uncovered_lines

     

B =条件总数
  EL =可执行行的总数(lines_to_cover)

这些数字介于0和1之间,乘以100得到百分比。

答案 1 :(得分:1)

UT Coverage(或coverage)的计算方法如下(注意所有变量都是Double):

Double utCoverage = ((((totalConditions - totalUncoveredConditions) + totalLines) - totalUncoveredLines) / (totalConditions + totalLines)) * 100;

使用conditions_to_coveruncovered_conditionslines_to_coveruncovered_lines指标作为值。

IT覆盖率和总体覆盖率使用相同的公式计算,但要使用的指标不同。

对于IT覆盖范围,您必须使用it_conditions_to_coverit_uncovered_conditionsit_lines_to_coverit_uncovered_lines指标。

要获得整体覆盖率,您必须使用overall_conditions_to_coveroverall_uncovered_conditionsoverall_lines_to_coveroverall_uncovered_lines指标。

如果您正在寻找条件覆盖率公式,请点击此处:

Double conditionCoverage = ((totalConditions - totalUncoveredConditions) / totalConditions) * 100;

以下是线路覆盖:

Double lineCoverage = ((totalLines - totalUncoveredLines) / totalLines) * 100;

同样,您必须使用正确的指标来提供公式(参见上文。)

希望它有所帮助。

注意:这取自我的合并pdf报告生成工具。它已经成功地测试了代表超过2百万NCLOC并用于制作每周报告的项目(换句话说,我非常有信心它的工作原理。)