考虑以下课程:
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
,所以我们的错误代码没有运行,这意味着错误不会发生,并且一切都在理论上应该发生。< / p>
由于我们的代码有一个Fault
,执行时几乎总是会在Error
中显示,所以当我们有效地看到不正确的输出时,我们只有Failure
。
假设Error
在我的程序中有效地发生了,我们只有在外面世界以某种方式可见的情况下才会失败。那就是我private int count
;而不是public int count;
我的课堂上从来没有错过(当然这是有史以来最无用的课程!)。这是对的吗?
我所说的一切都是正确的还是我错了什么?
由于
答案 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)
首先,只要系统提供的实际服务偏离其预期服务,就会发生失败。请注意,由于即使规范可能出错,定义也不依赖于它们。
其次,错误是可能导致失败的系统状态的一部分。系统状态可能出错但从未到达输出,因此不会导致故障。
第三,错误是导致错误的原因。它可以是设计缺陷,宇宙射线等等。如果你指出,如果没有激活故障,则不会产生错误。
答案 2 :(得分:4)
错误是与实际和预期结果的偏差。它代表了人民所犯的错误。
错误是错误的结果。由于程序或软件以非预期的方式表现,这是不正确的步骤或过程
错误是程序中出现故障的证据,因为该程序没有按预期方式运行
失败是系统或组件无法执行其所需的功能。故障执行时发生故障
据说在发生故障时会检测到缺陷。
答案 3 :(得分:1)
错误/故障/失败中的错误是指引入问题的人为错误。人为错误是导致用户在您的示例中创建不正确的for语句的错误思维。
错误很难衡量或理解。在很多情况下很难知道开发人员在做出引入错误的错误时的想法。这就是为什么他们喜欢区分错误和错误。我们可以看到代码中存在错误,但很难知道错误是为什么创建的。可能是代码是正确的,然后在后续更改期间,for循环被更改。
我始终记得程序员的错误导致代码中的错误导致用户失败。并非所有错误都会导致错误。并非所有故障都会导致故障。
答案 4 :(得分:1)
软件 Fault 是指代码中的 bug 。它是 DURING 的软件活动。
软件失败是系统行为不端的时候。观察到 LATER 而不是故障。
故障可能是失败的原因。错误是“ WHAT ”,失败是“ WHEN ”。
这些只是基本面,但我仍然希望它能够解释这个问题。
答案 5 :(得分:0)
有多种不同的定义,我个人更喜欢以下定义:
Fault -> Error -> Failure
故障:经过验证或假设的错误原因(故障,外部干扰,设计错误)。
错误:程序或数据结构中故障的表现(实际输出与预期输出之间的差异)。
失败::当错误到达服务接口,从而改变服务本身(导致系统或组件无法根据其规格执行所需功能)时发生的事件。
>