Ch 1. 软件测试的背景
本章讲述软件缺陷的定义、产生原因、修复代价等问题,同时为软件测试员的使命下了定义。
软件缺陷
- 本书中,所有软件问题统称为软件缺陷(Bug)。
- 产品说明书(Product Specification):简称产品说明(Spec),是对软件产品的细节、如何做、做什么、不能做什么的描述。
软件缺陷的发生条件
以下五点均为软件缺陷发生的条件,满足其中任何一点都可能导致缺陷产生:
- 功能不完整:软件没有实现产品说明书中要求的功能。
- 额外功能:软件实现了产品说明书中没有要求的功能。
- 这并不是一件好事。因为额外功能可能会导致软件的复杂性增加,从而增加软件的维护成本;更甚,额外功能还可能引入新的缺陷。
- 非预期错误:软件出现了产品说明书中没有描述或指明不该出现的错误。
- 隐式前置条件未实现:软件没有实现产品说明书中虽未提到但应该实现的功能。
- 最终用户体验差:软件难以理解、不易使用、运 行缓慢或其他不符合用户期望的情况。
示例
以计算器为例,针对这五条缺陷发生条件,可以举出相应的例子:
- 功能不完整:计算器声称能够进行准确的四则运算,但按下 + 按钮后,计算器没有显示出结果。
- 额外功能:说明书上没有提到计算器还能够进行开方运算,但实际上计算器却能够进行开方运算。
- 非预期错误:当你狂敲计算器的数字键盘时,计算器突然崩溃。
- 隐式前置条件未实现:尽管说明书上没有写出,但众所周知的是,计算器需要电池才能正常工作。开发人员没有考虑到在电量低下时计算器的运行情况,如计算错误等。说明书应该至少提到这一点。
- 最终用户体验差:计算器的按钮排列混乱,用户难以找到相应的按钮。
产生缺陷的主要原因
- 需求不明确:需求不明确或说明书不全面是导致软件缺陷的罪魁祸首。缺乏沟通或频繁变更需求都会导致软件缺陷。
- 设计不合理:和需求不明确一样,沟通不足与随意变更设计都会导致软件缺陷。
- 编码错误:编码错误通常源于文档不足或开发人员的技术能力不足等,但实际上这一类缺陷是最容易被发现和修复的。
- 要注意,那些看起来正确的代码之所以存在缺陷,很可能不是编码的问题,而是产品说明书或设计方案一开始就存在问题。
软件缺陷的修复代价
由于软件开发的每个阶段都会引入新的缺陷,软件缺陷修复所需的费用随时间呈指数级增长。
- 越早发现缺陷,修复所需的成本就越低。
- 越晚发现缺陷,为修复所带来的潜在变更就越多,修复的成本也就越高。
软件测试员究竟做些什么
- 软件测试员的目标是尽早发现软件缺陷,并确保其得以修复。