您的位置:首页 > 编程语言

【读书笔记】代码大全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)、错误的赋值、错误的数组索引、错误的方法调用等
修复缺陷时改动的类或方法
缺陷影响的代码行数
找出错误所花费的时间(小时)
修复错误所花费的时间(小时)

好处

可以根据这些测试数据判断产品是变好了还是变差了
这些测试数据可以防止自己再次犯错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: