只能发现软件错误,不能证明软件正确;不能评价软件质量,只能间接证明软件质量。
目的:尽可能发现多的软件错误。
动态测试
- 黑盒测试
- 白盒测试
- 灰盒测试
静态测试
- 桌前审查
- 代码审查
- 代码走查
黑盒测试法
- 等价类划分:取区间内一个值
- 边界值分析:取区间边界值,包括最大值、最小值、最大值+1、最小值-1
- 错误推测:假设输入错误,看程序是否能检测出来
- 因果图
白盒测试法
- 基本路径测试
- 循环覆盖测试
- 逻辑覆盖测试
- SC 语句覆盖:每个语句至少执行一次
- DC 判定覆盖:每个判定的每个真假分支至少执行一次(if里的整体)
- CC 条件覆盖:每个条件的每个逻辑条件至少执行一次(每个<>=!=表达式)
- C/DC 条件判定覆盖:上面两者的结合
- MCC 条件组合覆盖:每个条件的每个逻辑条件的每个组合至少执行一次(就是CC里的所有组合,同一个判断里的排列组合)
- MC/DC 修正的条件判定覆盖
- PC 路径覆盖:每条if的路径被执行一次
MC/DC 修正的条件判定覆盖
其他条件不变时,仅修改这个值,就能影响结果
例子: A && (B || C)
用例 | A | B | C | 结果 | A | B | C |
---|---|---|---|---|---|---|---|
1 | 0 | 0 | 0 | 0 | |||
2 | 0 | 0 | 1 | 0 | 6 | ||
3 | 0 | 1 | 0 | 0 | 7 | ||
4 | 0 | 1 | 1 | 0 | 8 | ||
5 | 1 | 0 | 0 | 0 | 7 | 6 | |
6 | 1 | 0 | 1 | 1 | 2 | 5 | |
7 | 1 | 1 | 0 | 1 | 3 | 5 | |
8 | 1 | 1 | 1 | 1 | 4 |
4条即可同时满足ABC的需求
测试阶段(级别)
- 单元测试:白盒测试
- 集成测试:白盒测试(如果某依赖模块没开发出来,测试人员需要开发模拟出来)
- 一次性组装
- 增量式组装
- 自顶向下
- 自底向上
- 混合
- 系统测试:灰盒测试(性能测试、压力测试)
- 确认测试:黑盒测试(实际环境中测试,检查是否符合软件规格说明书,使用实际应用数据)