我想知道,在软件开发测试中,错误和缺陷之间有什么区别?

评论

@ user246拥有它。还有问题。同样的事情。

之前已经有人问过这个问题,所以我想分享这个问题。 programmers.stackexchange.com/questions/37029/………还有一些链接的问题(在该问题的右侧)也相似。无法将其标记为重复,因为它不在SQA SE上。

我认为我们已经对这个琐碎的问题有了足够的答案,所以我现在要保护它。

@ user246大声笑什么居高临下的评论。

#1 楼

一样。毫无疑问,有些公司使用这些术语来表示不同的含义,但是它们的用法并不通用。如果有人在面试中问您这个问题,您应该可以说:“我在哪里工作,这些术语是可以互换的。它们在这里意味着不同吗?”

评论


每个人都同意错误/缺陷的定义,这是产品的某些意外行为。对我来说,在开发阶段发现的错误应称为“ BUG”,但如果此错误在实时产品中发现,则应将其称为“ DEFECT”。不久后便成为购物袋中的缺陷产品。

– Mesut GUNES
20-11-27在9:37

#2 楼

错误,缺陷,问题,故障,事件,故障单都是相同的,并且在组织中可以互换使用。人们可以辩论并说出他们同意或不同意并引用参考文献,但实际情况是,只要对其进行跟踪,根据需要进行参考并最终确定,您所说的东西并不重要。

我的经验如下所示:
在Bugzila中,您将看到“错误ID”字段,在QC / HP ALM中,您将在内部公司特定的监视/支持工具上找到“缺陷ID”字段,主要是“事件编号:”。

评论


错误和缺陷相同。问题,事件和故障单往往意味着引起了关注,而不一定是由错误或缺陷引起的问题。例如,一个问题可能是由于用户错误引起的。或者可能是功能请求。的确,某些“错误跟踪”软件(Bugzilla)会跟踪除错误之外的所有类型的问题,甚至可能通俗地将它们统称为“错误”,但这不是标准用法,可能是由于扩展超出了软件范围原本打算

– LarsH
16 Jun 23'0:47



@LarsH尽管在技术上是正确的,但在现实世界中,无论公司的文化如何规定,事件通常被称为“错误”,“缺陷”或“事件”。从“设计上”被关闭的错误/缺陷/事件在技术上不是错误/缺陷,仍然每个人都将其称为错误/缺陷/事件,因此这是正确的称呼。

–彼得
16年6月23日在9:12

@Peter:我一般都同意你的观点,尽管我不会对“所有人”或“正确的名字打电话给他们”走得很远。我已经在4个不同的公司/组织(以及这些组织中具有不同文化的不同群体)进行了软件开发,并且很多人不会将问题称为错误,除非它是由软件/硬件未按规定运行引起的。尤其是当声称某个问题是其软件中的“错误”时,声誉受到威胁的开发人员。是的,我们通常都知道您的意思,因此不必大惊小怪,但这并不能使它正确。

– LarsH
16 Jun 23'13:32



@LarsH在我工作的公司中,事件与错误或缺陷有明显不同。事件已被用来描述诸如“服务器的硬盘空间不足”或“光纤线路被切断”之类的事件。当然,除了安全事件。我不确定普遍认为事件等同于错误是否公平。错误和缺陷,是的,但是IMO事件正在扩展它。

–h4ckNinja
16年6月23日在19:09

#3 楼

存在无数种区分“错误”和“缺陷”的定义。他们彼此不同意。它们包括直接的对立面(错误是A,缺陷是B,错误是B,缺陷是A)。据我所知,这些定义中没有一个被广泛使用。术语之间的任何区别将特定于您的公司,甚至特定于您的小组,部门,公司。

有些人声称两者之间存在明显的区别,例如这样的人:



错误是编码错误的结果
缺陷是偏离要求的结果



或那个:




在测试时,一个错误正在成为一个问题,而缺陷就是在生产时客户所遇到的问题。



或另外一个:


