一、测试方法对比
1、按照不同测试对象划分
测试方法名称 | 依据 | 测试对象 | 理论上的测试目的 | 实际工作中的测试目的 | 测试评估标准 | 测试环境 | 测试工作介入点 | 优点 | 缺点 | 适用范围 |
---|---|---|---|---|---|---|---|---|---|---|
黑盒 | SRS 需求规格说明书 | 整个软件产品 | 检查软件的功能实现是否与SRS一致 | 尽早进行验收,收回开发成本 | 需求覆盖率 | 尽量与用户环境一致 | 只要功能可以进行操作 | 简单,测试效率高 | 1.无法保证所有的代码逻辑都被测试到 2. 后台相关的非界面处理可能会遗漏(文件、数据库) 3.当前功能与其他功能有联系的部分可能也会被遗漏 | 适合进行功能、性能等和外部特性的测试,适用范围广泛,适用所有可见功能 |
白盒 | 详细设计文档LLD | 代码逻辑函数 | 检查代码的逻辑实现是否与LLD相一致 | 尽早发现问题缺陷,降低缺陷修复成本,便于定位问题 | 逻辑覆盖率,语句覆盖率,分支覆盖率,条件覆盖率,分支-条件覆盖率,路径覆盖 | 开发环境 | 只要独立的函数或类代码编写完成后 | 覆盖充分,可以覆盖到每行代码 | 技术较难,效率较低,成本较高 | 针对核心业务、复杂算法、公共模块、全局数据结构、新增功能 |
灰盒 | 概要设计文档HLD | 模块、子模块接口 | 检查接口实现是否与HLD相一致 | 逐步集成,降低缺陷定位成本 | 接口覆盖率 | 子系统集成尽可能和用户环境一致,模块内部接口以及模块间接口可以在开发环境下进行,子系统间的接口最后要在用户环境下测试 | 进行测试的接口模块已完成 | 可以提早定位和发现问题 | 技术最难,成本最高 | 公共模块之间的调用,复杂度较高的模块调用,使用频率较高的模块调用 |
2、按照是否运行程序划分
测试名称 | 特点 | 分类 | 优点 | 缺点 | 适用的范围 |
---|---|---|---|---|---|
静态 | 不执行程序 | 1.文档评审:A正规检视 B技术评审 C同行评审 2.静态分析技术:A控制流分析可以发现以下缺陷: 1.死循环 2.执行不到的语句 3.不存在的语句 B数据流分析可以发现以下缺陷:1.变量未定义被使用2.变量已定义未使用 C信息流分析 可以帮助开发人员定位缺陷:1.输入变量与语句的关系 2.输出变量与语句的关系 3.输入变量与输出变量的关系 | 较动态测试时间早,不用写代码 | 工作量大 | 重要的功能模块、核心的业务、算法公共模块 |
动态 | 执行程序 | 黑盒测试,动态白盒:插装在代码中,加入print打印语句,检查程序的中间运行结果 | 复杂、效率高 | 测试较晚,写代码 | 所有功能 |
3、按照不同的测试手段划分
特点 | 分类 | 优点 | 缺点 | 适用范围 |
---|---|---|---|---|
手工测试 | 手工 | 能够主动的发现bug | 重复工作量大,容易引入疲劳缺陷,只能依靠见到的界面 | 绝大多数的场合 |
自动化 | 自动化测试 | 可以无限制不断重复,把人从劳动里解放出来,提高劳动效率,提高了测试质量,能发现人不能发现的错误 | 无法发现脚本中未写明的缺陷 | GUI界面稳定;回归阶段;需求稳定且功能实现时才进行脚本的编写;性能的测试工具;提取相关的系统数据,构造并发用户 |
自动化测试就是用程序驱动程序的测试