《软件测试》Ron_Pantton读书笔记
臭名昭著的软件错误案例研究 1.1.1 迪斯尼的狮子王,1994~1995 没有对市场上投入使用的各种PC机型进行正确的测试 1.1.2 英特尔奔腾浮点除法软件缺陷,1994 这个故事重要的不是软件缺陷,而是英特尔解决问题的方式: 1. 他们的软件测试工程师在芯片发布之前进行内部测试时发现了这个问题,英特尔的管理层认为这没有严重到要保证修正,甚至公开; 2. 当软件缺陷被发现时,英特尔通过新闻发布和公开声明试图掩饰这个问题的严重性; 3. 受到压力时,英特尔承诺更换有问题的芯片,但要求用户必须证明自己受到软件缺陷的影响。由于这个缺陷,英特尔公开道歉并拿出了4亿多美元来致富更换坏芯片的费用。 1.1.3 美国航天局火星极地登陆,1999 由多个小组测试该项目,各自分工不同,但就是中间空隙出错了。 1.1.4 爱国者导弹防御系统,1991 系统时钟错误积累起来拖延100多个小时。 1.1.5 前年虫,大约1974 当时发现错误但没有修改,只是着重眼前的任务,不去考虑2000年的兼容问题,导致损失过亿。 1.2 软件缺陷是什么 ### 《软件测试》Ron_Pantton读书笔记 #### 臭名昭著的软件错误案例研究 ##### 1.1.1 迪斯尼的狮子王(1994~1995) **背景与问题:** 1994至1995年间,《狮子王》游戏发行后遭遇了广泛的兼容性问题。由于游戏开发团队未能充分测试其产品在市面上各种不同的个人电脑(PC)配置上的表现,导致许多用户在尝试运行该游戏时遇到了一系列的技术难题。 **教训与启示:** 此案例突显了全面兼容性测试的重要性。在软件开发过程中,不仅要确保程序能在特定的理想环境中运行良好,还需要考虑实际市场中多样化的硬件配置。此外,这也强调了早期测试的价值,以及如何通过收集和分析真实用户反馈来改进产品质量。 ##### 1.1.2 英特尔奔腾浮点除法软件缺陷(1994) **背景与问题:** 1994年,英特尔公司发布的奔腾处理器(Pentium)被发现在执行某些特定的浮点除法运算时存在错误。尽管内部测试已发现了这一问题,但英特尔管理层最初认为这并不构成重大风险,因此决定不公开此缺陷,也不主动召回或替换受影响的处理器。 **解决方式及其影响:** 1. **初期应对策略:**英特尔试图通过新闻稿和公开声明淡化问题的严重性。 2. **后续处理措施:**面对公众压力和社会舆论的持续发酵,英特尔最终宣布将免费更换所有受影响的奔腾处理器,并为此设立了专门基金。这次事件不仅导致英特尔付出了超过4亿美元的代价,更重要的是对品牌的信誉造成了长期的负面影响。 **教训与启示:** 此案例强调了透明度和快速响应对于维护企业声誉的重要性。企业在遇到此类问题时应该迅速采取行动,积极与消费者沟通,并提供有效的解决方案。同时,这也提醒我们即使是在技术层面的小问题也可能演变为公共关系危机。 ##### 1.1.3 美国航天局火星极地登陆器(1999) **背景与问题:** 1999年,美国国家航空航天局(NASA)的一次火星探测任务失败,其中一个关键原因在于不同团队之间的沟通不畅和技术协调不当。具体而言,项目中的两个关键部件——推进系统和导航系统——分别由不同的团队负责设计和测试。其中一个团队使用公制单位进行计算,而另一个团队则使用英制单位,这种单位不一致最终导致了登陆器的失控和损毁。 **教训与启示:** 此次事故再次强调了跨团队协作和统一标准的重要性。在复杂的工程项目中,确保所有参与方使用相同的计量系统和数据格式至关重要。此外,建立明确的沟通渠道和协调机制对于避免类似的技术失误同样必不可少。 ##### 1.1.4 爱国者导弹防御系统(1991) **背景与问题:** 在1991年的海湾战争期间,美国的“爱国者”导弹防御系统因软件中的计时误差导致导弹拦截失败。该错误源于系统运行时间过长(超过100小时),使得系统内部的时钟累积了微小的时间偏差,进而影响了导弹的轨迹计算,最终导致无法成功拦截来袭的飞毛腿导弹。 **教训与启示:** 这一案例凸显了软件可靠性测试的重要性,尤其是在涉及国家安全的关键系统中。长期运行的系统必须经过严格的测试,以确保其能够在任何条件下都能稳定运行。此外,对于长时间运行的系统来说,定期重启和校准也是非常必要的。 ##### 1.1.5 千年虫问题(大约1974) **背景与问题:** 上世纪70年代初,计算机编程中广泛采用两位数字表示年份的做法,即用“99”代表1999年,用“00”代表2000年。然而,这种简化方法在接近2000年时暴露出严重的问题。因为许多软件和系统在处理日期时会默认当前世纪为1900年,因此当进入2000年后,这些系统可能会将“00”解释为1900年,导致日期计算错误,进而引发一系列连锁反应。 **教训与启示:** 此案例反映了软件开发中预见性和前瞻性的必要性。开发者在编写代码时不仅要考虑当前的需求,还要尽可能预测未来可能出现的问题,并提前做出相应的调整。此外,这也提醒我们在软件生命周期管理中保持良好的维护和更新习惯的重要性。 #### 软件缺陷概述 **软件缺陷定义:** 软件缺陷是指软件未能按照预期目标工作的情况。在《软件测试》一书中,给出了软件缺陷的正式定义,其中包括但不限于以下几点: 1. **未达到产品说明书标明的功能;** 2. **出现了产品说明书指明不会出现的错误;** 3. **功能超出产品说明书指明范围;** 4. **未达到产品说明书虽未指出但应达到的目标;** 5. **软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。** **缺陷描述术语:** 书中还列出了描述软件失败的多种术语,包括缺点、谬误、问题、错误、毛病、异常、偏差、失败、矛盾和特殊等。这些术语可以帮助测试人员更精确地描述他们所发现的问题。 **软件缺陷的成因:** 导致软件缺陷的主要原因包括产品说明书、设计方案、代码以及某些软件缺陷产生的条件被错误地认定。其中,产品说明书是造成缺陷的最大源头,其次是设计方案,再次是代码实现阶段的问题。 **软件缺陷修复费用:** 修复软件缺陷的成本随着开发周期的推进而显著增加。如果能在早期阶段发现并解决这些问题,将极大地降低后期修复所需的资源和成本。 **软件测试员的角色与职责:** 软件测试员的主要目标是发现软件中的缺陷。成为一名优秀的软件测试员需要具备多种技能和素质,例如探索精神、故障排除能力、不懈的努力、创新思维、追求完美、准确的判断力、成熟的判断力、强大的说服力等。此外,拥有一定的编程知识也很重要,因为在理解软件行为和设计测试案例时非常有用。 **软件开发过程:** 在软件开发过程中,产品的组成部分包括产品说明书、设计文档、进度计划、测试文档等多个方面。同时,项目成员包括项目经理、设计师、程序员、测试员和技术文档撰写者等,每个人都承担着不同的角色和职责。 **软件开发模式:** 书中介绍了几种常见的软件开发模式,如大棒模式、边写边改模式、瀑布模型和螺旋模型等。每种模式都有其特点和适用场景,选择合适的开发模式可以提高软件开发的效率和质量。 《软件测试》一书提供了丰富的案例研究和理论指导,不仅有助于读者理解软件测试的基本概念和技术,还能启发思考如何在实际工作中应用这些知识来提高软件的质量和可靠性。
剩余9页未读,继续阅读
- 粉丝: 0
- 资源: 21
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0