- 测试种类
- 单元测试
- 组件测试
- 集成测试
- 回归测试
- 系统测试
- 测试的重要性
- 测试的目标是找出错误,编码的目标是避免错误
- 测试永远都无法证明软件完全没有错误
- 测试本身是无法提高软件质量的,要提高质量还要靠提高编码水平
- 测试意味着你期望在代码中找到错误
- 推荐的测试方法
- 按照每条需求做测试
- 按照每条设计原则做测试
- 采用基准测试
- 记录每次犯下的错误,防止以后再次发生
- 测试最好放在编码之前
- 测试背包悖论
- 要把每种情况都测试一遍,可能需要几万年时间
- 不完全测试
- 结构化基准测试
- 代码覆盖
- 逻辑覆盖
- 数据流测试
- 变量状态分为:定义、使用、删除
- 异常状态组合:定义-定义,定义-退出,定义-删除,进入-删除,进入-使用,删除-删除,删除-使用,使用-定义
- 等价类划分
- 猜测错误
- 边界值分析,组合边界值分析(比如两个数相乘刚好达到极限)
- 坏数据
- 太少(没有数据)
- 太多
- 类型错误
- 大小错误
- 没有初始化
- 好数据
- 正常情况
- 最大值
- 最小值
- 和旧数据兼容
- 测试数据要方便口算
- 坏数据
- 典型的错误
- 错误大部分集中在少部分类中
- 错误种类
- 超出需求范围
- 编码错误
- 拼写错误
- 对设计的误解
- 工业界一般能找出的错误
- 1~25个错误/1000行
- 微软:测试版10~20个错误/1000行,正式版0.5个错误/1000行
- Harlan Mills:测试版3错误/1000行,正式版0.1错误/1000行
- Watts Humphrey:使用Team Software Process(TSP) 0.06错误/1000行
- 测试用例错误
- 测试支持工具
- 脚手架:桩方法、桩模块
- Diff工具:在回归测试中检查测试结果是否发生了变化
- 测试数据生成器
- 覆盖率工具
- 数据记录、日志工具
- 符号调试工具
- 系统工具
- 内存填充
- 内存重排
- 模拟内存不足
- 内存边界检测
- 错误数据库(记录曾经犯过的错误)
- 改善测试
- 测试计划
- 回归测试
- 自动化测试
- 保留测试记录
- 记录每次缺陷
- 报告人的描述
- 问题完整描述
- 重现步骤
- 推荐的修复方案
- 相关缺陷
- 严重程度
- 缺陷源头:例如需求、设计、编码、测试
- 代码错误分类:只差一点(off-by-one)、错误的赋值、错误的数组索引、错误的方法调用等
- 修复缺陷时改动的类或方法
- 缺陷影响的代码行数
- 找出错误所花费的时间(小时)
- 修复错误所花费的时间(小时)
- 好处
- 可以根据这些测试数据判断产品是变好了还是变差了
- 这些测试数据可以防止自己再次犯错
- 记录每次缺陷
【读书笔记】代码大全22章:开发者测试
最新推荐文章于 2019-01-08 04:26:23 发布