【发布时间】:2011-06-12 16:22:20
【问题描述】:
考虑以下类:
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;
}
}
我想弄清楚Fault、Error 和Failure 的真正含义。
故障
据我了解,Fault 在这种情况下将是代码编写逻辑的缺陷。
所以在这种情况下,Fault 将是这样一个事实,即代码指示计算机开始迭代 v 的所有元素,起始索引为 1 而不是预期的 0。
错误
当运行上述方法时,我们总是得到一个Error,但在一次实例中(当v.length == 0),因为我们真正想要的是迭代x的所有元素,但因为我们从i = 1,这并没有真正发生。
使用空向量作为输入,因为我们没有输入for loop,所以我们的错误代码不会运行,这意味着错误不会发生,并且一切都会按照理论上发生。
失败
由于我们的代码有一个Fault,在执行时几乎总是会显示为Error,所以当我们有效地看到不正确的输出时,我们只有一个Failure。
假设Error 在我的程序中有效地发生了,如果它以某种方式对外界可见,我们只有一个失败。也就是说,如果我private int count;而不是public int count;,我永远不会在我的课堂上出现错误(当然这将是有史以来最没用的课堂!)。是这样吗?
我所说的一切都是正确的还是我有错误?
谢谢
【问题讨论】:
-
这属于english.stackexchange.com
-
...或 sqa.stackexchange.com :))
-
@Hans:那肯定是个玩笑吧?
标签: testing