实际上,什么是 bug?有什么预定义的规则吗?
答案1
一个错误是:
软件错误是用来描述计算机程序或系统中的错误、缺陷、失误、故障或故障的常用术语,这些错误、缺陷、失误、故障或故障会导致不正确或意外的结果,或导致其以非预期的方式运行。(来自维基百科)
这里是构成 bug 的另一个很好的定义。以下两种情况均可:
- 程序没有按照程序员的意图运行。或
- 程序员的意图未能满足常见且合理的用户期望。
Ubuntu 社区对这个 bug 有一个很好的定义维基百科,尤其强调了漏洞和缺少的功能:
软件错误是计算机程序中的错误或故障,导致程序无法按预期运行。这可能简单到完全无法运行,也可能复杂到出现细微错误的结果 [...] 有些东西不是错误,而是缺少应合理包含的功能。缺少的功能不应报告为错误,而应为其编写功能规范。
虽然很难在这两个定义之间划一条界线,并回答这个问题是存在错误还是缺少功能?,可以给出一些指导原则:
- 如果这是一个需要解决很多细节的问题,那么它很可能是一个功能。例如,无法安全地将文件写入现代 Windows 分区是一个缺失的功能。
- 无法安全地将文件写入ReiserFS 分区这将是一个错误。
这两个断言之间的区别在于:第一个断言更为普遍(支持现代 Windows FS),因此可以被视为缺少的功能,而另一个断言强调了一个独特的问题(无法写入 ReiserFS) - 一个特定的错误。
如果你有兴趣,我建议你看看BugSquad 团队wiki。对抗漏洞是软件开发周期中最有趣的活动之一,同时也是一个很好的学习机会 :-)
谢谢!
答案2
我会尝试一下。主要是设计者/程序员没有想到的行为(不考虑糟糕的设计)。关于你应该向人们报告什么错误,任何使程序更难使用并符合上述描述的事情。从最严重到最不严重,这包括系统崩溃、X 崩溃、程序崩溃和任何内部程序错误。
如果您从终端运行应用程序,导致崩溃或窗口关闭的错误通常会导致某种输出到 stderror,这可能很有用。另请参阅系统日志以获取错误报告。
答案3
Bug 是计算机程序或系统中的错误,导致程序无法正常运行或根本无法运行。因此,Bug 可能是由于错误的编程代码或编程代码不够健壮且无法处理某些异常(例如:除以 0)造成的。
答案4
出于所有实际目的,应避免使用“bug”一词,因为它是一个过于模糊的术语。
对你的问题最好的答案可以写成一本书:“程序为何失败”作者 Andreas Zeller。这是一本应该放在每个程序员书架上的书。作者也尽力不把它们称为“bug”(请继续阅读)。因为正如 crncosta 的回答已经表明的那样,“bug”不是只是编程错误。这就是为什么有些人更喜欢使用术语“问题”(这导致使用“问题跟踪器”而不是“错误跟踪器”)。
因为最终用户认为是 bug 的东西根本不一定是 bug。它可能只是设计问题(尽管这经常被用作蹩脚的借口)。然而,有些故障一旦被发现,就会被归类为“bug”,即使它们是由于缺少某个功能造成的。
上述书籍的作者用了好几页来定义以下术语:失败和缺点并描述为什么“bug”不是一个合适的术语(太模糊)。
他的术语总结:
- 程序员创建缺点
- 缺点导致感染(“错误程序状态”)
- 感染传播
- 感染原因失败(“可观察到的不良/非预期行为”)
- 观察者(通常是最终用户)看到失败
正如您所看到的,作者区分了因果关系,而在“bug”的情况下,因果关系几乎总是混杂在一起。大多数情况下,“bug”一词都适用于缺点, 这感染 和这失败。