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) ,使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的判定覆盖,所以判定覆盖也无法发现上述的逻辑错误。跟语句覆盖相比:由于可执行语句要不就在判定的真分支,要不就在假分支上,所以,只要满足了判定覆盖标准就一定满足语句覆盖标准,反之则不然。 因此, 判定覆盖比语句覆盖更强。三、条件覆盖1、概念:设计足够多的测试用例,使得被测试程序中的每个判断语句中的每个逻辑条件的可能值至少被满足一次。也可以描述成: 设计足够多的测试用例,使得被测试程序中的每个逻辑条件的可能值至少被满足一次。在本例中有两个判断if(x>0 && y>0)(记为 P1)和 if(magic < 0) (记为 P2),共计三个条件x>0(记为 C1)、y>0(记为 C2)和 magic<0 (记为 C3)。2、测试用例:3 所有条件的可能取值都满足了一次,而且所有的判断本身...