1、软件缺陷的正式定义:
本书中将软件问题都称为缺陷,符合下边5个规则的才能叫做软件缺陷:
(1)软件未实现产品说明书要求的功能。
(2)软件出现了产品说明书指明不应该出现的错误。
(3)软件功能实现了产品说明书未提到的功能。
(4)软件未实现产品说明书虽未明确提及但应该实现的目标。
(5)软件难以理解、不易使用、运行缓慢或者(从测试员的角度看)最终用户会认为不好。
导致软件缺陷最大的原因是产品说明书,第二大来源是设计。这两点产生软件缺陷的原因是一样的——随意、易变、沟通不足。
三是编码。许多看上去是编程错误的软件缺陷实际上是由产品说明书和设计方案造成的。
四是某些软件缺陷产生的条件被错误地认定。
随时间增长,修复软件缺陷的费用呈十位地增长的。产品发行后修复软件缺陷比项目开发早期这样做的费用要高出10-100倍,甚至更高。
(1)探索精神
(2)故障排除,善于发现问题的症结
(3)不放过任何蛛丝马迹
(4)具有创造性
(5)追求完美者,但不去苛求,而是尽力接近目标
(6)判断准确
(7)注重策略和外交
(8)善于说服
除了这些素质,在软件编程方面受过的教育也是重要的。另外,各领域专业的业务知识对查找该领域软件的缺陷都有莫大的帮助。
第2章 软件开发的过程
1、软件件前期的投入
(1)客户需求调研
(2)编写产品说明书
对客户需求的研究结果其实内是原始资料,并没有描述要做的产品,只是确定是否需要做以及客户要求的功能。产品说明书综合上述信息以及没有提出但必须要实现的需求,真正地定义产品是什么、有哪些功能、外观如何。
(3)制定进度表
制定进度的目的是了解哪项工作完成了,还有多少工作要做,何时全部完成。
(4)编写软件设计文档
常用软件设计文档的清单:结构文档、数据流图、状态转换图、流程图
(5)测试文档
比较重要的测试提交清单:测试计划、测试用例、缺陷报告、测试工具和自动测试、度量统计和总结
(1)最终产品(光盘/软盘/程序...)
(2)帮助文件
(3)用户手册
(4)样本和示例
(5)标签和不干胶
(6)产品支持信息
(7)图标和标志
(8)错误信息
(9)广告和宣传材料
(10)安装
(11)说明文件
由于所有这些部分客户都要查看或使用,所以都需要测试。
书中特别提示——别忘了测试错误提示信息:
错误提示信息是软件产品最容易忽视的部分,通常由程序员而不是训练有素的高手来写。他们很少计划这些信息,在修复软件缺陷时常常造成麻烦。软件测试员也难以找到并显示全部信息。
(1)项目经理、程序经理或者监制人员
(2)体系架构师或者系统工程师
(3)程序员、开发人员或者代码制作者
(4)测试员或质量保证员
(5)技术作者、用户协助专员、用户培训专员、手册编写员或者方案专员
(6)配置管理员或者构建员
(1)大爆炸模式
大爆炸模式的优点是简单。计划、进度安排和正规开发过程几乎没有,所有精力都花在开发软件和编写代码上。测试员参与其中,因为软件已经完成,测试员手里只有产品本身,没有任何文档,不可能回头修复已经打乱的事情,软件测试的工作其实就是报告发现的问题让客户知道。
(2)边写边改模式
采用这种方式的小组通常最初只有粗略的想法,接着进行一些简单的设计,然后开始漫长的来回编写、测试和修改缺陷的过程。等到觉得足够了,就发布产品。
作为这个模式的测试员,需要和程序员一样清醒地认识到自己将陷入无休止的循环往复,并且发现软件缺陷越来越少,直到某人(或进度)决定该发布软件了。
(3)瀑布模式
瀑布模式的特点:非常强调产品的定义;各步骤是分立的、没有交叉;无法回溯。
测试小组得以制订精确的计划和进度。测试对象非常明确,在分辨是功能还是缺陷上也没有一点问题。但是,因为测试公在最后进行,所以一些根本性问题可能出现在早期,但是直到准备发布产品时才可能发现。
(4)螺旋模式
螺旋模式的总体思想:开始不必详细定义所有细节。从小开始,定义重要功能,努力实现,接受客户反馈,然后进入下一阶段。重复上述过程,直至得到最终产品。
一个螺旋包括6个步骤:
(1)确定目标,可选方案和限制条件;
(2)指出并解决风险;
(3)评估可选方案;
(4)当前阶段开发和测试;
(5)计划下一阶段;
(6)确定进入下一阶段的方法。
软件测试员从最初开始参与,测试一直在进行,直到最后宣布成功。