这是一个令人沮丧的情况:有人注意到一个真实的布局错误或某种故障,但他们在告诉你时未能准确描述问题。 作为前端开发人员,以及全面的优秀团队成员,我们有责任建立一个工作流程来报告、编目和描述人们可能遇到的错误。
在团队环境中建立一个 Bug 报告系统有很多好处
- 了解当前存在的 Bug。
- 了解谁在做什么(以及他们需要什么)。
- 概述完成工作需要多长时间。
- 查找被阻塞的任务或那些在解决之前需要某种依赖关系的任务。
第一步是选择一个每个人都觉得舒适的工具
有了可靠的 Bug 修复系统,我们就能更好地完成优秀的工作,但需要注意的是,良好的 Bug 报告技能不仅仅是开发人员的要求。 团队中的每个人都应该能够找到 Bug 并提供尽可能多的相关信息。 这意味着所有经验水平的设计师、开发人员和项目经理都不应该害怕使用 Bug 工具并全面了解项目。
我一直发现 Trello 是我个人最喜欢的,因为它对团队的其他成员更有意义,但这并不一定意味着它最适合您的特定用例。 以下是一些值得关注的最受欢迎的 Bug 跟踪工具和服务
无论我们选择什么工具,最终我们需要确保每个人都对建议的工作流程感到满意,因为我们需要每个人的帮助来记录、整理和搜索项目中潜在的 Bug。
无帮助的 Bug 报告
即使您选择了完美的工具,也并不一定意味着每个人都会以有帮助的方式使用它。 我遇到过很多次因为缺乏信息而难以找到报告的 Bug 的情况。
不太有帮助
- “IE 中列表样式坏了”
- “在页面上滚动时出现奇怪的故障”
事实上,这些类型的评论对开发人员来说几乎毫无用处,因为它们不够 *具体*。 开发人员更希望 Bug 报告包含诸如 *谁、什么、哪里、何时以及为什么* 等信息。
有帮助的 Bug 报告
虽然这完全取决于手头的特定情况,但最好阅读类似以下内容的信息
“联系页面上的特殊列表样式在 Firefox 和 IE11 中错误地定位在其容器的左侧。 请参阅附图了解更多信息。”
从这里,开发人员可以立即找到有问题的 Bug 并开始为该问题设计合适的解决方案。
但是,我们如何帮助团队中的其他人编写 *优秀的* Bug 报告呢?
我发现,在项目开始时与团队中的每个人坐下来详细概述我们应该如何与他们合作非常有帮助。 谁来决定 Bug 何时修复? 谁来审查哪些特定的代码部分? 我们应该使用哪些自动化工具来查找 Bug? 当设计团队也发现 Bug 时,我们需要哪些资产? 这些都是重要的问题,如果得不到解答,可能会导致令人沮丧的问题。
我列出了我对大多数 Bug 报告的期望
1. 简洁明了(但不要粗鲁)
理想情况下,我们希望使用项目符号而不是长句子,以便开发人员能够尽快找到问题,但这并不意味着我们可以简短粗暴。 最好尽可能准确地描述问题,并尽量减少阻碍。 如果有人构建了该特定功能并了解其来龙去脉,也许您应该首先将其分配给他们。 但是,不要把所有的责任都推卸给他们。
2. 务必添加屏幕截图和/或 GIF
特别是对于动画和复杂的交互 Bug,动画 GIF 几乎是突出显示缺陷特性的必备条件。 然而,在大多数情况下,简单的屏幕截图将帮助我们找到可以在其中找到 Bug 的视图或模板。
动画 GIF 抓取工具
(屏幕截图/GIF/视频)+ 云存储工具
并且不要忘记在 GitHub Issues 中,您可以直接拖放屏幕截图

