白盒测试综合实验:逻辑覆盖和基本路径测试

问题描述:

被测程序的C语言伪代码描述如下:

// 伪代码
if (a > 0 && b > 0) {
  print("a = ", a, ", b = ", b);
} else if (a > 0 && c > 0) {
  print("a = ", a, ", c = ", c);
} else if (b > 0 && c > 0) {
  print("b = ", b, ", c = ", c);
} else {
  print("a = ", a, ", b = ", b);
}

请分别使用逻辑覆盖法和基本路径测试法设计测试用例并从多维度比较其发现缺陷的能力。

要求:

  1. 分别使用5种逻辑覆盖法设计测试用例。
  2. 使用基本路径测试法设计测试用例。(要求画出控制流图、计算环形复杂度、列出基本路径集)
  3. 比较5种逻辑覆盖法设计出的测试用例的覆盖能力。
  4. 比较条件组合覆盖和基本路径测试设计出的测试用例的覆盖能力。

内容:

(1) 逻辑覆盖法设计测试用例:

  1. 测试用例1:输入 a = 2, b = 3, c = 4,预期输出为 'a = 2, b = 3'
  2. 测试用例2:输入 a = 0, b = 3, c = 4,预期输出为 'a = 0, b = 3'
  3. 测试用例3:输入 a = 2, b = 0, c = 4,预期输出为 'a = 2, b = 0'
  4. 测试用例4:输入 a = 0, b = 0, c = 4,预期输出为 'a = 0, b = 0'
  5. 测试用例5:输入 a = 2, b = 3, c = 0,预期输出为 'a = 2, c = 0'

(2) 基本路径测试法设计测试用例:

控制流图如下所示:

[控制流图图片]

根据控制流图,计算环形复杂度为 5,基本路径集为:

  1. 1-2-3-4-5-6-7-10
  2. 1-2-3-7-10
  3. 1-2-3-4-6-7-10
  4. 1-2-3-4-5-7-10
  5. 1-2-3-4-5-6-7-8-9-7-10

根据基本路径集,设计测试用例:

  1. 测试用例1:输入 a = 2, b = 3, c = 4,预期输出为 'a = 2, b = 3'
  2. 测试用例2:输入 a = 0, b = 3, c = 4,预期输出为 'a = 0, b = 3'
  3. 测试用例3:输入 a = 2, b = 0, c = 4,预期输出为 'a = 2, b = 0'
  4. 测试用例4:输入 a = 0, b = 0, c = 4,预期输出为 'a = 0, b = 0'
  5. 测试用例5:输入 a = 2, b = 3, c = 0,预期输出为 'a = 2, c = 0'

(3) 比较5种逻辑覆盖法设计出的测试用例的覆盖能力:

逻辑覆盖法有以下五种方法:

  1. 条件覆盖:每个条件的所有可能取值至少被测试到一次。在上述测试用例中,每个条件的取值都被覆盖到了,因此覆盖能力较强。
  2. 分支覆盖:每个条件的每个分支至少被测试到一次。在上述测试用例中,每个条件的每个分支都被覆盖到了,因此覆盖能力较强。
  3. 路径覆盖:所有可能的路径至少被测试到一次。在上述测试用例中,所有可能的路径都被覆盖到了,因此覆盖能力较强。
  4. 条件组合覆盖:每个条件的所有可能组合至少被测试到一次。在上述测试用例中,每个条件的所有可能组合都被覆盖到了,因此覆盖能力较强。
  5. 分支组合覆盖:每个条件的每个分支的所有可能组合至少被测试到一次。在上述测试用例中,每个条件的每个分支的所有可能组合都被覆盖到了,因此覆盖能力较强。

(4) 比较条件组合覆盖和基本路径测试设计出的测试用例的覆盖能力:

条件组合覆盖法和基本路径测试法都是通过设计测试用例来达到覆盖所有可能情况的目的。从覆盖能力上来看,条件组合覆盖法要求每个条件的所有可能组合都被测试到一次,而基本路径测试法要求所有可能的路径都被测试到一次。在上述测试用例中,两者的覆盖能力相当,都能覆盖到所有可能情况。但是基本路径测试法可能会生成更多的测试用例,因为它要覆盖到所有可能的路径。因此,在测试资源有限的情况下,可以选择使用条件组合覆盖法来设计测试用例,以减少测试用例的数量。

白盒测试综合实验:逻辑覆盖和基本路径测试

原文地址: https://www.cveoy.top/t/topic/pf4j 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录