蛙人 / 椰树 / 线覆盖范围

Line Coverage

线覆盖度量的定义

程序的线路覆盖范围是执行的行的数量除以总线总数。只考虑包含可执行语句的行,而不是纯声明的行。

覆盖水平

优势

线路覆盖非常适合通信和可视化覆盖范围。开发人员’s statement “我有80%的软件’通过单元测试涵盖的线路。”很容易理解人类收件人。特别是如果它与源代码的视图一起分别具有绿色和红色的线条。

然而,对于传达第一印象的简单性是在精度方面的缺点。有关详细信息,请参阅以下部分。

格式化依赖项

线路覆盖率是一个不稳定的覆盖率,因为它依赖于代码格式。简单的C函数的两个变体将用于  as an example:

Variant 1:简化版本,具有两行可执行代码:

double kelvin_to_celcius(double kelvin)
{
    if (kelvin < 0.0) return -1;
    return kelvin - 273.15;
}

变体2:重新格式化到扩展到三行可执行代码的版本:

double kelvin_to_celcius(double kelvin)
{
    if (kelvin < 0.0)
        return -1;
    return kelvin - 273.15;
}

编码样式的简单变化导致覆盖范围从50%到66.7%的覆盖率变化

kelvin_to_celcius(-10.0);

测试错误处理!

伪装的控制流程

让’s假设具有成功转换的变体1的调用:

kelvin_to_celcius(250.0);

这两条线路将被执行,从而导致100%的覆盖范围。我们完成了测试吗? n!错误情况也需要测试。唉,代码流的可能分支不是线条覆盖所关心的一部分。

安全标准的相关性

没有任何。 由于上面描述的限制,线覆盖率不提供与水平的任何值 分支覆盖范围 or – more importantly – MC / DC.。因此,用于功能安全的ISO 26262等共同标准说出来 建议书 对于像后者这样的水平。

排队覆盖范围的替代方案

格式依赖性是 remediated by 声明覆盖范围。一个人需要切换到 分支覆盖范围 解决执行流分支。如果一个人也关心通过布尔表达式表达的逻辑(导致分支),我们建议测量像MC / DC这样的条件覆盖度量。

复制链接