【发布时间】:2013-02-21 07:44:13
【问题描述】:
我正在研究这些之间的区别,但无法理解其中的区别。对我来说似乎是一样的。 他们不一样吗?风险来自短路,不是吗?
语句覆盖不需要测试逻辑运算符。在 C++ 中 和 C 这些运算符是 &&、|| 和 ?:。声明覆盖率不能 将由逻辑运算符分隔的代码与其他代码区分开来 该声明。执行语句中的任何部分代码都会导致 声明覆盖声明整个声明完全覆盖。什么时候 逻辑运算符避免不必要的评估(通过短路), 语句覆盖率给出了一个夸大的覆盖率测量。
void function(const char* string1, const char* string2 = NULL);
...
void function(const char* string1, const char* string2)
{
if (condition || strcmp(string1, string2) == 0) // Oops, possible null pointer passed to strcmp
...
}
决策覆盖率 - 一个缺点是该指标忽略了 由于短路而发生的布尔表达式中的分支 运营商。例如,考虑以下 C/C++/Java 代码 片段:
if (condition1 && (condition2 || function1()))
statement1;
else
statement2;
【问题讨论】:
标签: testing code-coverage logical-operators