权限英文-泥泞
软件错误分类
由于人们对错误有不同的理解和认
识,
所以目前还没有一个统一的错误分类方法。
错误
难于分类的原因,
一方面是由于一个错误有许多征兆,
因而它可以被归入不同的类。
另一方
面是因为把一个给定的
错误归于哪一类,还与错误的来源和程序员的心理状态有关。
(1)
按错误的影响和后果分类
*
较小错误:只对系统输出有一些非实质性影响。如,输出的
数据格式不合要求等。
*
中等错误
:对系统的运行有局部影响。如输出的某些数据有错误或出现冗余。
*
较严重错误:系统的行为因错误的干扰而出现明显不合情理
的现象。比如开出了
0.00
元
的支票
,系统的输出完全不可信赖。
*
严
重错误:系统运行不可跟踪,一时不能掌握其规律,时好时坏。
*
非常严重的错误:系统运行中突然停机,其原因不明,无法
软启动。
*
最严重的错误:系统运
行导致环境破坏,或是造成事故,引起生命、财产的损失。
(2)
按错误的性质和范围分类
从软件测
试观点出发,把软件错误分为
5
类。
①功能错误
*
规格说明错误:规格说明可能不完全,有二义性或自身矛盾。
*
功能错误:
程序实现的功能与用户
要求的不一致。
这常常是由于规格说明中包含错误的功
能、多余
的功能或遗漏的功能所致。
*
测试
错误:软件测试的设计与实施发生错误。软件测试自身也可能发生错误。
*
测试标准引起的错误:
对软件测试
的标准要选择适当,
若测试标准太复杂,
则导致测试过
程出错的可能就大。
②系统错误
*
外部接口错误:外部接口指如终端、打印机、
通信线路等系统与外部环境通信的手段。所
有外部接口之间,人与机器之间的
通信都使用形式的或非形式的专门协议。如果协议有错,
或太复杂,
难以理解,致使在使用中出错。此外还包括对输入/输出格式错误理解,对输入
数据
不合理的容错等等。
*
内部接口错
误:内部接口指程序之间的联系。它所发生的错误与程序内实现的细节有关。
例如,设计
协议错、输入/输出格式错、数据保护不可靠、子程序访问错等。
*
硬件结构错误:
这类错误在于不能
正确地理解硬件如何工作。
例如,
忽视或错误地理解分
页机构、
地址生成、
通道容量、
I
/
O
指令、
中断处理、
设备初始化和启动等而导致的出错。
*
操作系统错误:这类错误主要是由于不了解操作系统的工作
机制而导致出错。
。当然,操
作系统本身也有错误,但是一般用
户很难发现这种错误。
*
软件结构
错误:
由于软件结构不合理或不清晰而引起的错误。
这种错误通
常与系统的负载
有关,
而且往往在系统满载时才出现。这是最难
发现的一类错误。
例如,错误地设置局部参
数或全局参数;
p>
错误地假定寄存器与存储器单元初始化了;
错误地假定不会发生中断
而导致
不能封锁或开中断;错误地假定程序可以绕过数据的内部锁而导致不能关闭或打开
内部锁;
错误地假定被调用子程序常驻内存或非常驻内存等等,都将导致软件出错。
p>
*
控制与顺序错误:
< br>这类错误包括:
忽视了时间因素而破坏了事件的顺序;
猜
测事件出现在
指定的序列中;
等待一个不可能发生的条件;
p>
漏掉先决条件;
规定错误的优先级或程序状态;
漏掉处理步骤;存在不正确的处理步骤或多余的处理步骤等。
*
资源管理错误:
这类错误是由于不
正确地使用资源而产生的。
例如,
使用未经获准的资源;
使用后未释放资源;资源死锁;把资源链接在错误的队列中等等。
③加工错误
*
算术与操作错误:
指在算术运算、
函数求值和一般操作过程
中发生的错误。包括:
数据类
型转换错;除法溢出;错误地使用
关系比较符;用整数与浮点数做比较等。
*
初始化错误:
典型的错误有:
忘记初始化工作区,忘记
初始化寄存器和数据区;
错误地对
循环控制变量赋初值;用不正
确的格式,数据或类型进行初始化等等。
*
控制和次序错误:这类错误与系统级同名错误类似,但它是局部错误。包括:遗漏路径;
不可达到的代码;
不符合语法的循环嵌套;
循环返回和
终止的条件不正确;
漏掉处理步骤或
处理步骤有错等。
*
静态逻辑错误:这类错误主要包括:不正
确地使用
CASE
语句;在表达式中使用不正确的
否定(例如用
>
代替
<
< br>的否定)
;对情况不适当地分解与组合;混淆
或
与
异或
等。
④数据错误
*
动态数据错误:
动态数据是在程序执行过程中暂时存在的数据。
各种不同类型的动态数据
在程序执行期间将共享一个共同的存储区域,
若程序启动时对这个区域未初始化,
就会导致
数据出
错。
由于动态数据被破坏的位置可能与出错的位置在距离上相差很远,
< br>因此要发现这
类错误比较困难。
*
静态数据错误:
静态数据在内容和
格式上都是固定的。
它们直接或间接地出现在程序或数
据库中。
由编译程序或其它专门程序对它们做预处理。
这是在程序执行前
防止静态错误的好
办法,但预处理也会出错。
*
数据内容错误:
数据内容是指存储
于存储单元或数据结构中的位串、
字符串或数字。
数据
内容本身没有特定的含义,
除非通过硬件或软件给予解释。
数据内容错误就是由于内容被破
坏或被错误地解释而造成的错误。
*
数据结构错误:
数
据结构是指数据元素的大小和组织形式。
在同一存储区域中可以定义不
< br>同的数据结构。
数据结构错误主要包括结构说明错误及把一个数据结构误当做另一
类数据结
构使用的错误。这是更危险的错误。
*
数据属性错误:
数据属性是指数据
内容的含义或语义。
例如,
整数、
字符
串、
子程序等等。
数据属性错误主要包括:
对数据属性不正确地解释,
比如错把整数当实数,
允许不同
类型数
据混合运算而导致的错误等。
⑤代码错误
主要包括:语法错误;打字错误;
对语句或指令不正确理解所产生的错误。
(3)
按软件生存期阶段分类
Good enough
-
Gerha
rt
分类方法把软件的逻辑错误按生存期不同阶段分为
4
类。
①问题定义(需求分析)错误
它们是
在软件定义阶段,分析员研究用户的要求后所编写的文档中出现的错误。换句话说,
这类
错误是由于问题定义不满足用户的要求而导致的错误。
②规格说明错误
< br>这类错误是指规格说明与问题定义不一致所产生的错误。它们又可以细分成:
*
不一致性错误:规格说明中功能说明与问题定义发生矛盾。
*
冗余性错误:规格说明中某些功能说明与问题定义相比是多
余的。
*
不完整性错误:规格说明中缺少某些必要的功能说明。
*
不可行错误:规格说明中有些功能要求是不可行的。
*
不可测试错误:有些功能的测试要求是不现实的。
③设计错误
这是在设计阶段产生的错
误,
它使系统的设计与需求规格说明中的功能说明不相符。
它们
又
可以细分为: