按测试阶段划分
- 单元测试(多由开发负责)
- 集成测试(组装测试, 主要是开发负责, 测试人员可以少量参与[接口])
- 系统测试(测试人员负责)
- 验收测试(团队内部,客户,客户委托第三方)
- α测试(内测)
- β测试(公测)
- γ测试(正式版候选版本)
RC: 候选版(经过多次beta测试, 基本不会添加新功能, bug较少)
GA: 正式版(稳定版, bug很少)
按是否覆盖源代码
-
黑盒测试(完全不关注代码, 只关注客户需求)
-
优点:
- 简单, 设计测试比较简单, 只关注需求, 不关注代码
- 不会被代码的思路干扰, 只关注最终需求, 更容易发现不满足需求的问题
-
缺点:
- 对于没有执行到的代码, 无法进行覆盖(比如预留后门)
-
分类
- 功能测试
- 逻辑功能测试
- 界面测试
- 安装升级卸载测试
- 性能测试
- 时间性能测试
- 稳定性测试
- 负载测试
- 压力测试
- 功能测试
-
白盒测试(关注实现细节, 对代码层面进行测试)
- 优点:
- 能够关注到代码实现的规范(代码的静态检查), 合理性
- 能够精确测试
- 缺点:
- 只关注白盒的情况, 会忽略到客户的最终需求
- 优点:
-
-
灰盒测试(介于黑盒和白盒之间,即关注需求又关注代码,多用于集成测试阶段)
是否运行
-
静态测试
指不运行代码/程序的测试, 可以检查代码的规范
-
动态测试
代码运行起来的测试
是否自动化
- 人工测试(手工测试)
- 自动化测试(利用代码和工具进行测试)
其他
- 冒烟测试 (执行大面积测试之前, 先测试最基本的功能能否实现, 有效避免测试资源浪费)
- 回归测试 (再次执行测试用例, 回归已经修复的软件缺陷)
- 随机测试 (没有逻辑, 没有目的的自由的测试)
- 探索性测试 (有目的进行探索式的测试)