【读书笔记】代码大全22章:开发者测试
2014-04-22 20:51
288 查看
测试种类
单元测试
组件测试
集成测试
回归测试
系统测试
测试的重要性
测试的目标是找出错误,编码的目标是避免错误
测试永远都无法证明软件完全没有错误
测试本身是无法提高软件质量的,要提高质量还要靠提高编码水平
测试意味着你期望在代码中找到错误
推荐的测试方法
按照每条需求做测试
按照每条设计原则做测试
采用基准测试
记录每次犯下的错误,防止以后再次发生
测试最好放在编码之前
测试背包悖论
要把每种情况都测试一遍,可能需要几万年时间
不完全测试
结构化基准测试
代码覆盖
逻辑覆盖
数据流测试
变量状态分为:定义、使用、删除
异常状态组合:定义-定义,定义-退出,定义-删除,进入-删除,进入-使用,删除-删除,删除-使用,使用-定义
等价类划分
猜测错误
边界值分析,组合边界值分析(比如两个数相乘刚好达到极限)
坏数据
太少(没有数据)
太多
类型错误
大小错误
没有初始化
好数据
正常情况
最大值
最小值
和旧数据兼容
测试数据要方便口算
典型的错误
错误大部分集中在少部分类中
错误种类
超出需求范围
编码错误
拼写错误
对设计的误解
工业界一般能找出的错误
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)、错误的赋值、错误的数组索引、错误的方法调用等
修复缺陷时改动的类或方法
缺陷影响的代码行数
找出错误所花费的时间(小时)
修复错误所花费的时间(小时)
好处
可以根据这些测试数据判断产品是变好了还是变差了
这些测试数据可以防止自己再次犯错
单元测试
组件测试
集成测试
回归测试
系统测试
测试的重要性
测试的目标是找出错误,编码的目标是避免错误
测试永远都无法证明软件完全没有错误
测试本身是无法提高软件质量的,要提高质量还要靠提高编码水平
测试意味着你期望在代码中找到错误
推荐的测试方法
按照每条需求做测试
按照每条设计原则做测试
采用基准测试
记录每次犯下的错误,防止以后再次发生
测试最好放在编码之前
测试背包悖论
要把每种情况都测试一遍,可能需要几万年时间
不完全测试
结构化基准测试
代码覆盖
逻辑覆盖
数据流测试
变量状态分为:定义、使用、删除
异常状态组合:定义-定义,定义-退出,定义-删除,进入-删除,进入-使用,删除-删除,删除-使用,使用-定义
等价类划分
猜测错误
边界值分析,组合边界值分析(比如两个数相乘刚好达到极限)
坏数据
太少(没有数据)
太多
类型错误
大小错误
没有初始化
好数据
正常情况
最大值
最小值
和旧数据兼容
测试数据要方便口算
典型的错误
错误大部分集中在少部分类中
错误种类
超出需求范围
编码错误
拼写错误
对设计的误解
工业界一般能找出的错误
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章 开发者测试
- 《代码大全》读书笔记--开发者测试
- 读书笔记_代码大全_第13章_不常见的数据类型
- 【读书笔记】代码大全
- 为什么软件开发者不能测试自己编写的代码?
- XSS跨站测试代码大全
- 【读书笔记】代码大全29章:集成
- 读书笔记_代码大全_第4章_关键的“构建”决策
- 读书笔记_代码大全_第10章_使用变量的一般事项
- 【读书笔记】代码大全21章:团队编程
- 【读书笔记】代码大全28章:项目管理
- 哪种性格最适合IT行业?【读书笔记】代码大全33章:性格在软件领域中的作用
- 代码大全2(读书笔记11)
- 代码大全第二版读书笔记 第四部分-语句 十六、控制循环
- 读书笔记_代码大全_第8章_防御式编程
- [读书笔记-代码大全]第1章 欢迎进入软件构建的世界
- 【索引】读书笔记-代码大全
- Code maturity level options 代码成熟度选项 [*]Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择 我是开发者,所以选[*] Loadable module support 可加载模块支持 [*]Enable loadable module support 内核编译配置选项简介 (2.4.20-8
- 读书笔记_代码大全_第14章_组织直线型代码_第15章_使用条件语句