第一部分 软件测试综述
2019.05.17 - 2019.05.18
序
1.软件测试定义
使用人工或自动手段来运行或测试某个系统的过程,检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
第1章 软件测试的背景
1.软件错误用例
- 美国航天局火星基地登陆者号探测器,1999
当单元测试成功后,必须结合进行完整的系统测试,才能检测出各部分之间可能产生的的错误传递。 - 爱国者导弹防御系统,1991
不能放过任何小的、当下看似不重要的缺陷,因为这些缺陷很有可能在日积月累下导致系统的重大错误。
2.软件失败的术语
- 缺点(defect)故障(fault)失败(failure):指的是严重情况,甚至危险情况。
- 异常(anomaly)事件(incident)偏差(variance):主要是未按预料的运行,而不是全部失败。
- 问题(problem)错误(error)缺陷(bug):最常用的术语。
但总体来说,只要与开发小组达成共识即可,不需要过多计较用词。
3.软件缺陷的官方定义
- 产品说明书(product specification)
对开发的产品进行定义,给出产品细节、如何做、做什么、不能做什么。 - 判断软件缺陷的五个规则(满足1个即可):
- 软件未实现产品说明书要求的功能。
- 软件出现了产品说明书指明不应该出现的错误。
- 软件实现了产品说明书未提到的功能。
——预料不到的操作,虽然有了可能更好,但会增加测试的工作,甚至带来更多缺陷。 - 软件未实现产品说明书虽未明确提及但应该实现的目标。
——例如:极端条件下,软件对可能产生的错误的正确反馈。 - 软件难以理解、不易使用、运行缓慢或者——从测试员的角度看——最终用户会认为不好。
4.软件测试员的目标
尽可能早地找出软件缺陷,并确保其得以修复。
——“修复”缺陷并非指一定要改正软件,可以是指在用户手册中增加一段注释或为用户提供特殊的培训。
第2章 软件开发过程
1.测试文档
是完整的软件产品的一部分。
比较重要的测试提交清单:
- 测试计划(test plan):描述用于验证软件是否符合产品说明书和客户需求的整体方案。包括质量目标、资源需求、进度表、任务分配、方法等。
- 测试用例(test cases):列举测试的项目,描述验证软件的详细步骤。
- 缺陷报告(bug reports):描述执行测试用例找出的问题。通常记录在数据库中。
- 测试工具和自动测试(test tools and automation):如果测试小组使用自动化工具测试软件,必须有文档记录。
- 度量、统计和总结(metrics,statistic,summaries):测试过程的汇总。采用图形、表格和报告等形式。
2.软件产品的组成部分
产品不仅仅包括代码,也包括许多支持(非软件部分),这些也都需要测试。
- 非软件部分:
帮助文档、用户手册、样本和示例、产品支持信息、错误信息、安装等。
3.软件开发生命周期模式
作为测试人员,可能会遇到不同模式,需要根据当前项目采取的模式来定制测试和方法(应用不同的测试技术)。
- 大爆炸模式
- 背景:产品需求无需很好理解,最终发布日期可以随意修改。
- 优点(对于开发):简单,没有计划、进度安排和正规开发过程。
- 缺点(对于测试):从项目管理的角度,产品已经完工。准备交付,此时测试人员实际上妨碍了产品的交付。测试工作越深入