`
fanfq
  • 浏览: 269722 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

如何有效地报告 Bug

阅读更多
相关文章链接:
【提问的智慧】
【如何有效的提交 bug】


作者:Simon Tatham 专业的自由软件程序员

引言

在报告中说“不好用”;

在报告中用户没有提供足够的信息;

所报告的问题是由于用户的过失而产生的;

所报告的问题是由于网络错误而产生的;

在这里我会尽力阐明如何写一个好的bug报告。我非常希望每一个人在报告bug之前都读一下这篇短文,当然我也希望用户在给我报告bug之前已经读过这篇文章。

在bug报告里,要设法搞清什么是事实(例如:“我在电脑旁”和“XX出现了”)什么是推测(例如:“我想问题可能是出在……”)。如果愿意的话,您可以省去推测,但是千万别省略事实。

“程序不好用”
程序员不是弱智:如果程序一点都不好用,他们不可能不知道。他们不知道一定是因为程序在他们看来工作得很正常。所以,或者是您作过一些与他们不同的操作,或者是您的环境与他们不同。他们需要信息,报告bug也是为了提供信息。信息总是越多越好。

本文中提到的都是一些指导方针,没有哪一条是必须恪守的准则。不同的程序员会喜欢不同形式的bug报告。如果程序附带了一套报告bug的准则,一定要读。如果它与本文中提到的规则相抵触,那么请以它为准。

“演示给我看”
报告bug的最好的方法之一是“演示”给程序员看。让程序员站在电脑前,运行他们的程序,指出程序的错误。让他们看着您启动电脑、运行程序、如何进行操作以及程序对您的输入有何反应。

这些可能还不够。也许他们觉得还需要更多的信息,会请您重复刚才的操作。他们可能在这期间需要与您交流一下,以便在他们需要的时候让bug重新出现。他们可能会改变一些操作,看看这个错误的产生是个别问题还是相关的一类问题。如果您不走运,他们可能需要坐下来,拿出一堆开发工具,花上几个小时来好好地研究一下。但是最重要的是在程序出错的时候让程序员在电脑旁。一旦他们看到了问题,他们通常会找到原因并开始试着修改。
“告诉我该怎么做”

如果您必须报告bug,而此时程序员又不在您身边,那么您就要想办法让bug重现在他们面前。当他们亲眼看到错误时,就能够进行处理了。

把您能想到的所有的输入方式都告诉程序员,如果程序要读取一个文件,您可能需要发一个文件的拷贝给他们。如果程序需要通过网络与另一台电脑通讯,您或许不能把那台电脑复制过去,但至少可以说一下电脑的类型和安装了哪些软件(如果可以的话)。
“哪儿出错了?在我看来一切正常哦!”

同样也要描述发生了什么。精确的描述您看到了什么。告诉他们为什么您觉得自己所看到的是错误的,最好再告诉他们,您认为自己应该看到什么。如果您只是说:“程序出错了”,那您很可能漏掉了非常重要的信息。

特殊情况下,如果有错误消息号,一定要把这些号码告诉程序员。不要以为您看不出任何意义,它就没有意义。错误消息号包含了能被程序员读懂的各种信息,并且很有可能包含重要的线索。给错误消息编号是因为用语言描述计算机错误常常令人费解。用这种方式告诉您错误的所在是一个最好的办法。

如果您使用UNIX系统,程序可能会产生一个内核输出(coredump)。内核输出是特别有用的线索来源,别扔了它们。另一方面,大多数程序员不喜欢收到含有大量内核输出文件的EMAIL,所以在发邮件之前最好先问一下。还有一点要注意:内核输出文件记录了完整的程序状态,也就是说任何秘密(可能当时程序正在处理一些私人信息或秘密数据)都可能包含在内核输出文件里。
“出了问题之后,我做了……”

这种用户仿佛一只被逼到墙角的鼬(黄鼠狼、紫貂一类的动物——译者注):背靠墙壁,面对死亡的降临奋起反扑,疯狂攻击。他们认为做点什么总比什么都不做强。然而这些在处理计算机软件问题时并不适用。

当程序出毛病的时候,立刻停止正在做的任何操作。不要按任何健。仔细地看一下屏幕,注意那些不正常的地方,记住它或者写下来。然后慎重地点击“确定” 或“取消”,选择一个最安全的。学着养成一种条件反射——一旦电脑出了问题,先不要动。要想摆脱这个问题,关掉受影响的程序或者重新启动计算机都不好,一个解决问题的好办法是让问题再次产生。程序员们喜欢可以被重现的问题,快乐的程序员可以更快而且更有效率的修复bug。
“我想粒子的跃迁与错误的极化有关”

有一次我与另一个程序员一起工作,他一直在找代码中的bug,他常常遇到一个bug,但是不会解决,于是就叫我帮忙。“出什么毛病了?”我问。而他的回答却总是一些关于bug的意见。如果他的观点正确,那的确是一件好事。这意味着他已经完成了工作的一半,并且我们可以一起完成另一半工作。这是有效率并有用的。

做程序员也是一样。即便您自己的“诊断”有时真的有帮助,也要只说“症状”。“诊断”是可说可不说的,但是“症状”一定要说。同样,在bug报告里面附上一份针对bug而做出修改的源代码是有用处的,但它并不能替代bug报告本身。

用户多动动脑筋对程序员的工作是有帮助的。即使您的推断是错误的,程序员也应该感谢您,至少您想去帮助他们,使他们的工作变的更简单。不过千万别忘了报告“症状”,否则只会使事情变得更糟。
“真是奇怪,刚才还不好用,怎么现在又好了?”

大多数“间歇性错误”并不是真正的“间歇”。其中的大多数错误与某些地方是有联系的。有一些错误可能是内存泄漏产生的,有一些可能是别的程序在不恰当的时候修改某个重要文件造成的,还有一些可能发生在每一个小时的前半个小时中(我确实遇到过这种事情)。

程序员想要了解任何与您发现的问题相关的事情。有可能的话您到另一台机器上试试,多试几次,两次,三次,看看问题是不是经常发生。如果问题出现在您进行了一系列操作之后,不是您想让它出现它就会出现,这就有可能是长时间的运行或处理大文件所导致的错误。程序崩溃的时候,您要尽可能的记住您都做了些什么,并且如果您看到任何图形,也别忘了提一下。您提供的任何事情都是有帮助的。即使只是概括性的描述(例如:当后台有EMACS运行时,程序常常出错),这虽然不能提供导致问题的直接线索,但是可能帮助程序员重现问题。

“我把磁盘装进了 Windows……”
表意清楚在一份bug报告里是最基本的要求。如果程序员不知道您说的是什么意思,那您就跟没说一样。我收到的bug报告来自世界各地,有许多是来自非英语国家,他们通常为自己的英文不好而表示歉意。总的来说,这些用户发来的bug报告通常是清晰而且有用的。几乎所有不清晰的bug报告都是来自母语是英语的人,他们总是以为只要自己随便说说,程序员就能明白。

精确。如果做相同的事情有两种方法,请说明您用的是哪一种。例如:“我选择了‘载入’”,可能意味着“我用鼠标点击‘载入’”或“我按下了‘ALT+L’”,说清楚您用了哪种方法,有时候这也有关系。


详细。信息宁多毋少!如果您说了很多,程序员可以略去一部分,可是如果您说的太少,他们就不得不回过头再去问您一些问题。有一次我收到了一份bug报告只有一句话,每一次我问他更多事情时,他每次的回复都是一句话,于是我花了几个星期的时间才得到了有用的信息。


慎用代词。诸如“它”,“窗体”这些词,当它们指代不清晰的时候不要用。来看看这句话:“我运行了FooApp,它弹出一个警告窗口,我试着关掉它,它就崩溃了。”这种表述并不清晰,用户究竟关掉了哪个窗口?是警告窗口还是整个FooApp程序?您可以这样说,“我运行FooApp程序时弹出一个警告窗口,我试着关闭警告窗口,FooApp崩溃了。”这样虽然罗嗦点,但是很清晰不容易产生误解。


检查。重新读一遍您写的bug报告,您觉得它是否清晰?如果您列出了一系列能导致程序出错的操作,那么照着做一遍,看看您是不是漏写了一步。

小结:
bug报告的首要目的是让程序员亲眼看到错误。如果您不能亲自做给他们看,给他们能使程序出错的详细的操作步骤。

如果首要目的不能达成,程序员不能看到程序出错。这就需要bug报告的第二个目的来描述程序的什么地方出毛病了。详细的描述每一件事情:您看到了什么,您想看到什么,把错误消息记下来,尤其是“错误消息号”。


当您的计算机做了什么您料想不到的事,不要动!在您平静下来之前什么都别做。不要做您认为不安全的事。

尽量试着自己“诊断”程序出错的原因(如果您认为自己可以的话)。即使做出了“诊断”,您仍然应该报告“症状”。
如果程序员需要,请准备好额外的信息。如果他们不需要,就不会问您要。他们不会故意为难自己。您手头上一定要有程序的版本号,它很可能是必需品。
表述清楚,确保您的意思不能被曲解。

总的来说,最重要的是要做到精确。程序员喜欢精确。

版权所有 Simon Tatham 1999

对本文的任何意见和批评请发送至:

中文版:dasn@users.sf.net
分享到:
评论

相关推荐

    2021最新产品需求模板系列-如何有效地报告Bug.doc

    报告Bug是软件开发过程中的重要环节,有效报告Bug有助于快速定位和解决问题,提高软件质量。以下是如何撰写高质量Bug报告的一些关键点: 1. **明确问题**:报告Bug时,应清楚地描述问题的现象,避免使用模糊的语言...

    2021最新产品需求模板系列-如何有效地报告BUG.docx

    【需求分析】在软件开发过程中,有效报告Bug是至关重要的,因为这直接影响到问题的定位和修复速度。本文主要探讨如何编写一份高质量的Bug报告,从而帮助程序员更好地理解和解决遇到的问题。 首先,Bug报告的首要...

    2021最新产品需求模板系列-如何有效地报告-Bug.doc

    【需求分析】在软件开发过程中,有效报告Bug是至关重要的,因为它直接影响到问题的定位、修复效率和用户体验。以下是对如何撰写高质量Bug报告的详细解释: 1. **明确问题描述**:Bug报告应清晰地描述问题现象,避免...

    Bug报告模板.docx

    Bug 报告模板 在软件测试和质量保证过程中,_bug 报告模板是一种非常重要的文档工具。它用于记录和追踪软件中的缺陷和错误,以便在后续的开发和测试中进行修复和优化。本文将对 Bug 报告模板的主要组成部分进行详细...

    如何有效写bug报告

    ### 如何有效撰写Bug报告 #### 一、引言 在软件开发与测试的过程中,**缺陷报告**(或称为Bug报告)是至关重要的文档之一。它不仅能够帮助开发者快速定位和解决问题,还能够促进测试团队与开发团队之间的有效沟通...

    如何有效地报告Bug1

    【如何有效地报告Bug】 在软件开发领域,报告Bug是一项至关重要的任务,因为它直接影响到问题的定位和修复效率。有效的Bug报告能帮助程序员迅速理解和解决软件中存在的问题,从而提高产品的质量和用户体验。以下是...

    如何有效地报告Bug

    如何有效地报告Bug, html版本

    BUG库管理汇编.pdf

    13. **Bug描述要求**:强调了有效报告BUG的重要性,包括提供清晰的复现步骤、影响范围和期望结果等信息。 14. **小结**:文档结尾通常会做一个总结,回顾主要观点,并可能提出实施建议或进一步改进的方向。 这份...

    如何写有效的bug报告.zip程序开发文档软件开发文技术档下载

    如何写有效的bug报告.zip程序开发文档软件开发文技术档下载如何写有效的bug报告.zip程序开发文档软件开发文技术档下载如何写有效的bug报告.zip程序开发文档软件开发文技术档下载如何写有效的bug报告.zip程序开发文档...

    在线考试系统Bug报告

    软件测试的bug报告,列出了多种bug, 登陆,注册,改卷及审查

    bug描述报告书

    【标题】:“Bug描述报告书”是一份详细记录软件中出现错误或异常情况的重要文档,旨在帮助开发人员理解和解决遇到的问题。在Java编程环境中,Bug报告书尤其关键,因为Java是一种广泛应用的编程语言,其软件系统的...

    如何写有效的软件测试Bug报告

    ### 如何撰写有效的软件测试Bug报告 #### 一、引言 在软件开发过程中,测试环节至关重要,而其中的关键组成部分之一就是撰写有效的Bug报告。一个高质量的Bug报告不仅能够帮助开发团队快速定位并修复问题,还能提升...

    如何有效地报告-Bug.zip程序开发文档软件开发文技术档下载

    如何有效地报告-Bug.zip程序开发文档软件开发文技术档下载如何有效地报告-Bug.zip程序开发文档软件开发文技术档下载如何有效地报告-Bug.zip程序开发文档软件开发文技术档下载如何有效地报告-Bug.zip程序开发文档软件...

    Bug报告模板

    **Bug报告模板** ...通过遵循这样的Bug报告模板,开发团队和测试团队可以协同工作,更有效地管理并解决问题,从而提高软件质量,缩短修复周期。这不仅提升了工作效率,也有助于团队间的沟通和项目管理。

    2021最新产品需求模板系列-如何写有效的bug报告.pdf

    以下是从提供的文件内容中提取和扩展出的关于编写有效bug报告的知识点: 1. 重要性:缺陷报告的重要性与测试计划相当,它对产品的质量影响重大。有效的缺陷报告有助于减少开发部门处理二次缺陷的次数,提高修正缺陷...

    Bug发现提交报告

    以下是一份详细的关于如何编写有效的Bug提交报告的知识点: 1. **简洁明了的描述**: - 当测试人员发现Bug时,应当使用最简洁的语言描述问题所在,避免冗余和不必要的信息。明确指出Bug出现的位置,即代码的哪个...

    bug报告模板经典

    Bug 报告模板经典 本文档旨在为软件开发和测试团队提供一个详细的 Bug 报告模板,以便更好地记录和跟踪软件中的缺陷和错误。该模板涵盖了 Bug 的基本信息、严重程度、优先级、状态等方面,帮助团队成员更好地理解和...

    Bug管理系统 项目开发总结报告

    ### Bug管理系统项目开发总结报告知识点解析 #### 一、引言 - **开发目的**: 随着信息技术的快速发展,软件应用已经渗透到社会的各个方面。在这个背景下,软件错误(通常称为“Bug”)的范围和可能性也随之扩大。...

    BUG描述报告书.rar

    在软件开发过程中,BUG是无法避免的,但有效的BUG描述报告是确保问题得到及时解决的关键。"BUG描述报告书.rar" 提供了一套完整的编写模板和技巧,这对于外包公司尤其重要,因为它们需要与多个团队进行高效沟通。下面...

Global site tag (gtag.js) - Google Analytics