3. 识别浏览器版本
如果您只是引用浏览器名称(如“Chrome”或“IE”)并没有什么帮助,如果您提供特定的浏览器版本(如“Chrome 42”或“IE8”)会更好。 但是,如果您还能确定该 Bug 在其他浏览器中是否不存在,那就更好了,例如:“我在 iOS 8.3 中发现了此 Bug,但在任何其他 Webkit 浏览器中都无法重现。” 通过此类信息,您可以为开发人员节省大量时间,并且他们可以更快地识别问题所在。
如果您想确保发送所有可能的信息,可以使用像 Support Details 这样的工具,它可以获取很多信息并允许您通过电子邮件发送或将其转换为 PDF(或仅截屏以包含)。 如果您有自己的 Bug 报告控制,您甚至可以抓取并预填充隐藏字段以获取此信息,这样您无需报告者任何操作即可获取。
4. 记录 Bug 可以在哪个模板、视图或页面上找到
如果它在 /blog
或 /contact-us
页面上,或者如果它可以在特定的部分(例如页眉或页脚)中找到,请尽快让开发人员知道。
完整的 URL 通常非常有用。
5. 不要忘记提及可能导致问题的特定模块或类
如果您更熟悉前端并想为开发人员提供问题的答案,您需要做两件事:首先,您需要从团队中的每个开发人员那里获得一个击掌,因为在报告 Bug 的同时告诉开发人员如何修复它是一件大事。 但其次,您可能需要创建一个 简化测试用例。 这涉及将代码分解成小块并逐一剔除,直到您揭示了确切发生的情况。 通过这些信息,您将专注于有问题的代码部分,并让每个人的生活都变得轻松一些。
6. 查看是否存在任何控制台错误或通知
与其复制/粘贴控制台错误,如果存在任何警告,最好截取屏幕截图。它们可能与您发现的特定错误无关,但可能正是导致一切混乱的原因。
7. 再次确认错误是否已被其他人发现
在我参与的项目中,重复提交错误报告通常不是什么大问题,但如果存在大量问题,肯定值得快速浏览已归档的错误或当前打开的问题,看看是否可以找到您的错误。
此任务可能还涉及您浏览并查看哪些错误相似,以及在您使用的应用程序中标记问题。如果错误确实已被发现,那么也许值得添加更多信息或在卡片上注明您在哪里发现了同一问题的新的实例。
8. 将任务分组到特定的类别中
我发现,在 Trello 中使用标签功能将问题标记为“受阻”特别有用。一个醒目的红色标签会让每个人都知道与该任务相关的另一个问题必须首先解决。
类似地,将每个人的任务分成特定的领域也很有帮助,例如:
- 内容
- 设计
- 前端
- 集成/后端
- 错误
- 代码审查
- 已完成
这让我们能够概览项目时间线,并让开发人员有机会一览所有错误。
大多数错误报告软件都具有分类功能。例如标签、分类、标记、分配等等。

