软件工程|白盒测试

先决条件—— 软件测试|基础

null

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

白盒测试工作流程:

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

测试技术:

  • 声明覆盖范围: 在这种技术中,目标是至少遍历所有语句一次。因此,每一行代码都要经过测试。对于流程图,每个节点必须至少遍历一次。由于所有的代码行都被覆盖,这有助于指出错误代码。
    Minimum 2 test cases are required so that all the nodes can be traversed at least once

    报表覆盖率示例

  • 分支机构覆盖: 在这种技术中,测试用例的设计使得来自所有决策点的每个分支至少被遍历一次。在流程图中,所有边必须至少遍历一次。
    图片[2]-软件工程|白盒测试-yiteyi-C++库

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

  • 条件覆盖范围: 在这种技术中,必须涵盖所有单独的条件,如以下示例所示:
    1. 读X,Y
    2. 如果(X==0 | | Y==0)
    3. 打印“0”

    在本例中,有两个条件:X==0和Y==0。现在,测试这些条件的值是否为真。一个可能的例子是:

    • #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. 设计对应于每个独立路径的测试用例

    流程图表示法: 它是一个由节点和边组成的有向图。每个节点代表一系列语句或一个决策点。谓词节点是一个表示决策点的节点,该决策点包含一个条件,在该条件之后,图将分裂。区域以节点和边为边界。 图片[3]-软件工程|白盒测试-yiteyi-C++库

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

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

    例子: 图片[4]-软件工程|白盒测试-yiteyi-C++库 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-1 ans n+1传球
    2. 嵌套循环: 对于嵌套循环,所有循环都设置为其最小计数,我们从最里面的循环开始。对最里面的回路进行简单的回路测试,并向外进行,直到所有回路都已测试完毕。
    3. 串联循环: 一个接一个的独立循环。简单的循环测试适用于每种情况。 如果它们不是独立的,就把它们当作筑巢。

优势:

  1. 在测试整个代码和结构时,白盒测试非常彻底。
  2. 它可以优化代码删除错误,并有助于删除额外的代码行。
  3. 它可以在早期启动,因为它不需要任何接口,就像黑盒测试一样。
  4. 易于自动化。

缺点:

  1. 主要缺点是价格非常昂贵。
  2. 重新设计代码和重写代码需要重新编写测试用例。
  3. 测试人员需要对代码和编程语言有深入的了解,而不是黑盒测试。
  4. 测试存在的代码时,无法检测到缺少的功能。
  5. 非常复杂,有时不现实。
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享