语句覆盖,顾名思义就是针对代码语句的嘛。它的含义是我们设计出来的测试用例要保证程序中的每一个语句至少被执行一次。通常语句覆盖被认为是“最弱的覆盖”,原因是它仅仅考虑对代码中的执行语句进行覆盖而没有考虑各种条件和分支,因此在实际运用中语句覆盖很难发现代码中的问题。
特点:
1、程序中每一个语句执行一次 2、对程序执行逻辑的覆盖率低,属于最弱的覆盖方式 3、无需测试程序的分支情况 4、无需测试程序分支判断的输入值以及输入值的组合 5、无需测试程序执行的不同路径
举个非常简单的例子1:
public int foo(int a,int b)
{
return a/b;
}
这是一个求两数之商的函数。如果我们设计如下的测试用例:
TestCase: a = 2, b = 1
这时候我们会发现,该函数的代码覆盖率达到了100%,并且设计的case可以顺利通过测试。但是显然该函数有一个很明显的bug:当 b=0 时,会抛出异常。
再举个例子2:
if A and B then Action1
if C or D then Action2
语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得A=true B=true C=true 即可。
再举个例子3:
用例编号 | 测试用例 | 覆盖路径 | 预期结果 |
---|---|---|---|
1 | A=2,B=0,X=3 | a-c-e | X=2.5 |
执行编号1 用例,程序从上往下执行,每一行代码都会运行 —— 语句覆盖
执行结果:X=2.5