9. 记录您现有的错误任务工作流程
如果您觉得已经建立了良好的工作流程,那么也许您应该创建一个包含流程细节的文档。这不仅对您自己的组织有用,也可能帮助其他人避免犯同样的错误。这里有两个参考:Thoughtbot playbook 和 Harry Roberts 关于其 Trello 工作流程的文章
总结
我一直认为错误列表不应该是令人望而生畏、令人不堪重负的压力,它不应该让团队中的每个人都渴望争吵和争执。相反,错误列表应该激励我们撸起袖子,鼓励我们尽我们所能提供帮助。因此,如果我们花一点时间来弄清楚流程中的这些小细节,也许我们就能摆脱所有这些负担,并继续为网络构建伟大的事物。
您的错误审查流程是什么样的?您发现哪些工具有用?请在下方添加评论,我一定会更新这篇文章以供将来参考。
也许其他一些事情也很有用
创建错误报告模板,以便每个人都能遵循。这减少了信息缺失的问题。
始终添加“预期结果”和“实际结果”部分。
也许可以添加来自例如 Fiddler 的跟踪日志。
屏幕截图很好,但有时不够。考虑为某些错误录制视频以呈现它。它可以防止猜测报告者的想法。
非常感谢分享您的见解!
我想错误跟踪最重要的部分是安装一个合适的工作流程。一方面,它必须对质量保证代理或测试人员来说超级容易提交错误报告。另一方面,开发人员需要大量信息才能重现错误。
我注意到一些有抱负的初创公司正在进行一项令人耳目一新的运动,以解决痛苦且效率低下的错误报告和问题跟踪流程,因为许多“传统的错误跟踪工具”缺乏良好的用户体验。
现在有一些很棒的错误跟踪工具,使流程本身再次变得有趣。例如,如果您使用 Usersnap(https://usersnap.com)。它会自动将屏幕分辨率、浏览器版本、已安装插件等信息添加到每个错误报告中。
关于 6) 控制台记录器:我强烈建议您查看 Usersnap 的控制台记录器(https://usersnap.com/features/console-recorder)。它是一个很棒的生产力助推器,因为它会自动将客户端 JavaScript 错误(或 xhr 日志)添加到每个错误报告中。
很好,对于内部错误报告,如果有人可以提供这些信息;或者如果他们有您具备的时间、技能和知识,这在团队中可能会有所不同……相反,我鼓励软件开发人员尝试尽可能地自动化,例如,用于生成错误报告的浏览器(这很容易检索),您提到的 URL 也是一个难题,开发人员在错误报告工具中包含的视图文件、请求数据等也是如此。
我想表达的是,对于质量保证,或者也许对于较小企业的软件开发人员来说,很容易要求某人提供更多信息,这通常会让他们感到沮丧,无论您如何委婉地表达;即使这不是您的意图;特别是如果他们提交错误报告,并且不了解您的内部系统或架构。他们甚至可能试图提供帮助,猜测可能导致问题的原因,而您却回了一句,不,或者这不是我的问题。
作为一名软件开发人员,我已经浪费了很多时间查看糟糕的错误报告,但作为一名企业主,我也知道,有时人们会变得懒惰,或者缺乏报告所有内容以最有效方式的技能/权限。有时,为了让某人适应您的特定工作流程,您变得懒惰,而不是学习对所有人来说可能更容易的方法。考虑到这一点,以及超过 12 年的专业经验,我认为将错误报告构建到您的软件中并尽可能地自动化是一个好主意,以帮助解决这些情况。
此外,在阅读错误报告时,我注意到很多“快速回复”,人们会遗漏一些东西,例如(哦,这是 X 的问题,他们的 CSS,他们的问题),而实际上它可能是软件内部某些糟糕的 CSS 选择的产物使用 X。当我从假期回来后,我将在我的业务质量保证和支持中引入蓄意的低效率,因为实际上,如果您有一个支持流程,它就在那里帮助用户,如果它也能帮助企业,那将是一个额外的好处,我们都需要更加关注用户及其体验,也许这样我们所有的产品都能达到最佳状态!
定义工作流程很重要,但在我看来,自动化是关键。无论我过去要求多少次提供更多信息,让用户提供信息始终是一场斗争。但是,当我开始使用 BugHerd 时,它确实自动化了许多数据收集(包括屏幕截图),情况变得好多了。
我唯一没有找到解决方案的剩余问题是重复。当整个项目经理团队访问一个网站,因为我们的质量保证时间不足时,我开始收到各种重复报告,因为人们不会停下来检查一下是否有人已经报告过了。一种处理此问题的办法是将网站的某些部分分配给某些人,但我没有取得太大的成功。我仍在努力解决这个问题。
嗨,Chris,
听起来您需要散列,以及一个自动完成功能,您可以在其中选择和搜索其他错误,然后合并/附加;当有人合并两个错误报告而我丢失信息时,我总是很生气。另一种方法是将标识符作为与错误的链接类(而不是父子关系),这样,您不是解决错误,而是解决已识别的操作点,并且通过将操作点分配给错误,它们通过代理得到更新,有点像多对多。
关于屏幕截图,这很有趣,老实说,我们考虑过屏幕截图,但似乎没有一个适合足够广泛的用例,您是使用画布路线还是浏览器扩展路线?
我很乐意将来就此进行聊天,您可以在 Twitter 上找到我 @LewisCowles1,与您的解决方案不同,我们的错误报告是内部的,而不是为了转售,所以我认为不存在任何利益冲突。
还有来自 Trello 开发团队的 FogBugz。
仅此而已。
我希望它能那么简单。当你遇到一群被告知他们可以为所欲为的创意人员和开发人员,并且你指出他们做错了什么……好吧,我们就说一些不愉快的话会被扔向你。即使你一步一步地记录了错误,他们仍然会跟你争论到底。
感谢您的这些建议,我认为它们非常有价值。但是,我看到您建议“动画 GIF 抓取工具”时出现了一个小问题:它们仅适用于 Windows 或 Mac OS X。对于更好的操作系统是否有任何类似的工具?:P
有求必应……
http://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast
应该适用于任何基于 Debian 的发行版,并且有多种选择……
Lewis,感谢您的链接。 :)
我真的很希望这些资源(尤其是 Silentcast,它看起来是最好的)能整合到文章中。