Muthu Asked: 2010-11-25 04:34:27 +0800 CST2010-11-25 04:34:27 +0800 CST 2010-11-25 04:34:27 +0800 CST 什么是错误? 772 实际上什么是错误?任何预定义的规则? bug-reporting 4 个回答 Voted Best Answer crncosta 2010-11-25T04:48:33+08:002010-11-25T04:48:33+08:00 一个错误是: 软件错误是用于描述计算机程序或系统中的错误、缺陷、错误、故障或故障的常用术语,这些错误、缺陷、错误、故障或故障会产生不正确或意外的结果,或导致其以非预期方式运行。(来自维基百科) 这是关于什么构成错误的另一个很好的定义。任何一个: 该程序没有按照程序员的意图运行。或者 程序员的意图并没有满足用户普遍和合理的期望。 Ubuntu 社区在这个wiki中对 bug 有一个很好的定义,特别强调了bug和缺失功能之间的区别: 软件错误是计算机程序中的错误或故障,导致它无法按预期工作。这可能就像根本无法工作一样简单,也可能像一个微妙的错误结果一样复杂 [...] 有些东西不是错误,而是缺少应该合理包含的功能。缺少的功能不应被报告为错误,而应为它们编写 FeatureSpecifications。 虽然很难划清这两个定义的界限并回答问题是错误还是缺少功能?,可以给出一些指导方针: 如果这是一个需要解决许多细节的问题,那么它很可能是一个特性。例如,无法将文件安全地写入现代 Windows 分区是一项缺失的功能。 无法将文件安全地写入ReiserFS 分区将是一个错误。 这两个断言之间的区别在于:第一个更广泛(支持现代 windows FS),因此可以被视为缺少功能,而另一个则强调一个独特的问题(无法写入 ReiserFS) - 一个特定的错误。 如果您有兴趣,我建议您查看BugSquad 团队wiki。与错误作斗争是软件开发周期中最有趣的活动之一,除了是一个很好的学习机会 :-) 谢谢! Jeremy 2010-11-25T04:43:24+08:002010-11-25T04:43:24+08:00 我会挥杆的。主要是设计者/程序员不打算的行为(不考虑糟糕的设计)。就您应该向人们报告的错误而言,任何使程序更易于使用并符合上述描述的内容。这包括从最严重到最不严重的系统崩溃、X 崩溃、程序崩溃和任何内部程序错误。 如果您从终端运行应用程序,导致崩溃或窗口关闭的错误通常会导致某种输出到 stderror,这可能很有用。另请参阅系统日志以获取错误报告。 3sdmx 2010-11-25T04:44:02+08:002010-11-25T04:44:02+08:00 错误是计算机程序或系统中的错误,因此程序无法正常运行或根本无法运行。所以错误可能是由于错误的编程代码,或者是不够健壮且无法处理某些异常的编程代码(例如:除以 0) 0xC0000022L 2012-06-13T10:25:45+08:002012-06-13T10:25:45+08:00 出于所有实际目的,应避免将术语“错误”作为一个过于模糊的术语。 您的问题的最佳答案写满了一整本书: Andreas Zeller 的“为什么程序失败”。一本应该放在每个程序员书架上的书。作者还努力不称它们为“错误”(继续阅读)。因为 crncosta 的回答已经表明“错误”不仅仅是一个编程错误。这就是为什么有些人更喜欢术语“问题”(这导致“问题跟踪器”而不是“错误跟踪器”)。 因为最终用户认为是错误的东西根本不需要是错误。它可以——尽管这经常被用作一个蹩脚的借口——只是设计使然。然而,一些故障一旦被观察到,就被归类为“错误”,即使它们是由于缺少功能。 上述书的作者花了好几页来定义诸如失败和缺陷之类的术语,并描述了为什么“错误”不是一个合适的术语(太模糊了)。 他的术语摘要: 程序员创造了缺陷 缺陷导致感染(“错误程序状态”) 感染传播 感染导致失败(“可观察到的不良/意外行为”) 观察者(通常是最终用户)看到失败 正如你所看到的,作者区分了因果,在“bug”的情况下几乎总是混合的。大多数时候,术语“错误”被用于缺陷、感染 和故障。
一个错误是:
这是关于什么构成错误的另一个很好的定义。任何一个:
Ubuntu 社区在这个wiki中对 bug 有一个很好的定义,特别强调了bug和缺失功能之间的区别:
虽然很难划清这两个定义的界限并回答问题是错误还是缺少功能?,可以给出一些指导方针:
这两个断言之间的区别在于:第一个更广泛(支持现代 windows FS),因此可以被视为缺少功能,而另一个则强调一个独特的问题(无法写入 ReiserFS) - 一个特定的错误。
如果您有兴趣,我建议您查看BugSquad 团队wiki。与错误作斗争是软件开发周期中最有趣的活动之一,除了是一个很好的学习机会 :-)
谢谢!
我会挥杆的。主要是设计者/程序员不打算的行为(不考虑糟糕的设计)。就您应该向人们报告的错误而言,任何使程序更易于使用并符合上述描述的内容。这包括从最严重到最不严重的系统崩溃、X 崩溃、程序崩溃和任何内部程序错误。
如果您从终端运行应用程序,导致崩溃或窗口关闭的错误通常会导致某种输出到 stderror,这可能很有用。另请参阅系统日志以获取错误报告。
错误是计算机程序或系统中的错误,因此程序无法正常运行或根本无法运行。所以错误可能是由于错误的编程代码,或者是不够健壮且无法处理某些异常的编程代码(例如:除以 0)
出于所有实际目的,应避免将术语“错误”作为一个过于模糊的术语。
您的问题的最佳答案写满了一整本书: Andreas Zeller 的“为什么程序失败”。一本应该放在每个程序员书架上的书。作者还努力不称它们为“错误”(继续阅读)。因为 crncosta 的回答已经表明“错误”不仅仅是一个编程错误。这就是为什么有些人更喜欢术语“问题”(这导致“问题跟踪器”而不是“错误跟踪器”)。
因为最终用户认为是错误的东西根本不需要是错误。它可以——尽管这经常被用作一个蹩脚的借口——只是设计使然。然而,一些故障一旦被观察到,就被归类为“错误”,即使它们是由于缺少功能。
上述书的作者花了好几页来定义诸如失败和缺陷之类的术语,并描述了为什么“错误”不是一个合适的术语(太模糊了)。
他的术语摘要:
正如你所看到的,作者区分了因果,在“bug”的情况下几乎总是混合的。大多数时候,术语“错误”被用于缺陷、感染 和故障。