- 白盒测试
- 白盒测试又称玻璃盒测试、透明盒测试、开放盒测试、结构化测试、基于代码的测试、逻辑驱动测试等。
- 白盒测试需要对系统内部的结构和工作原理有清晰的了解,并且一次来设计用例。
- 使用白盒测试方法产生的测试用例能够:
- 保证一个模块中的所有独立路径至少被执行一次
- 对所有逻辑值均需测试 true 和 false
- 在上下边界及可操作范围内运行所有循环
- 检查内部数据结构以确保其有效性
- 白盒测试的常用技术
- 静态分析技术
- 控制流分析技术
- 数据流分析技术
- 信息流分析技术
- 动态分析技术
- 逻辑覆盖率测试(分支测试、路径测试)
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 判定条件覆盖
- 路径覆盖
- 程序插装
- 程序插装是在程序中插入一些打印语句,通过这些信息了解执行过程中程序的一些动态属性。如程序的实际执行路径、特定变量在特定时刻的取值
- 逻辑覆盖率测试(分支测试、路径测试)
- 静态分析技术
- 白盒测试的优缺点
- 优点
- 迫使测试人员仔细的思考软件的实现
- 检查代码中的每条分支和路径
- 揭示隐藏在代码中的错误
- 对代码测试比较彻底
- 最优化
- 缺点
- 昂贵
- 无法检查代码中遗漏的路径和数据敏感性错误
- 不验证规格的正确性
- 优点
- 黑盒测试
- 黑盒测试又叫功能测试,主要关注被测软件的内部实现而不是内部逻辑
- 黑盒测试的常用技术
- 没有用户参与的黑盒测试
- 功能性测试
- 容量测试
- 安全性测试
- 负载测试
- 恢复性测试
- 标杆测试(考虑硬件和软件的结合,关注特定操作的量化数据,有些也考虑用户测试,比较不同软件系统作为标杆测试的有效性)
- 稳定性测试
- 可靠性测试
- 有用户参与的黑盒测试
- 外场测试
- 实验室测试
- 没有用户参与的黑盒测试
- 黑盒测试的优缺点
- 优点
- 对于更大的代码单元来说,比白盒测试效率更高
- 测试人员不需要了解实现的细节,包括特定的编程语言
- 测试人员和开发人员彼此独立
- 从用户的角度测试,更容易被理解和接受
- 有助于暴露任何规格不一致或有歧义的问题
- 测试用例可以在规格完成之后马上进行
- 缺点
- 只有小部分可能的输入被测试到,要测试每个可能的输入几乎是不可能的
- 若没有清晰和简明的规格,测试用例很难设计
- 如果没有告诉测试人员开发已经执行过的测试用例,在测试数据上会存在不必要的重复
- 会有很多程序路径没有被测试到
- 优点
- 灰盒测试
- 介于白盒测试和黑盒测试之间的测试,常见的灰盒测试是集成测试
- 静态测试
- 静态测试是一种不通过执行程序而进行测试的技术
- 主要有三种不同的程序测试可能性
- 程序内部检查完整性和一致性
- 考虑预定义规则
- 把程序和其响应的规格和文档进行比较
- 静态分析
- 手工
- 检视:一般根据检查表进行
- 走读:目标是对源代码背后的逻辑和基本假设进行质疑
- 自动
- 静态验证
- 语法分析器
- 符号执行器
- 手工
- 动态测试
- 主要特点是在模拟或真实的环境中执行之前、之中或之后对软件系统行为的分析。
- 动态分析工具
- 测试覆盖率分析:测试白盒测试技术对代码的检测范围
- 跟踪:跟踪程序执行期间的所有路径,例如所有变量的值
- 调整:度量程序执行过程中使用的资源
- 模拟:模拟系统的部分,例如无法获得的代码或硬件
- 断言检查:测试在复杂逻辑结构中是否某个条件已经被给出
- 常用的白盒动态测试工具
- 运行态错误检测:DevPartner(BoundChecker、SmartChecker、Jchecker、FailSafe)、Pure
- 覆盖率分析:DevPartner(TrueCoverage)、Pure、Logiscopre、WCantC/C++
- 基于源代码的性能分析:DevPartner(TrueTime)、Pure
- 嵌入式代码性能分析测试工具:CodeTest
- 常用的黑盒动态测试工具
- 功能测试:QARun、Robot、QTP、SilkTest
- 性能测试:LoadRunner、SilkPerformer、Robot
欢迎扫码关注微信公众号「一朵儿的软件测试之旅」一起学习交流