1、语句覆盖 语句覆盖就是设计足够的调试用例,使得程序中的每个 语句至少执行一次。 入口 a A>1 T AND B=0 =X/A A x=x+1 返回
1、语句覆盖 语句覆盖就是设计足够的调试用例,使得程序中的每个 语句至少执行一次。 A> 1 AND B=0 F F 入口 A=2 OR x>1 返回 x=x/A T x=x+1 T a c b d e
左图程序段中共有4条路径:P1(ace)、P2 (abd)、P3(abe)、P4(acd) P正好满足语句覆盖的条件。可以设计如下的 输入数据: A=2,B=0,X=4 语句覆盖不能发现判断中的逻辑运算中的错误。 第一个判断中的逻辑运算符“&&若错写成了“‖, 利用上面的输入数据则检查不出这个错误
左图程序段中共有4条路径:P1(ace)、P2 (abd)、P3(abe)、P4(acd)。 语句覆盖不能发现判断中的逻辑运算中的错误。 第一个判断中的逻辑运算符“&&”若错写成了“||”, 利用上面的输入数据则检查不出这个错误。 P1正好满足语句覆盖的条件。可以设计如下的 输入数据: A=2,B=0,x=4
2、判定覆盖 判定覆盖就是设计足够的测试用例,使得程序中每个判 定的取“真”分支和取“假”分支至少都执行一次,判定覆 盖又称分支覆盖。 测试用例如果能够测试路径P1(ace)和P2(abd),就 可以满足判定覆盖要求。可以设计如下两组输入数据: A=2,B=0,x=4 A=1,B=1,x=1 也可以让测试用例测试路径P3(abe)和P4(acd)。相 应的两组输入数据如下: A=2,B=1,X=1 A=4,B=0,x=4 判定覆盖比语句覆盖强,但是仍不能保证判断条件的正 确性。例如:第二个判断条件中的x>1若错写成了ⅹ<1,利 用上面的输入数据就不能检查出这个错误
2、判定覆盖 判定覆盖就是设计足够的测试用例,使得程序中每个判 定的取“真”分支和取“假”分支至少都执行一次,判定覆 盖又称分支覆盖。 测试用例如果能够测试路径P1(ace)和P2(abd),就 可以满足判定覆盖要求。可以设计如下两组输入数据: A=2,B=0,x=4 A=1,B=1,x=1 也可以让测试用例测试路径P3(abe)和P4(acd)。相 应的两组输入数据如下: A=2,B=1,x=1 A=4,B=0,x=4 判定覆盖比语句覆盖强,但是仍不能保证判断条件的正 确性。例如:第二个判断条件中的x>1若错写成了x<1,利 用上面的输入数据就不能检查出这个错误
3、条件覆盖 条件覆盖就是设计足够的测试用例,使得程序判定中的 每个条件能获得各种可能的结果。 条件:A>1,B=0,A=2,x>1。需要有足够的测试 用例使得上述四个条件都能有满足和不满足的情况。以下这 两组输入数据能满足这些要求 A=2,B=0,x=4 A=1,B=1,x=1 这两组数据不仅满足条件覆盖的要求,而且也满足判定 覆盖的要求。但并不是所有的满足条件覆盖要求的数据都满 足判定覆盖的要求。下面的两组数据满足条件覆盖的要求: A=1,B=0,X=3 A=2,B=1,x=1 但是这组数据不满足判定覆盖的要求。为了解决这个问 题,可以采用下面的判定/条件覆盖
3、条件覆盖 条件覆盖就是设计足够的测试用例,使得程序判定中的 每个条件能获得各种可能的结果。 条件:A>1,B=0,A=2,x>1。需要有足够的测试 用例使得上述四个条件都能有满足和不满足的情况。以下这 两组输入数据能满足这些要求: A=2,B=0,x=4 A=1,B=1,x=1 这两组数据不仅满足条件覆盖的要求,而且也满足判定 覆盖的要求。但并不是所有的满足条件覆盖要求的数据都满 足判定覆盖的要求。下面的两组数据满足条件覆盖的要求: A=1,B=0,x=3 A=2,B=1,x=1 但是这组数据不满足判定覆盖的要求。为了解决这个问 题,可以采用下面的判定/条件覆盖
判定/条件覆盖 判定/条件覆盖就是设计足够的测试用例,使得判定中 的每个条件都取到各种可能的值,而且每个判定表达式也都 取到各种可能的结果。 对于上面的例子,下述两组输入数据能满足这些要求: A=2,B=0,X=4 A=1,B=1,x=1 判定/条件覆盖仍有缺陷。从表面上看,它测试了所有 条件的所有可能结果,但事实上并不是这样。因为某些条件 掩盖了另一些条件。例如,在逻辑表达式中,如果“与”表 达式中某一条件为“假”,则整个表达式的值为“假”,这 个表达式中另外的几个条件就不起作用了。同样地,如果在 “或”表达式中,某一条件为“真”,则整个表达式的值为 “真”,其它条件也就不起作用了。因此,采用判定/条件 覆盖时,逻辑表达式中的错误不一定能测试出来
4、判定/条件覆盖 判定/条件覆盖就是设计足够的测试用例,使得判定中 的每个条件都取到各种可能的值,而且每个判定表达式也都 取到各种可能的结果。 对于上面的例子,下述两组输入数据能满足这些要求: A=2,B=0,x=4 A=1,B=1,x=1 判定/条件覆盖仍有缺陷。从表面上看,它测试了所有 条件的所有可能结果,但事实上并不是这样。因为某些条件 掩盖了另一些条件。例如,在逻辑表达式中,如果“与”表 达式中某一条件为“假” ,则整个表达式的值为“假” ,这 个表达式中另外的几个条件就不起作用了。同样地,如果在 “或”表达式中,某一条件为“真” ,则整个表达式的值为 “真” ,其它条件也就不起作用了。因此,采用判定/条件 覆盖时,逻辑表达式中的错误不一定能测试出来