语句覆盖率确保代码中的每个语句至少执行一次。
决策/分支覆盖率测试每个决策的每个分支/输出是否都被覆盖,即执行所有真假分支中的语句。
但这不是一样的吗?在语句覆盖率中,我需要执行所有语句,因此我想它只能通过运行所有可能的方法来完成。 我知道我在这里错过了什么。
语句覆盖率确保代码中的每个语句至少执行一次。
决策/分支覆盖率测试每个决策的每个分支/输出是否都被覆盖,即执行所有真假分支中的语句。
但这不是一样的吗?在语句覆盖率中,我需要执行所有语句,因此我想它只能通过运行所有可能的方法来完成。 我知道我在这里错过了什么。
if (a || b) {
test1 = true;
}
else {
if (c) {
test2 = true;
}
}
test1 = true;
是一个变量赋值语句,因此是可执行的语句。 - Frank Schmitt普通语句覆盖要求实际存在的所有语句都被执行。
分支覆盖要求即使是不可见的else分支也要被执行。
类似的情况也发生在没有默认情况的switch语句和repeat-until循环中。分支覆盖要求执行默认情况,并且至少执行两次repeat-until循环。
一个代码示例:
if (passwordEnteredOK()) {
enterSystem();
}
/* Invisible else part
else {
// do nothing
}
*/
使用语句覆盖只需检查您能否使用系统的正确密码。使用分支覆盖还要测试,使用错误密码时,您将无法进入系统。
您可能会有这样的语句:
if(a || b || (c && d && !e)) {
test1 = true;
} else {
test2 = false;
}