例如
public static int Test(int x,int y,int z){
if(x>3&&z5)
y=x*y-10;
return y;
}
PS: &&同时为真才为真,有一个为假即为假。
||同时为假才为假,有一个为真即为真。
y=y/x+4 即 y除x后再加4;并不是 y/(x+4)。
设计测试用例
1.语句覆盖
x | y | z | x>3 | z<10 | x==4 | y>5 | x>3&&z<10 | x==4 || y>5 | 最终结果 |
---|---|---|---|---|---|---|---|---|---|
4 | 8 | 4 | T | T | T | T | T | T | 14 |
可以简单理解为:条件以及判断分支都为true。
2.判定覆盖
x | y | z | x>3 | z<10 | x==4 | y>5 | x>3&&z<10 | x==4 || y>5 | 最终结果 |
---|---|---|---|---|---|---|---|---|---|
6 | 4 | 4 | T | T | F | F | T | F | 4 |
4 | 8 | 10 | T | F | T | T | F | T | 22 |
可以简单理解为:两个判断分支,分别都有一次true与false。
3.条件覆盖
x | y | z | x>3 | z<10 | x==4 | y>5 | x>3&&z<10 | x==4 || y>5 | 最终结果 |
---|---|---|---|---|---|---|---|---|---|
4 | 4 | 10 | T | F | T | F | F | T | 6 |
2 | 6 | 4 | F | T | F | T | F | T | 2 |
可以简单理解为:每个条件都分别有一次true与false。
4.条件判定覆盖
x | y | z | x>3 | z<10 | x==4 | y>5 | x>3&&z<10 | x==4 || y>5 | 最终结果 |
---|---|---|---|---|---|---|---|---|---|
4 | 8 | 4 | T | T | T | T | T | T | 14 |
2 | 4 | 10 | F | F | F | F | F | F | 4 |
可以简单理解为:全都为true或者全都为false。
5.条件组合覆盖
x | y | z | x>3 | z<10 | x==4 | y>5 | x>3&&z<10 | x==4 || y>5 | 最终结果 |
---|---|---|---|---|---|---|---|---|---|
4 | 8 | 4 | T | T | T | T | T | T | 14 |
4 | 4 | 10 | T | F | T | F | F | T | 6 |
3 | 7 | 4 | F | T | F | T | F | T | 11 |
2 | 4 | 10 | F | F | F | F | F | F | 4 |
可以简单理解为:同时满足条件覆盖与条件判定覆盖。
6.路径覆盖
x | y | z | x>3 | z<10 | x==4 | y>5 | x>3&&z<10 | x==4 || y>5 | 最终结果 |
---|---|---|---|---|---|---|---|---|---|
4 | 8 | 4 | T | T | T | T | T | T | 14 |
6 | 4 | 4 | T | T | F | F | T | F | 4 |
4 | 8 | 10 | T | F | T | T | F | T | 22 |
2 | 4 | 10 | F | F | F | F | F | F | 4 |
可以简单理解为:两个判断分支全真、第一个为真,第二个为假、第一个为假,第二个为真、全假。
最后:
测试代码时所执行的路径占总路径数越高,则覆盖程度越大。
那么覆盖准则最强的是路径覆盖,最弱的是语句覆盖。