【软件缺陷概述】
1 软件缺陷是什么
1.1 软件出错机理
软件出错机理可描述为:
(1)软件错误(error)
是指软件生存期内的不希望或不可接受的人为错误,其结果是导致软件缺陷的产生。
(2)软件缺陷(bug)
是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差,其结果是软件运行于某一特定条件时出现软件故障,这时称软件缺陷被激活。
(3)软件故障(fault)
是指软件运行过程中出现的一种不希望或不可接受的内部状态,此时若无适当措施加以及时处理,便产生软件失效。
(4)软件失效(failure)
是指软件运行时产生的一种不希望或不可接受的外部行为结果。
错误(error)可能转化为缺陷(bug),也可能不会;缺陷可能导致系统故障(fault)或失效(failure),也可能不会。
1.2 软件缺陷激活条件
符合下列五种情况之一就可认为是软件缺陷:
(1)软件未达到软件产品需求说明书指明的要求;
(2)软件出现了软件产品需求说明书指明不会出现的错误;
(3)软件功能超出软件产品需求说明书指明的范围;
(4)软件未达到软件产品需求说明书虽未指明但应达到的要求;
(5)软件测试人员认为难以理解、不易使用、运行速度缓慢、或者最终用户认为不好的问题。
1.3 软件缺陷的特征
(1)“看不到”——缺陷不易看到
(2)”看到但是抓不到“——发现了缺陷,但不易找到问题发生的原因所在
2 软件缺陷分类
2.1 按错误的影响和后果分类
(1)较小错误
只对系统输出有一些非实质性的影响。例如输出的数据格式不合要求。
(2)中等错误
对系统的运行有局部影响。
(3)较严重错误
系统的行为出现明显不合情理的现象。
(4)严重错误
系统运行不可跟踪,一时不能掌握其规律,时好时坏。
(5)非常严重的错误
系统运行中突然停机,原因不明,无法软启动。
(6)最严重的错误
系统运行导致环境破坏,或是造成事故,引起生命、财产的损失。
2.2 按错误的性质和范围分类
Beizer从软件测试观点出发,把软件错误分为5类:
(1)功能错误
规格说明错、功能错误、测试错误、测试标准引起的错误
(2)系统错误
外部接口错误、内部接口错误、硬件结构错误、操作系统错误、软件结构错误、控制与顺序错误、资源管理错误
其中,外部接口指的是终端、打印机等系统与外部环境通信的手段,内部接口指的是程序之间的联系。
(3)加工错误
算术与操作错误、舒适化错误、控制和次序错误、静态逻辑错误
(4)数据错误
动态数据错误、静态数据错误、数据内容错误、数据结构错误、数据属性错误
(5)代码错误
语法错误、打字错误、对语句或指令不正确理解所产生的错误
2.3 按软件生存期阶段分类
(1)问题定义(需求分析)错误
由于问题定义不满足用户的要求而导致的错误。
(2)规则说明错误
指规格说明与问题定义不一致所产生的错误。
分为:不一致性错误、冗余性错误、不完整性错误、不可行错误、不可测试错误
(3)设计错误
设计阶段产生的错误,使得系统的设计与需求规格说明中的功能说明不相符。
分为:设计不完全错误、算法错误、模块接口错误、控制逻辑错误、数据结构错误
(4)编码错误
多种多样。
在不同的开发阶段,错误的类型和表现形式不同,故应采用不同的方法和策略来进行检测。
3 软件缺陷的产生
3.1 造成软件缺陷的主要因素
(1)技术问题
(2)团队工作
(3)软件本身
3.2 软件缺陷的构成
软件需求说明书是存在软件缺陷最多的地方。
原因:
用户的计算机知识较少、要开发产品的特性不够清晰、需求变化的不一致、对需求说明书不重视、项目组成员间缺少沟通
3.3 软件缺陷的状态
(1)激活状态(Active或Open):问题还没解决
(2)已修正状态(Fixed或Resolved):开发人员针对缺陷修正程序,认为已解决问题或通过单元测试
(3)关闭或非激活状态(Close或Inactive)&#x