白盒测试

主要用于单元测试阶段

  • 控制流测试【逻辑覆盖测试(语句覆盖最弱,路径覆盖最强)】
  • 数据库测试
  • 程序变异测试【错误驱动测试】

逻辑覆盖标准[由低到高]

  • 语句覆盖

    • 确实每条代码语句至少执行一次

    • if (A and B): 
          X = 1  # 覆盖此语句
      else:
          Y = 1  # 可能未覆盖
      
  • 判定覆盖(分支覆盖)

    • 覆盖每个条件语句的真/假分支(if-else、switch)

      if(A): #A True和False都需要触发
        # ... 
      
  • 条件覆盖

    • 覆盖每个布尔子条件(原子条件)的真/假,但不保证组合结果
    • 对于if<A and B>,需分别测试A=True/FalseB=True/False,但是有可能漏掉A and B的整体分支
  • 判定/条件覆盖

    • 同时满足判定覆盖和提交覆盖
    • 仍然不处理条件组合
  • 条件组合覆盖

    • 覆盖所有原子条件的所有可能组合(真值表)
  • 路径覆盖

    • 覆盖代码中的所有可能的执行路径(包括循环、多次分支组合)

黑盒测试

主要用于集成测试、确认测试和系统测试阶段

  • 等价类划分:不同等价类,揭示不同的问题;有效等价类/无效等价类
  • 边界值分析:1<=x<=10,可取x的值为0、1、10、11作为测试数据
  • 错误推测:依赖经验和直觉测试
  • 判定表:最适合描述在多个逻辑条件取值的组合所构成的复杂情况下,分别要执行哪些不同的动作
  • 因果图:根据输入条件与输出条件之间的因果关系来设计测试用例