缺陷是通常由人为错误引起的书写效果
正确的代码。 [...]错误不是编码错误。一个错误是
系统所做的事情本身并不是错误的……但是它不是故意设计的,并且您没有看到它来。


或对此答案发表评论:


“错误”表示,一旦发现该问题,就可以(或认为
)可以解决。 “缺陷”(如“设计缺陷”中)暗示并非如此,也可能是不完善的规范或设计的结果。或从该线程的另一个答案中:


[...]如果规范说软件应该做某事并且软件可以做到这一点,那不是错误。但是,如果这使该软件不适合其预期用途,那就是缺陷。


在该线程的其他答案中甚至可以找到更多的定义。

这些定义彼此完全矛盾。他们也与我如何看待现实中使用的术语不一致。在软件行业的任何重要部分所使用的术语之间并没有一致的区别。

唯一被广泛使用的定义是没有在错误和缺陷之间进行区分的定义。如果没有您的工作环境的进一步上下文及其专门的术语用法,“缺陷”和“错误”均表示:“使用软件时某人遇到或可能遇到的问题”。但是,从该线程的其他答案中可以看出,这还不够广泛,不足以称为“定义”。

评论


我会进一步建议在日常使用中有所不同。 “错误”表示该问题一经发现就可以(或被认为)可以轻松解决。 “缺陷”(如“设计有缺陷”)表明并非如此,这也是规范或设计不完善的结果。比较新建筑物的交接情况,在该交接过程中向主承包商报告了“钩子”(臭虫),无需支付任何额外费用即可修复(或者,如果它们被证明是不必要的,并且正确交付了合同和指定的计划,则不收取) )。我同意,任何硬性分类都将在本地范围内进行。

–nigel222
16年6月23日在9:58

@ nigel222没有冒犯的意图,但是我将在定义4下进行预订,这与其他3个示例再次不一致。

–彼得
16年6月23日在10:03

#4 楼

错误一词来自第一个计算机错误:



真正的错误不再破坏计算机,而且加班这种开始的意义越来越小。因此,我的使命是摆脱“错误”一词,始终将缺陷用于任何与软件相关的问题,所以您也应该:)

质量是人的视角,每个人都有不同的看法。我认为无论是否存在缺陷都是一样的。如果您认为它已损坏,那么根据Seth Godin会被损坏。

如果您对缺陷分类感兴趣,我建议您看一下零缺陷政策中使用的分类过程。 。

评论


这显然不是“ bug”一词的来源。如果“错误”一词尚未提及问题或缺陷,为什么他们会说“发现错误的第一个实际案例”?

– David Schwartz
16年6月23日在15:54

也许他们预想到了一个漏洞会破坏系统?这是我在学校也学到的故事。在Wikipedia上也提到过,因此它必须为true ;-) en.wikipedia.org/wiki/Software_bug

– Niels van Reijmersdal
16年6月23日16:00



Wikipedia页面指向“ bug”一词的许多先前用法。

– David Schwartz
16年6月23日在18:57

是的,的确如此,但是这些先前的用法不是计算机/软件错误。他们更多地是硬件/电气工程师的参考。例如,Wikipedia页面中提到的Thomas Edison示例。文章还提到了尼尔斯·范·赖默斯达尔(Niels van Reijmersdal)撰写的故事!

–IAmMilinPatel
16年6月24日在5:10

#5 楼

使用了许多不同的问题跟踪工具后,通常将所有这些术语“缺陷”,“错误”,“问题”等……简单地视为同一件事,并且您会发现默认情况下它们都只是定义了一个

因此,基于此,我建议大多数人也将它们视为同一件事。

#6 楼

如果您坚持将系统与规格进行比较,那么在开发测试中可能并没有真正的区别。但是,很多东西被发现并记录为缺陷,实际上与开发人员的意图并没有什么差异。

错误一词已使用了很长时间。这实际上意味着您对所构建内容的任何发现都不是“正确”的。爱迪生在1878年的一封信中著名地定义了该术语。

