【读书笔记】代码大全22章:开发者测试

  • 测试种类
    • 单元测试
    • 组件测试
    • 集成测试
    • 回归测试
    • 系统测试
  • 测试的重要性
    • 测试的目标是找出错误,编码的目标是避免错误
    • 测试永远都无法证明软件完全没有错误
    • 测试本身是无法提高软件质量的,要提高质量还要靠提高编码水平
    • 测试意味着你期望在代码中找到错误
  • 推荐的测试方法
    • 按照每条需求做测试
    • 按照每条设计原则做测试
    • 采用基准测试
    • 记录每次犯下的错误,防止以后再次发生
    • 测试最好放在编码之前
  • 测试背包悖论
    • 要把每种情况都测试一遍,可能需要几万年时间
    • 不完全测试
    • 结构化基准测试
      • 代码覆盖
      • 逻辑覆盖
      • 数据流测试
        • 变量状态分为:定义、使用、删除
        • 异常状态组合:定义-定义,定义-退出,定义-删除,进入-删除,进入-使用,删除-删除,删除-使用,使用-定义
    • 等价类划分
    • 猜测错误
    • 边界值分析,组合边界值分析(比如两个数相乘刚好达到极限)
      • 坏数据
        • 太少(没有数据)
        • 太多
        • 类型错误
        • 大小错误
        • 没有初始化
      • 好数据
        • 正常情况
        • 最大值
        • 最小值
        • 和旧数据兼容
      • 测试数据要方便口算
  • 典型的错误
    • 错误大部分集中在少部分类中
    • 错误种类
      • 超出需求范围
      • 编码错误
      • 拼写错误
      • 对设计的误解
    • 工业界一般能找出的错误
      • 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)、错误的赋值、错误的数组索引、错误的方法调用等
      • 修复缺陷时改动的类或方法
      • 缺陷影响的代码行数
      • 找出错误所花费的时间(小时)
      • 修复错误所花费的时间(小时)
    • 好处
      • 可以根据这些测试数据判断产品是变好了还是变差了
      • 这些测试数据可以防止自己再次犯错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值