1 int logicExample(int x, int y) { int magic=0; if(x>0 && y>0) { magic = x+y+10; // 语句块 1 } else { magic = x+y-10; // 语句块 2 } if(magic < 0) { magic = 0; // 语句块 3 } return magic; // 语句块 4 2 一、语句覆盖1、概念:设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次
在本例中,可执行语句是指语句块1 到语句块 4 中的语句
2、测试用例{x=3, y=3} 可以执行到语句块1 和语句块 4,所走的路径:a-b-e-f {x=-3, y=0} 可以执行到语句块2、语句块 3 和语句块 4,所走的路径:a-c-d-f 这样,通过两个测试用例即达到了语句覆盖的标准,当然,测试用例(测试用例组)并不是唯一的
3、测试的充分性:假设第一个判断语句if(x>0 && y>0)中的 “&&”被程序员错误地写成了“|| ”,即 if(x>0 || y>0) ,使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖,所以语句覆盖无法发现上述的逻辑错误
在六种逻辑覆盖标准中,语句覆盖标准是最弱的
二、判断覆盖(分支覆盖)1、概念:设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次
在本例中共有两个判断if(x>0 && y>0)(记为 P1)和 if(magic < 0) (记为 P2)
2、测试用例:两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准
3、测试的充分性:假设第一个判断语句if(x>0 && y>0)中的 “&&”被程序员错误地写成了“|| ”,即 if(x>0 || y>0) ,使用上面设计出来的一组测试用例来进行测