为什么你要读这份指南?
简单地说,如果你报告Bug越有效, 工程师完全修复它的可能性就越大。
这份Bug写作指南是针对新手在书写有效的Bug报告方面进行指导的常规指南,并非每个建议都正好适用于你的软件项目。
如何写一份有用的Bug报告?
有用的Bug报告是用于正确修复Bug的。因此一份有用的Bug报告通常地有两个特征:
可复现:
如果工程师不能发现或最终证明这一Bug存在,工程师或许会将它标记为 "WORKSFORME( 所有要重新产生这个bug的企图是无效的)"或 " INVALID(描述的问题不是一个bug ) ",并且继续进行下一个Bug的修复工作。任何你能提供的详尽描述将为工程师修复Bug提供帮助。
详细精确:
如果工程师能越早隔离、定位问题,就越可能方便地修复。
让我们举一个例子:你正在测试一个Web阅览器,在访问foo.com网站时崩溃了,因此你想写一个Bug报告:
糟糕的Bug报告:“我的浏览器崩溃了。我正在访问foo.com。我的计算机使用 Windows系统。这真是个大问题,你们应该马上修复它。顺便说一下,你们的图标真恶心,如果你们保留那些丑陋的图标,没有人将再使用你们的软件。还有我的祖母的主页看上去外观也不正确,或者,它们全被搞乱了。祝好运。”
有用的Bug报告:“每当我访问foo.com时应用程序就崩溃了,我使用的是在Win NT 4.0 (Service Pack 5) 系统上的 10.28.99版本。 我也曾重新引导进入 Linux,使用10.28.99 Linux版本,这个问题也出现了。我发现每次崩溃都发生在绘制这个页面位于上端的 Foo横幅的时候。我分析了页面,发现除非你删除 " border =0"属性,否则下列图片链接将导致应用程序崩溃 :(附图片)
如何在Bugzilla中输入你有用的Bug报告?
在你输入你发现的Bug前,应使用 bugzilla/' target='_blank'>Bugzilla查询页检查是否你发现的是已知并被报告的Bug。(如果你发现的Bug同第37条已经知道的结果相同,你报告的话,就可能骚扰工程师,从而影响工程师修复Bug的效率。)
下一步,确认你发现的Bug是在最新的版本中所发生的。(工程师更倾向于对那些他们正在编写的代码中的严重问题感兴趣,而不是对以前那些废弃代码中数以百计的Bug进行修复。)
如果你已经在当前版本中发现了一个新的Bug,请在Bugzilla中报告:
从你的Bugzilla主页中,选择“Enter a new bug”。
选择你发现Bug的产品。
输入你的电子邮件地址、密码,然后按“Login”按钮。(如果你遗忘或还没有得到密码,让密码正文框空白,并且按 " E-mail me a password "按钮,不久你将收到包含你的密码的电子邮件。)
现在,填写那张出现的表格。以下说明表格中的所有含义:
你在哪儿发现了Bug?
1,产品:在哪一个产品中你发现了Bug? 你在上一页已选择 ,enter前已经选择,
2,版本:在产品的哪一个版本中你找到了Bug?
If applicable.如果有的话。
3,产品单元:在产品的哪一个单元中存在Bug?
Bugzilla在你输入一个Bug时,要求你必须选择一个产品单元。(如果你无法确定所列产品单元的意思,单击产品单元链接,那将联接到对每个产品单元的详细描述,这会帮助你作出最好选择。)
4, 平台:在哪一个硬件平台上你找到了这个Bug?
(例如Macintosh、SGI、Sun、PC。)如果你知道这个Bug会发生在所有硬件平台上,请选择“All”,否则请选择相应的你发现Bug的硬件平台,如果列表中没有出现你的硬件平台,请选择“Other”。
5,OS:在哪一个操作系统(OS)中你找到了这个Bug?
(例如Linux、Windows NT、Mac OS 8.5。)
如果你知道这个Bug会发生在所有OS中,请选择“All”,否则请选择相应的你发现Bug的OS,如果列表中没有出现你的OS,请选择“Other”。
这个Bug有多重要?
1,严重性:这个Bug的破坏性有多大?
这项值默认为“normal”。(要为一个特定的Bug界定最适当的严重性,单击严重性链接,你将得到每个选择的完全解释,从Critical到Enhancement。)
2,谁将跟踪解决Bug?
3,分配给:哪一个工程师将负责修复这个Bug?
在你提交Bug报告后,Bugzilla将自动把Bug分配给默认工程师;填写正文框将允许你用手工方式把它分配给其他工程师。(要察看每个产品单元的默认工程师列表,请单击产品单元链接。)
4,Cc:还有哪些人将收到这个Bug修复更新的电子邮件?
列出其他需要通过电子邮件收到这个Bug修复更新的人的完整的电子邮件地址。只要你愿意,你可以输入足够多的电子邮件地址,电子邮件地址之间必须用逗号分隔,不可有空格。
5,关于这个Bug你还能告诉工程师什么?
6,URL:在什么 URL中你发现这个Bug?
如果你是在特殊的 URL中遇到Bug,请在这里提供它(们)。如果你已经将Bug隔离在一段特殊的HTML程序段中,也请在这里为它提供URL。
7,概述:你如何在大约60个字符之内将这个Bug进行描述?
一个好的概述能很快和唯一识别一份Bug报告,否则,开发者将不能通过Bug概述进行有意义的查询,并且在浏览一份有10页长的Bug列表时,可能忽略你的Bug报告。
关于“在Tosh Tecra 780DVD w/ 3c589C上安装PCMCIA失败”的概述是有用的标题,而“软件失败”或 “安装问题”将是糟糕的标题的例子。
8,描述:还有什么你能告诉工程师关于这个Bug的?
如果可能,在这个域中请提供问题诊断的详细细节。
如果适用,下列的Bug报告模板将帮助你保证不会漏掉所有相关信息:(翻译是我自己加的,不准确的话请见谅!)
总的描述:对概述的更为详细的补充
Drag-selecting any page crashes Mac builds in NSGetFactory