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