我使用了大量的问题跟踪系统,包括 gnats(啊!)、Bugzilla(稍微少一点啊)、Trac、Jira,现在还有 FogBugz。我最喜欢 Trac,但这可能是因为我不是 FogBugz 的管理员,而且它在当前版本中被严重误用。
让工作流程正确是非常重要的,奇怪的是,它从决定在错误跟踪器中放入什么以及如何标记放入其中的东西开始。一旦你有了客户,所有的开发团队都会真正跟踪三种问题:
真实客户注意到的问题(实时错误)。
当前正在开发的新软件的问题(开发错误)。
我们将来想做的事情(功能)。
当然,这三类问题中的每一类都有自己的优先事项。只是按钮上的拼写错误的“实时错误”可能比阻止公开发布的版本或限制其他开发、测试等的“开发错误”重要得多。
问题的严重性描述了副作用的可怕程度。根据我的经验,这归结为:
该程序正在破坏某些东西。数据,客户被错误地计费,错误的药物被分配。这已经很糟糕了。我曾经在一个系统上工作过,其中一个软件命令将一个液压臂从一名军人的中间收回。这已经很糟糕了。
该程序正在崩溃,我们没有解决方法,但在此期间它并没有破坏任何东西(除了停机)。如果停机导致某些事情被破坏,请使用严重性 #1。
该程序行为不端,但我们有一个确定的解决方法,可以实际使用。
该程序以令人讨厌但不影响结果的方式行为不端。
该程序需要以某种明确定义的方式变得更好:更易于使用、实现新功能、运行更快等。
在这些系统中经常出现的另一个问题是“角色”的概念。应用于问题跟踪系统时,角色归结为允许谁做事。谁来制造问题?谁可以更改状态,谁可以将它们重新分配给另一个用户,谁可以关闭它们等等。
在我与之密切合作的中小型团队中,这套通用规则运行良好:
任何人都可以创建问题。创建者可以在创建问题时将问题分配给任何(或大多数)收件人。默认收件人是问题分类小组。开发人员可以通过这种方式记录他们在代码中发现的错误,并将错误分配给他们自己,以跟踪他们更改代码的原因。
分类团队开会(在此处指定时间间隔)以评估和分配问题。Triage 团队专门寻找重复的报告,在这种情况下,新问题会“汇总”到现有问题链中;对于现场未复制的问题,分配给 QA 进行复制;以及来自客户的高严重性问题。
错误的始作俑者是唯一可以关闭它的人。由 QA 或 CSR 发起的错误报告不能由开发人员关闭。是的,这意味着 CS 和开发团队不同意的错误仍未解决。当人们不同意时,为什么问题跟踪器将问题报告为已解决?如果你想要一个谎言的数字存储库,你有 C-SPAN。
一些团队可能希望将问题从一个部门转移到另一个部门到经理,其他团队可能允许任何团队成员将问题转移到(或返回)另一个团队。这可能归结为管理层的怀疑,或者仅仅是允许谁分配工作时间。
分类过程是关键。Triage 团队本质上是您组织中的任何人,他们决定谁从事什么工作,以及接下来要做什么。让团队定期开会有助于确保不会错过真正重要的事情,并且不会因为疏忽而放弃平凡的事情。如果 Triage 队列中没有任何内容,会议领导者可以取消会议(concall、netmeeting,无论实施如何)。
如果您正在使用 Scrum,那么 Triage 团队可能是 Scrum 主管,他们决定是否将某个问题拉入当前的 sprint,并在它进入积压工作时正确分配优先级。