臭名昭著的软件错误用例

迪斯尼的_狮子王_,1994-1995

英特尔的奔腾浮点除法缺陷,1994

美国航天局火星极地登陆者号探测器,1999

爱国者导弹防御系统,1991

千年虫问题,大约1974

危险的预见,2004

软件缺陷的官方定义

只有至少满足下列5个规则之一才称发生了一个软件缺陷(software bug):

  1. 软件未实现产品说明书要求的功能。
  2. 软件出现了产品说明书指明不应该出现的错误。
  3. 软件实现了产品说明书未提到的功能。
  4. 软件未实现产品说明书虽未明确提及但应该实现的功能。
  5. 软件难以理解、不易使用、运行缓慢或者——从测试员的角度看——最终用户会认为不好。

为什么会出现软件缺陷

  1. 产品说明书成为造成软件缺陷的罪魁祸首有不少原因。在许多情况下,说明书中没有写;其他原因可能是说明书不够全面、经常更改,或者整个开发小组没有很好地沟通。为软件做计划是极其重要的,如果没有做好,软件缺陷就会出现。
  2. 软件缺陷的第二大来源是设计。这是程序员规划软件的过程,好比是建筑师为建筑物绘制蓝图。这里产生软件缺陷的原因与产品说明书是一样的——随意、易变、沟通不足。

“说不出来就做不到。”此话用到软件开发和测试身上再合适不过了。

  1. 程序员对编码错误太熟悉了。通常,代码错误可以归咎于软件的复杂性、文档不足(特别是升级或修定过的代码的文档)、进度压力或者变通的低级错误。一定要注意,许多看上去是编程错误的软件缺陷实际上是由产品说明书和设计方案造成的。经常听到程序员说:“这是按要求做的。如果有人早告诉我,我就不会这样编写程序了。”
  2. 剩下的原因可以归为一类。某些缺陷产生的原因是把误解(即本来正确的)当成缺陷。还有可能缺陷多处反复出现,实际上是由一个原因引起的。一些缺陷可以归咎于测试错误。不过说到底,此类软件缺陷只占极小的比例,不必担心。

软件缺陷修复的费用

软件缺陷修复的费用随着时间推移呈指数级增长的。

例如前面迪斯尼狮子王实例,问题的根本原因是无法在流行的PC平台上运行。假如早在编写产品说明书时,有人已经研究过什么PC机流行,并且明确指出软件需要在该种配置上设计和测试,付出的代价就小得几乎可以忽略不计。如果没有这样做,还有一个补救措施是,软件测试员去搜集流行PC样机并在其上验证。他们可能会发现软件缺陷,但是修复费用要高很多,因为软件必做调试,修改,再测试。开发小组还应把软件的初期版本发给一小部分客户进行试用,这叫beta测试。那些被挑出来代表庞大市场的客户可能会发现问题。然后实际情况是,缺陷被完全忽视,直到成千上万的光盘被压制并销售出去。而迪斯尼公司最终支付了投诉电话费、产品召回、更换光盘,以及又一轮调试、修改和测试的费用。如果严重的软件缺陷到了客户那里,就足以耗尽整个产品的利润。

软件测试员究竟做什么

软件测试的目标是尽可能早的找出软件缺陷,并确保其得以修复

注意 要记住,“修复”缺陷并非指一定要改正软件。可以是指用户手册中增加一段注释或为用户提供特殊的培训。这可能需要改变市场部门宣传的数据或者甚至推迟缺陷部分功能的发布。软件测试人员虽然在追求完美,确保缺陷被修复,但软件测试的实质则是另外一回事。千万不要在无法达到完美上纠缠和兜圈子。

优秀的软件测试员应具备的素质

软件测试很有趣

软件测试员的一个基本素质是打破砂锅问到底。他们喜欢找出那些难以捉摸的系统崩溃。他们乐于处理最复杂的问题。这是他们平凡生活中的乐趣。

此外,在软件编程方面受过教育很重要,能够使测试更加高效(检查代码,自动化测试)。 某领域的专业知识对查找该领域软件的缺陷有莫大的帮助。毕竟编写软件是为了解决现实中的问题。

最近更新
  mysql查询   TCP IP协议简介   Selenium简介   LoadRunner简介   数据库   软件测试读书笔记   软件测试读书笔记   软件测试读书笔记   三阶魔方复原口诀   window7上 ruby + selenium-webdriver 环境搭建   Metaprogramming Ruby Study   我的第一篇博客   一些好文章

Zhenglina的官方网站©2020
Powered by jekyll
若对文章感兴趣,转载时请注明出处,谢谢