测试什么比怎样测试更重要。
随着时间的推移,修复缺陷的费用惊人的增长
螺旋模式:一开始不定义所有细节,实现部分功能后反馈,然后循环。
由于无法完全测试软件,所以无法保证没有缺陷。
图P42
不是所有的软件缺陷都要修复。例如修复的风险太大或者是不常出现的软件缺陷。
可靠性是质量的一部分
测试:找出缺陷
QA(质量保证):创建和执行关于开发的标准
黑盒测试(功能测试,行为测试):
白盒测试:
静态测试:不对软件进行操作
动态测试:
静态黑盒测试:查看产品说明书,检查是否满足客户需求
动态黑盒测试:
- 通过性测试:
- 失效性测试:
等价划分:将具有相似输入输出的分在同一组
由于可以将软件分为数据(例如输入输出,磁盘文件)和程序。
数据测试的等价划分原则:边界条件:边界的2边
- 次边界条件(内边界条件):
- 空值:没有输入便进行下一步
无效数据:失效性测试
状态测试:
状态转换图(通过性测试):每种状态至少访问1次。
失效性测试:例如
- 竞争
- 重复测试:通过不断执行重复的操作检查是否会出现内存泄露
- 压迫测试:在不理想的条件下运行(例如内存小,CPU速度慢)观察软件对外部资源的依赖程度
- 重负测试:让软件处理尽量多的数据
静态白盒测试:检查设计和代码
动态白盒测试:(调试是修复缺陷)对模块进行单元测试:编写测试驱动
- 数据测试
- 数据流:观察数据在运行时的中间值
- 次边界
- 错误强制:检查处理异常的代码
- 代码覆盖
- 语句覆盖
- 条件覆盖
- 分支覆盖
- 数据测试