软件测试背景
1.1 软件测试失败用语
- 缺点 (defect)
- 偏差 (variance)
- 故障 (fault)
- 失败 (failure)
- 问题 (problem)
- 矛盾 (inconsistency)
- 错误 (error)
- 特殊 (feature)
- 事件 (incident)
- 缺陷 (bug)
- 异常 (anomaly)
1.2 软件缺陷定义
软件缺陷至少满足以下一条:
- 软件未实现产品说明书要求的功能
- 软件出现产品说明书指明不应该出现的错误
- 软件实现了产品说明书未提到的功能
- 软件未实现产品说明书虽未明确提及但应该实现的目标
- 软件难以理解、不易使用、运行缓慢或者最终用户会认为不好
1.3 软件缺陷来源
- 说明书未写或不全面
- 经常更改
- 整个小组沟通不畅
1.4 软件测试的工作内容
- 目标是发现软件缺陷
- 尽可能早的找出软件缺陷
- 确保软件缺陷得以修复
1.5 软件测试员必须所需的素质
- 探索
- 故障排除
- 不放过任何蛛丝马迹
- 创造性手段寻找缺陷
- 追求完美
- 判断准确,决定测试内容、测试时间、以及测试缺陷是否真实存在
- 注重策略和外交
- 善于说服,表达清晰
软件测试开发过程
2.1 产品组成
- 客户需求
- 产品说明书
- 进度表
- 软件设计文档:
- 结构文档:描述软件整体设计的文档,主要部分描述和相互之间的交互方式
- 数据流图:表示数据在程序中如何流动的正规示意图
- 状态转换图:表示不同状态间的转换方式
- 流程图:用图形描述程序逻辑的传统方式
- 软件测试文档组成:
- 测试计划 (test plan):描述用于验证软件是否符合产品说明书和客户需求的整体方案。包括:质量目标、资源需求、进度表、任务分配、方法等。
- 测试用例 (test cases):列举测试项目,描述详细步骤
- 缺陷报告 (bug reports):执行测试用例找出问题,记录在缺陷
- 测试工具和自动化测试 (test tools and automation)
- 度量、统计和总结 (metrics, statistics, summaries):测试过程的汇总。例如:图形、表格和报告等形式。
2.2 软件项目成员
- 项目经理、开发经理或监制人员:负责编写产品说明书、管理进度、重大决策。
- 架构师或系统工程师:是技术专家,胜任整个系统的体系架构或软件。
- 程序员、开发人员:编写软件并修复软件中的缺陷。
- 测试员或质量保证员:负责找出并报告软件发现的问题。
软件测试的实质
3.1 并非所有软件缺陷都要修复
- 没有足够时间
- 不算真正的软件缺陷
- 修复的风险太大
- 不值得修复:不常出现的软件缺陷可以放过,可以躲过和用户有啊不能发预防或避免的软件缺陷通常不用修复。
3.2 软件测试的术语和定义
3.2.1 精确和准确
- 精确:指测试结果有很高的稳定性
- 准确:指测试结果符合需求文档要求
3.2.2 确认和验收
- 确认:保证软件符合产品说明书的过程
- 验收:保证软件满足用户要求的过程。
3.2.3 质量和可靠性
- 质量:优秀程度高,满足客户需求,客户体验的程度
- 可靠性:是质量的一个方面
3.2.4 测试和质量保证 (QA)
- 测试:找出软件的缺陷,并确保缺陷得以修复
- 质量保证:创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法