计算机术语——fault、failure、exception和error的区别

来源:互联网 发布:横扫千军算法术伤害吗 编辑:程序博客网 时间:2024/06/05 07:40

  本文的主要思路是先分别解释这几个概念的含义,然后通过一个具体的例子进行阐释,最后总结它们之间的关系。

(一)什么是error?

    我们先看软件工程中对error的定义,

Error is deviation from actual and expected value.It represents mistake made by people.

  这句话的意思是,Error是指实际值偏离你最初的期望,往往是由人为造成的。

(二)什么是fault?

Fault is incorrect step, process or data definition in a computer program which causes the program to behave in an unintended or unanticipated manner. It is the result of the error.

  这段话的意思,fault通常是由于程序中不正确的步骤,过程或者数据定义,导致程序出现了非故意的、不可预料的行为。fault通常是由error导致的。

(三)什么是failure?

Failure is the inability of a system or a component to perform its required functions within specified performance requirements.Failure occurs when fault executes.

  这段话的意思是failure是一个系统或者组件不能完成它被要求的功能。failure通常是由fault导致的。
  从前面的解释我们可以顺理成章的得出这样的解释,一些人为的error,使得程序中产生了不正确的步骤、过程和数据定义,从而使程序出现了一些不可预料的fualt,这些 fault最终又致使系统或者组件不能完成了最初要求的功能,也就是failure。如果你还有点迷糊,那么通过下面的这个例子,相信你应该就更清楚了。

(四)解释这三个概念的区别的例子。

#include<stdio.h>int main (){    int value1, value2, ans;    value1 = 5;    value2 = 3;    ans = value1 - value2;     printf("The addition of 5 + 3 = %d.", ans);    return 0;}

  这个程序的功能是实现两个数相加输出最终的结果,编译运行之后输出这样的结果:

The addition of 5 + 3 = 2.

  我们接下来具体分析一下:

  • 很显然程序的结果和我们最初期望的功能是不相符的,也就是说系统出现了failure。
  • 为了使程序能够正确工作,我们焦急的去寻找程序中的哪个过程出现了问题,也就是在寻找fault。在历经千辛万苦之后,终于发现了是第七行的这条语句出现了问题。这个程序的fault是把减法当成了加法。那么error是什么呢?
  • error就是我犯的错误,将原本应该输入+的地方,输入了-。这样我们就发现了系统故障产生的过程,我们往往把我们发现的代码 错误叫做bug。

  这三个概念是属于软件测试范畴的。对测试人员来说,他们不必知道程序的源码就能发现程序功能性的故障。从观察到的结果上来看,测试人员知道了程序中一定存在error导致了fault,因为fault导致程序failure产生正确的结果。但是测试人员不知道是什么导致了error。

(四)什么是异常?

  对Exception这个概念,大家往往不会太陌生,不管是Java还是C++中都有相应的处理机制。简而言之,异常就是那些我们能够预料到的,可能会出现的使得程序不能正常运行的行为。如果不是很清楚,可以参见博客。

3 0
原创粉丝点击