一、实验目的

1、能熟练应用白盒测试技术(逻辑覆盖方法)进行测试用例设计。
2、对测试用例进行优化设计。

二、实验环境

操作系统:Windows XP,Windows 7,Windows 10
应用系统:Visual C++开发工具和Office工具

三、实验任务

题目一:使用逻辑覆盖测试方法测试以下程序段

  1. 说明:
    程序段中每行开头的数字(1~10)是对每条语句的编号。
    (1)画出程序的控制流图(用题中给出的语句编号表示)。
    (2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示);

  2. 任务:
    补充完成:流程图;表中内容

(1)绘制流程图

(2)决策表

① 语句覆盖: 保证程序的每一条可执行语句至少执行一次。

② 判断覆盖 : 保证程序中每个判定节点的取真和取假分支至少执行一次

③ 条件覆盖:保证程序中每个复合判定表达式中,每个简单判定条件的取真和取假情况至少执行一次

④ 判断/条件覆盖:满足判定节点的取真和取假分支至少执行一次,且每个简单判定条件的取真和取假情况也应至少执行一次

⑤ 多条件组合覆盖:通过执行足够多的测试用例,使得程序中每个判定中的所有可能的条件的取值组合都至少被执行一次
① X=4,z=9 (T T)
② X=4,z=11(T F)
③ X=2,z=9 (F T)
④ X=2,z=11 (F F)
⑤ X=4,y=6 (T T)
⑥ X=4,y=4 (T F)
⑦ X=2,y=6 (F T)
⑧ X=2,y=4(F F)

⑥ 路径覆盖:设计足够过的测试用例,使得程序中所有可能的路径都至少被执行一次

题目二:使用逻辑覆盖测试方法测试以下程序段

要求:分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示),请自己适当增减表格行数。

① 语句覆盖
② 判断覆盖

③ 条件覆盖

④ 判断/条件覆盖

⑤ 多条件组合覆盖

⑥ 路径覆盖

四 实验小结

  • ① 语句覆盖: 保证程序的每一条可执行语句至少执行一次。
    优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。
    缺点:语句覆盖可以保证程序中的每个语句都得到执行,但发现不了判定中逻辑运算的错误,即它并不是一种充分的检验方法
  • ② 判断 覆盖 : 保证程序中每个判定节点的取真和取假分支至少执行一次
    优点:要强于语句覆盖,且简单。
    缺点:大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径
  • ③ 条件覆盖:保证程序中每个复合判定表达式中,每个简单判定条件的取真和取假情况至少执行一次
    优点:显然条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径。
    缺点:不一定满足语句覆盖和判定覆盖
  • ④ 判断/条件覆盖:满足判定节点的取真和取假分支至少执行一次,且每个简单判定条件的取真和取假情况也应至少执行一次
    优点:判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足
    缺点:从表面上看,判定/条件覆盖测试了各个判定中的所有条件的取值,但实际上,编译器在检查含有多个条件的逻辑表达式时,某些情况下的某些条件将会被其它条件所掩盖。因此,判定/条件覆盖也不一定能够完全检查出逻辑表达式中的错误
  • ⑤ 多条件组合覆盖:通过执行足够多的测试用例,使得程序中每个判定中的所有可能的条件的取值组合都至少被执行一次
    优点:满足判定覆盖、条件覆盖和判断/条件覆盖
    缺点:不能保证覆盖了所有的程序执行路径
  • ⑥ 路径覆盖:设计足够过的测试用例,使得程序中所有可能的路径都至少被执行一次
    优点:对程序的测试更彻底,覆盖面更广
    缺点:对较复杂的程序,路径数目可能非常庞大,因此要实现路径覆盖测试可能很难。