Published on

软件测试分层模型与黑盒/白盒测试方法详解

Authors
  • avatar
    Name
    Liant
    Twitter

分层测试

图片

优势

  • 定位快:测出哪一层问题,很明确。此方法在处理线上问题则比较常用
  • 针对性强:在用例设计和测试执行时,更具有针对性,思维更清晰
  • 节约时间成本:
    • 分层测试是一个迭代的过程,测试可以提前介入,不用等到最后面才介入,缩短整体项目时长
    • 提前暴露问题,缩短BUG查找时间和修复BUG的时间 测试阶段
  • 单元测试
    • 释义:针对组成软件系统的最基本的单位(函数或者类)进行测试,叫做单元测试,也称组件测试
    • 依据:详细设计文档
    • 方法---白盒测试
      • 动态测试
        • 白盒测试
          • 语句覆盖测试
          • 判定覆盖测试
          • 条件覆盖测试
          • 判定—条件覆盖测试
          • 条件组合测试
          • 路径覆盖测试
        • 黑盒测试
          • 等价类划分方法
          • 边界值分析方法
          • 错误推测方法
      • 静态测试
        • 代码走查
        • 代码审查
        • 代码评审
    • 考核基准:代码覆盖率,逻辑覆盖率
    • 测试策略:
      • 自顶向下
        • 先对最顶层的基本单元进行测试,把所有调用的单元做成桩模块,然后再对第二层的基本单元进行测试,使用上面已测试的单元做驱动模块,依此类推直到测试完所有基本单元
      • 自底向上
        • 先对最底层的基本单元进行测试,模拟调用该单元的单元做驱动模块,然后再对上面一层进行测试,用下面已被测试过的单元做桩模块,依此类推,直到测试完所有单元
      • 孤立单元测试(优选)
        • 不考虑每个单元与其它单元之间的关系,为每个单元设计桩模块或驱动模块。每个模块进行独立的单元测试
  • 集成测试
    • 释义:将测试完成的单元进行组装,或者将组装好的模块集成为系统,叫做集成测试
    • 依据:概要设计文档
    • 方法--灰盒测试
      • 白盒测试
        • 语句覆盖测试
        • 判定覆盖测试
        • 条件覆盖测试
        • 判定—条件覆盖测试
        • 条件组合测试
        • 路径覆盖测试
      • 黑盒测试
        • 功能测试
        • 性能测试
          • 压力
          • 负载
          • 稳定
        • 异常测试
    • 考核基准:接口覆盖率
  • 系统测试
    • 释义:将组装完成的软件系统作为一个元素和其他软件或者硬件系统集成在一起的测试,叫做系统测试
    • 依据:需求原型文档(软件需求规格说明书)
    • 方法--黑盒测试
      • 功能测试
      • 性能测试
        • 压力
        • 负载
        • 稳定
      • 安全测试
      • 易用性测试
      • 专项测试
        • 弱网测试
        • 兼容性测试
        • 安装卸载版本升级
        • 流量测试
        • 事件交叉测试
        • 电量测试
  • 验收测试
    • 释义:用户参与的测试叫做验收测试
    • 方法
      • Alpha测试(内测)用户在开发现场,有开发人员进行记录,整个测试过程可控
      • Beta测试(公测)直接发布到市场,没有开发人员记录,环境比较复杂多样,整个测试过程不可控
  • 回归测试
    • 释义:执行用例失败而提交了缺陷,针对缺陷修改后再次验证缺陷是否修改正确以及缺陷修改后受到影响的测试用例再次测试;回归测试发生在任何阶段
    • 策略
      • 完全重复回归测试
      • 选择重复回归测试

测试产出

  • 测试计划
    • 针对测试阶段做规划
      • 时间的安排
      • 人员安排
      • 任务的分配
      • 测试目标的要求
      • 测试范围的划定
      • 测试计划文档(单元测试计划;系统测试计划;集成测试计划;验收测试计划)
    • 测试方案
      • 测试方案文档
        • 单元测试方案
        • 集成测试方案
        • 系统测试方案
        • 验收测试方案
      • 测试策略
        • 针对测试计划给出时间要求,给定的人员要完成分配的测试任务进行各种策略
          • 详细说明怎么做
          • 具体的工具
          • 方法
          • 模板
          • 任务的顺序
  • 测试实现
    • 测试用例
    • 测试脚本
      • 造数据
      • 自动化脚本
      • 接口测试脚本
      • 单元测试脚本
  • 测试执行
    • 搭建测试环境
    • 准备测试数据
    • 执行测试用例
    • 提交缺陷
    • 跟踪缺陷
    • 回归测试
    • 测试报告

测试分类及方法

  • 黑盒测试
    • 释义:针对软件系统的整体规格做测试,看不到内部的细节结构,好比一个黑色的盒子,所以叫黑盒测试
    • 黑盒的方法
      • 等价类划分法
      • 边界值分析法
      • 判定表法
      • 因果图法
      • 正交实验法
      • 状态迁移图法
      • 流程分析法
      • 错误猜测
    • 黑盒测试特点
      • 优点
        • 对代码能力要求低
        • 只测试最终的结果
        • 测试效率高
        • 容易理解
      • 缺点
        • 解决问题的成本高
        • 问题定位比较难
        • 不测试软件系统内部细节逻辑结果
        • 对软件需求规格说明书的要求比较高
  • 白盒测试
    • 概念:针对软件系统的内部细节做测试,考察内部的逻辑结构,好比盒子是开发的或者透明的,所以叫做白盒测试
    • 方法
      • 动态测试
        • 白盒测试
          • 语句覆盖测试
          • 判定覆盖测试
          • 条件覆盖测试
          • 判定—条件覆盖测试
          • 条件组合测试
          • 路径覆盖测试
        • 黑盒测试
          • 等价类划分方法
          • 边界值分析方法
          • 错误推测方法
      • 静态测试
        • 代码走查
        • 代码审查
        • 代码评审
      • 程序插装:将测试代码插入到被测试代码,通过运行插入测试代码的程序得出测试结果,查出被测试代码中是否有问题
    • 白盒测试特点
      • 优点
        • 问题发生容易定位
        • 测试的比较彻底
        • 解决问题的成本比较低
      • 缺点:
        • 对测试人员的代码能力要求高
        • 测试的工作的工作量大
        • 测试的成本比较高
        • 对规格问题不做验证
  • 灰盒测试
    • 概念:综合运用黑盒测试与白盒测试,灰度取决于被测试对象的颗粒度
  • 静态测试
    • 概念:被测试对象没有被运行,比如代码的编译,文档的评审
    • 方法
      • 自动化手段
        • 静态分析
        • 语法分析
        • 符号执行
      • 人工手段
        • 代码走读
        • 设计文档技术评审
        • 需求规格说明书的正规检视
      • 技术评审:对技术文档进行评估,选择方案
      • 走读:作者自己讲解,目的是为了发现缺陷,同时可以交流学习
  • 动态测试
    • 概念:被测试对象被运行
    • 方法
      • 自动化测试
      • 人工测试