软件测试:定义和实质
软件缺陷的定义:
- 未实现说明书要求的功能
- 出现了说明书指明不应出现的错误
- 实现了说明书未提到的功能
- 未实现说明书没有明确提出但应该实现的目标
- 软件难以理解,不易使用,运行缓慢 或者从测试员客户会认为不好的。
软件缺陷的原因:
- 说明书
- 设计
- 代码
- 其他
软件测试的目标:
尽可能早的找到软件缺陷,并确保其得以修复。
软件测试工程师的基本素质:
- 探索
- 故障排除
- 不放过蛛丝马迹
- 创造性
- 追求完美
- 判断准确
- 注重策略和外交
- 善于说服
软件开发的过程:
- 客户需求->产品说明书
- 进度表
- 软件设计文档
- 测试文档
- 测试计划
- 测试用例
- 缺陷报告 bug report
- 测试工具和自动化
- 判据,统计和总结
软件开发模型:
- 大爆炸:简单粗暴
- 边写边改
- 瀑布模型:周期长,测试介入晚
- 螺旋模型(敏捷开发):分解需求,逐步实现和测试,测试介入较早。
测试的原则:
- 完全测试是不可能的
- 输入量太大
- 输出结果太多
- 执行路径太多
- 说明书是主观的,从旁观者来看是缺陷。
- 软件测试是有风险的。
因为不可能遍历所有情况,只能选择冒险。
关键思想:
把数量巨大的可能测试项减少到可以控制的范围,并针对风险做出明智的选择,那些重要,那些不重要。
- 测试无法显示潜伏的软件缺陷
- 找到的软件缺陷越多,说明软件缺陷越多。
- 并非所有的软件缺陷都要修复
- 没有足够的时间
- 不算真正的软件缺陷
- 修复的风险较大
- 不值得修复
软件测试的术语
精确precise和准确accurate
准确accurate:实际1米,测出来也是1米,就是准确。一般用绝对值来表达
精确precise:实际1米,第一次测出来是1.1米,第二次1.2米,每次有偏差。一般用标准差来表达。
确认verification和验证validation
确认verification是保证软件符合产品说明书的过程
验证validation是保证软件满足用户要求的过程。
from 《软件测试》 by Ron Patton