软件工程 |白盒测试
先决条件 - 软件测试 |基本
白盒测试技术分析使用的数据结构、内部设计、代码结构和软件工作的内部结构,而不仅仅是黑盒测试中的功能。它也被称为玻璃盒测试或透明盒测试或结构测试。
白盒测试的工作流程:
- 输入:需求、功能规范、设计文档、源代码。
- 处理:进行风险分析以指导整个过程。
- 正确的测试计划:设计测试用例以覆盖整个代码。执行冲洗重复,直到达到无错误软件。此外,还传达了结果。
- 输出:准备整个测试过程的最终报告。
测试技术:
- 语句覆盖:在这种技术中,目标是至少遍历所有语句一次。因此,每一行代码都经过测试。在流程图的情况下,每个节点必须至少遍历一次。由于涵盖了所有代码行,因此有助于指出错误代码。
- 分支覆盖:在这种技术中,测试用例的设计使得来自所有决策点的每个分支至少遍历一次。在流程图中,所有边必须至少遍历一次。
- 条件覆盖:在此技术中,必须覆盖所有单个条件,如下例所示:
- 读 X, Y
- 如果(X == 0 || Y == 0)
- 打印'0'
在此示例中,有 2 个条件:X == 0 和 Y == 0。现在,测试这些条件,将 TRUE 和 FALSE 作为它们的值。一个可能的例子是:
- #TC1 – X = 0,Y = 55
- #TC2 – X = 5,Y = 0
- 多重条件覆盖:在这种技术中,条件的可能结果的所有可能组合至少测试一次。让我们考虑以下示例:
- 读 X, Y
- 如果(X == 0 || Y == 0)
- 打印'0'
- #TC1:X = 0,Y = 0
- #TC2:X = 0,Y = 5
- #TC3:X = 55,Y = 0
- #TC4:X = 55,Y = 5
因此,两个单独的条件需要四个测试用例。
同样,如果有 n 个条件,则需要 2 n 个测试用例。 - 基本路径测试:在这种技术中,控制流图由代码或流程图制成,然后计算圈复杂度,它定义了独立路径的数量,以便可以为每个独立路径设计最少数量的测试用例。
脚步:- 制作相应的控制流图
- 计算圈复杂度
- 找到独立的路径
- 设计每个独立路径对应的测试用例
流图表示法:它是由节点和边组成的有向图。每个节点代表一个语句序列或一个决策点。谓词节点是表示一个决策点的节点,该决策点包含一个条件,在该条件之后图分裂。区域由节点和边限定。
圈复杂度:它是软件逻辑复杂度的度量,用于定义独立路径的数量。对于图 G,V(G) 是它的圈复杂度。
计算 V(G):- V(G) = P + 1,其中 P 是流图中谓词节点的数量
- V(G) = E – N + 2,其中 E 是边数,N 是节点总数
- 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
- 循环测试:循环被广泛使用,它们是许多算法的基础,因此它们的测试非常重要。错误经常发生在循环的开头和结尾。
- 简单循环:对于大小为 n 的简单循环,测试用例设计为:
- 完全跳过循环
- 只有一个通过循环
- 2 次通过
- m 通过,其中 m < n
- n-1 次和 n+1 次通过
- 嵌套循环:对于嵌套循环,所有循环都设置为它们的最小计数,我们从最里面的循环开始。对最里面的循环进行简单的循环测试,然后向外进行,直到测试完所有循环。
- 级联循环:一个接一个的独立循环。每个都应用简单的循环测试。
如果它们不独立,则将它们视为嵌套。
- 简单循环:对于大小为 n 的简单循环,测试用例设计为:
优点:
- 由于测试了整个代码和结构,因此白盒测试非常彻底。
- 它导致代码删除错误的优化,并有助于删除额外的代码行。
- 它可以在较早的阶段开始,因为它不需要任何接口,就像黑盒测试的情况一样。
- 易于自动化。
缺点:
- 主要缺点是非常昂贵。
- 重新设计代码和重写代码需要重新编写测试用例。
- 与黑盒测试相反,测试人员需要对代码和编程语言有深入的了解。
- 在测试存在的代码时,无法检测到缺少的功能。
- 非常复杂,有时不现实。