注:在该引用上对Grace Hopper的挖掘使我感到不快。她的日志条目清楚表明她熟悉现有术语。

#7 楼

错误和缺陷之间的区别可以由您自己决定。这完全取决于您如何定义这两个术语。术语的定义和理解从组织到团队到个人都不同。无论走到哪里,您都会看到人们对一个术语有不同的理解,并根据他们的理解对其进行定义。

错误和缺陷对一个人可能意味着完全相同的事情,而另一个人可以

有些人如下定义Bug和缺陷,

BUG:



编码错误。
人为操作会产生错误的结果。
与预期结果的差异。
软件错误是指
计算机程序无法正常工作,或者
产生错误的结果。



缺陷是与需求。
导致失败的算法问题。
缺陷是指通常可以正常工作的东西,但它有不合规格的东西。
缺陷被引入了由于错误而导致的软件。
这是软件中的异常,可能会导致t行为不正确,
不符合规范。


#8 楼

错误和缺陷之间有什么区别?


在测试时错误就成为问题,而缺陷就是客户在生产环境中遇到的问题。
错误是程序中的错误,会导致其突然运行。通常在由测试人员进行模块测试的开发人员进行的单元测试期间发现错误。
当应用程序不符合需求规范时,就会发现缺陷。在客户端或用户进行测试时,也可以发现缺陷。


#9 楼

根据ISTQB

,由于某些误解或错误的逻辑,程序员为要求编写code时,“缺陷和错误”都相同,因为导致的代码错误,他们为此要求编写了错误的代码缺陷或错误。




”例如:


“:我们正在开发模块来计算利息给定的金额,但由于代码错误,开发人员编写了错误的代码来计算利息金额,我们错了(可能更少或更多)利息金额,此处我们没有得到符合要求的预期结果,因此这是错误或缺陷。

#10 楼

我不同意错误和缺陷是同一件事的答案。

在软件测试中,错误是由代码缺陷导致的错误行为。代码缺陷是导致其无法正确满足其相应规范的代码缺陷。

相比之下,缺陷(未经鉴定使用)是对规范或要求的偏离。错误说明的规范是一种缺陷-正确满足规定规范的代码也将被视为无缺陷。任何代码未满足的要求也被认为是缺陷(直到编写的代码正确满足要求为止)-不存在的代码不会表现出错误。

当然,错误可能是与缺陷相关联,因为错误的存在可能导致代码偏离其要求。但这并不意味着它们是同一回事。

#11 楼

对于说没什么区别的人,我会问他们一个问题:“说一段特定的代码会导致产品行为不当。那段代码中肯定有一个错误。代码不是必不可少的,因此只是已注释掉。是否已找到并修复了该应用程序中的错误?该应用程序中是否还有缺陷?”

我认为大多数人会回答“否”和“是”。我们仍然没有在该代码中找到问题或解决它。但是我们已防止它造成缺陷。

通常没有区别。大多数缺陷是由错误引起的。大多数错误都会导致检测。

错误是一段代码中的错误。它可能没有任何后果,例如,只有在使用该代码的任何产品中都没有发生时,它才可能触发。

缺陷是指导致意外行为或使某些事物不适合使用的错误。

缺陷通常是由错误引起的,但并非总是如此。例如,如果规范说软件应该做某事而软件可以做到,那不是错误。但是,如果这使该软件不适合其预期用途,那就是缺陷。

错误可能会导致缺陷,但并非总是如此。例如,如果规范说应该以某种方式处理某种错误情况,而代码却没有这样做,那是该代码中的错误。但是,如果可以证明包含该代码的项目确实无法产生这种情况,那么这并不是该项目的缺陷。

当您专门谈论将要使用的代码的开发时在各个项目中,没有区别。任何错误都必须视为缺陷。

#12 楼

唯一的区别是您要针对的受众。测试人员和开发人员

缺陷:缺陷是编码或逻辑中的错误,导致程序故障或产生不正确/意外的结果。程序员称为错误。