了解故障,错误和失败的含义

时间:2011-06-12 16:22:21

标签: testing

考虑以下课程:

class Xyz {
    public int count;

    public void numZero (int[] x) {
        // Effects: if x == null throw NullPointerException
        // else return the number of occurrences of 0 in x
        int count = 0;
        for (int i = 1; i < x.length; i++) //we have a bug here
            {
            if (x[i] == 0)
            {
                count++;
            }
        }

        this.count = count;
    }
}

我试图了解FaultErrorFailure的真正含义。

故障

根据我的理解,在此上下文中Fault将成为代码编写逻辑中的一个缺陷。 因此,在这种情况下,Fault将是代码指示计算机开始迭代v的所有元素,其起始索引为1而不是预期的0。

错误

运行上述方法时,我们总是得到Error但是在一次实例中(当v.length == 0时),我们真正想要的是迭代x的所有元素,但是因为我们从i = 1开始,所以事实并非如此。

使用空向量作为输入,因为我们不输入for loop,所以我们的错误代码没有运行,这意味着错误不会发生,并且一切都在理论上应该发生。< / p>

失败

由于我们的代码有一个Fault,执行时几乎总是会在Error中显示,所以当我们有效地看到不正确的输出时,我们只有Failure

假设Error在我的程序中有效地发生了,我们只有在外面世界以某种方式可见的情况下才会失败。那就是我private int count;而不是public int count;我的课堂上从来没有错过(当然这是有史以来最无用的课程!)。这是对的吗?

我所说的一切都是正确的还是我错了什么?

由于

6 个答案:

答案 0 :(得分:7)

  • 失败:与预期结果不同。这就是问题 你观察。
  • 错误:失败的原因。
  • 错误:导致故障发生的错误。错别字。

失败,错误和错误的一个例子。

pre: param is an integer.
post: returns the product of the param multiplied by 2.

1. int double (int param) {
2.   int result;
3.   result = param * param;
4.   return result;
5. }

•对double(3)的调用返回9,但是post条件表明它应该返回6 •结果9表示失败 •故障是由第3行的故障引起的(&#34; * param&#34;用于代替&#34; * 2&#34;)
错误是一个错字,(有人打字&#34; * param&#34;而不是&#34; * 2&#34;错误地)。

为什么为&#34; Bug&#34;提供三种不同的标签?

他们帮助您准确了解问题的准确程度。

说&#34;失败&#34;意味着你知道出了什么问题但却不知道原因 说&#34;错误&#34;意思是你知道原因,但不知道故障发生的原因 说&#34;错误&#34;意味着你知道故障发生的原因。

你可以问,&#34;但是为什么这个人会输错?&#34;但这会影响到人为因素,并超出了问题的范围。

资料来源:Zhen Ming(Jack)Jiang - EECS 4413,软件测试,约克大学。

答案 1 :(得分:5)

首先,只要系统提供的实际服务偏离其预期服务,就会发生失败。请注意,由于即使规范可能出错,定义也不依赖于它们。

其次,错误是可能导致失败的系统状态的一部分。系统状态可能出错但从未到达输出,因此不会导致故障。

第三,错误是导致错误的原因。它可以是设计缺陷,宇宙射线等等。如果你指出,如果没有激活故障,则不会产生错误。

请查看basic concepts and terminologydependability了解详情。

答案 2 :(得分:4)

enter image description here

错误是与实际和预期结果的偏差。它代表了人民所犯的错误。

错误是错误的结果。由于程序或软件以非预期的方式表现,这是不正确的步骤或过程

错误是程序中出现故障的证据,因为该程序没有按预期方式运行

失败是系统或组件无法执行其所需的功能。故障执行时发生故障

据说在发生故障时会检测到

缺陷

答案 3 :(得分:1)

错误/故障/失败中的错误是指引入问题的人为错误。人为错误是导致用户在您的示例中创建不正确的for语句的错误思维。

错误很难衡量或理解。在很多情况下很难知道开发人员在做出引入错误的错误时的想法。这就是为什么他们喜欢区分错误和错误。我们可以看到代码中存在错误,但很难知道错误是为什么创建的。可能是代码是正确的,然后在后续更改期间,for循环被更改。

我始终记得程序员的错误导致代码中的错误导致用户失败。并非所有错误都会导致错误。并非所有故障都会导致故障。

答案 4 :(得分:1)

软件 Fault 是指代码中的 bug 。它是 DURING 的软件活动。

软件失败系统行为不端的时候。观察到 LATER 而不是故障。

故障可能是失败的原因。错误是“ WHAT ”,失败是“ WHEN ”。

这些只是基本面,但我仍然希望它能够解释这个问题。

答案 5 :(得分:0)

有多种不同的定义,我个人更喜欢以下定义:

Fault -> Error -> Failure

故障:经过验证或假设的错误原因(故障,外部干扰,设计错误)。

错误:程序或数据结构中故障的表现(实际输出与预期输出之间的差异)。

失败::当错误到达服务接口,从而改变服务本身(导致系统或组件无法根据其规格执行所需功能)时发生的事件。

>