📜  软件工程 |白盒测试

📅  最后修改于: 2022-05-13 01:57:00.316000             🧑  作者: Mango

软件工程 |白盒测试

先决条件 - 软件测试 |基本

白盒测试技术分析使用的数据结构、内部设计、代码结构和软件工作的内部结构,而不仅仅是黑盒测试中的功能。它也被称为玻璃盒测试或透明盒测试或结构测试。

白盒测试的工作流程:

  • 输入:需求、功能规范、设计文档、源代码。
  • 处理:进行风险分析以指导整个过程。
  • 正确的测试计划:设计测试用例以覆盖整个代码。执行冲洗重复,直到达到无错误软件。此外,还传达了结果。
  • 输出:准备整个测试过程的最终报告。

测试技术:

  • 语句覆盖:在这种技术中,目标是至少遍历所有语句一次。因此,每一行代码都经过测试。在流程图的情况下,每个节点必须至少遍历一次。由于涵盖了所有代码行,因此有助于指出错误代码。
    至少需要 2 个测试用例,以便至少可以遍历所有节点一次

    语句覆盖示例

  • 分支覆盖:在这种技术中,测试用例的设计使得来自所有决策点的每个分支至少遍历一次。在流程图中,所有边必须至少遍历一次。

    需要 4 个测试用例,以便覆盖所有决策的所有分支,即覆盖流程图的所有边缘

  • 条件覆盖:在此技术中,必须覆盖所有单个条件,如下例所示:
    1. 读 X, Y
    2. 如果(X == 0 || Y == 0)
    3. 打印'0'

    在此示例中,有 2 个条件:X == 0 和 Y == 0。现在,测试这些条件,将 TRUE 和 FALSE 作为它们的值。一个可能的例子是:

    • #TC1 – X = 0,Y = 55
    • #TC2 – X = 5,Y = 0
  • 多重条件覆盖:在这种技术中,条件的可能结果的所有可能组合至少测试一次。让我们考虑以下示例:
    1. 读 X, Y
    2. 如果(X == 0 || Y == 0)
    3. 打印'0'
    • #TC1:X = 0,Y = 0
    • #TC2:X = 0,Y = 5
    • #TC3:X = 55,Y = 0
    • #TC4:X = 55,Y = 5

    因此,两个单独的条件需要四个测试用例。
    同样,如果有 n 个条件,则需要 2 n 个测试用例。

  • 基本路径测试:在这种技术中,控制流图由代码或流程图制成,然后计算圈复杂度,它定义了独立路径的数量,以便可以为每个独立路径设计最少数量的测试用例。
    脚步:
    1. 制作相应的控制流图
    2. 计算圈复杂度
    3. 找到独立的路径
    4. 设计每个独立路径对应的测试用例

    流图表示法:它是由节点和边组成的有向图。每个节点代表一个语句序列或一个决策点。谓词节点是表示一个决策点的节点,该决策点包含一个条件,在该条件之后图分裂。区域由节点和边限定。

    圈复杂度:它是软件逻辑复杂度的度量,用于定义独立路径的数量。对于图 G,V(G) 是它的圈复杂度。
    计算 V(G):

    1. V(G) = P + 1,其中 P 是流图中谓词节点的数量
    2. V(G) = E – N + 2,其中 E 是边数,N 是节点总数
    3. V(G) = 图中非重叠区域的数量

    例子:

    V(G) = 4(使用任何上述公式)
    独立路径数 = 4

    • #P1:1 - 2 - 4 - 7 - 8
    • #P2:1 – 2 – 3 – 5 – 7 – 8
    • #P3:1 – 2 – 3 – 6 – 7 – 8
    • #P4:1 – 2 – 4 – 7 – 1 – 。 . . – 7 – 8
  • 循环测试:循环被广泛使用,它们是许多算法的基础,因此它们的测试非常重要。错误经常发生在循环的开头和结尾。
    1. 简单循环:对于大小为 n 的简单循环,测试用例设计为:
      • 完全跳过循环
      • 只有一个通过循环
      • 2 次通过
      • m 通过,其中 m < n
      • n-1 次和 n+1 次通过
    2. 嵌套循环:对于嵌套循环,所有循环都设置为它们的最小计数,我们从最里面的循环开始。对最里面的循环进行简单的循环测试,然后向外进行,直到测试完所有循环。
    3. 级联循环:一个接一个的独立循环。每个都应用简单的循环测试。
      如果它们不独立,则将它们视为嵌套。

优点:

  1. 由于测试了整个代码和结构,因此白盒测试非常彻底。
  2. 它导致代码删除错误的优化,并有助于删除额外的代码行。
  3. 它可以在较早的阶段开始,因为它不需要任何接口,就像黑盒测试的情况一样。
  4. 易于自动化。

缺点:

  1. 主要缺点是非常昂贵。
  2. 重新设计代码和重写代码需要重新编写测试用例。
  3. 与黑盒测试相反,测试人员需要对代码和编程语言有深入的了解。
  4. 在测试存在的代码时,无法检测到缺少的功能。
  5. 非常复杂,有时不现实。