举例
public class Coverage
{
public void Main()
{
1 System.out.println("start main function:path a...");
2 int A,B,X;
3 if(A>1 and B==0){
4 X=X/A;
5 System.out.println("path c");
5 } else {
6 System.out.println("path b");
7 }
8 if(A==2 or X>1){
9 X=X+1;
10 System.out.println("path e");
11 } else {
12 System.out.println("path d");
13 }
14 System.out.println("end main function.");
}
}[1]
语句覆盖
语句覆盖 SC(Statement Coverage),就是设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖在
测试中主要发现缺陷或错误语句。[1]
例如上边的Coverage类代码,从path a到path c再到path e的路径就是所有可执行的语句路径,所以选择path ace路径设计测试用例即可覆盖所有可执行语句。[1]
语句覆盖率的公式:语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100%[1]
语句覆盖的缺点:对程序执行逻辑的覆盖很低。[1]
判定覆盖(分支覆盖)
public class Coverage
{
public void Main()
{
1 System.out.println("start main function:path a...");
2 int A,B,X;
3 if(A>1 and B==0){
4 X=X/A;
5 System.out.println("path c");
5 } else {
6 System.out.println("path b");
7 }
8 if(A==2 or X>1){
9 X=X+1;
10 System.out.println("path e");
11 } else {
12 System.out.println("path d");
13 }
14 System.out.println("end main function.");
}
}[1]
语句覆盖
语句覆盖 SC(Statement Coverage),就是设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖在
测试中主要发现缺陷或错误语句。[1]
例如上边的Coverage类代码,从path a到path c再到path e的路径就是所有可执行的语句路径,所以选择path ace路径设计测试用例即可覆盖所有可执行语句。[1]
语句覆盖率的公式:语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100%[1]
语句覆盖的缺点:对程序执行逻辑的覆盖很低。[1]
判定覆盖(分支覆盖)