什么是软件错误?

“废话,我认为这是一个错误。 这不应该那样工作!”

您听说过软件工程师之前提到过“错误”吗? 好吧,这是不可避免的,因为软件中到处都有错误……

但是,当我们说某个软件中存在“错误”时,我们指的是什么呢?

用简单的英语来说,一个错误就是导致软件意外的和不想要的行为的原因

这个词的起源并不是大多数软件工程师都知道的,因为,好吧,我尽可能简洁地说这没关系。

重要的是,我们喜欢使用“ bug”一词来指代我们需要压扁和杀死的东西(或者,如果您喜欢像我这样不太男性化的术语,则可以修复或解决)。

虫子是我们的敌人。 它们是我们与始终可以在每种情况下完美运行的软件之间始终如一的事物之一。 用户必杀技。 但是,您问为什么会存在错误?

为什么存在错误?

问这个问题实际上是在问:“为什么软件每次都不能在任何情况下都无法完美运行?”下面列出了到目前为止我在工作中逐渐意识到的原因:

  1. 在实际发生某些边缘情况之前 ,它们是晦涩难懂的,很难预见
  2. 在开发过程中,任何软件都不断从错误状态开始(即,程序要完全按照开发人员的预期方式工作需要花费时间)
  3. 测试 (应该自动运行以检查软件是否按预期运行)不会在实时部署之前编写或运行
  4. 用于实现新功能的代码必须与现有代码交互 ,这可能导致以前稳定的功能变得不稳定(即,它们曾经按预期工作,但由于最近对代码的添加而不再起作用)
  5. 开发人员可能会误解或对新功能做出错误的假设
  6. 开发人员可能对现有代码库的特定部分如何工作并在这种错误印象下实现新功能有错误的想法 (对于没有全面文档的大型代码库尤其如此)

与现实生活不同

在生活在这个世界上的人类的日常生活中,我们受一系列全面的物理定律支配。 根据这些法律,某人做某事所产生的所有反馈都是免费的。 例如,当您敲门时,您希望该动作会发出指关节木的声音。

但是,在软件中,为了使敲门动作在软件中发出类似的声音(仅是类推),程序员必须明确编写代码,说“如果类似手的物体与我们的数字木门互动,则可以使用wooden_door_knock声音。”

当您开始考虑从煎锅到番茄的无数可能敲打着众所周知的门的物体时,这很容易使您不知所措。

当您甚至无法想象有人想用香肠敲门时,您遗漏了一个可能的物体时会发生什么?

默认情况下,如果程序员没有编写代码来捕获错误处理 错误 ,最坏的情况是程序将完全崩溃。 最好的情况是该程序以某种方式继续运行,但是用户发现它的行为异常。

你知道吗,像这个软件是越野车