在我目前的公司中,测试团队和开发团队并没有清楚地理解一个bug应该有多严重。我们经常争论是将严重性降低还是提高。目前我们不知道是否有任何文件规定了相关规则。测试人员会根据他的直觉提出bug并为其分配优先级。开发人员可能基于其负载或其他因素请求更改。
如何对bug的严重性/优先级进行分类?是否有任何标准指导如何根据客户需求、时间表和其他因素确定软件缺陷的优先级呢?
在我目前的公司中,测试团队和开发团队并没有清楚地理解一个bug应该有多严重。我们经常争论是将严重性降低还是提高。目前我们不知道是否有任何文件规定了相关规则。测试人员会根据他的直觉提出bug并为其分配优先级。开发人员可能基于其负载或其他因素请求更改。
如何对bug的严重性/优先级进行分类?是否有任何标准指导如何根据客户需求、时间表和其他因素确定软件缺陷的优先级呢?
使用优先级别,这些级别故意与严重程度或影响无关,仅描述错误在计划中的概念位置。该字段将确定哪些错误需要处理,因此它是谈判的目标。
使用严重级别,这些级别故意具有具体的、可验证的定义,不容易被谈判改变,且与调度或优先级无关。我已经成功地使用Debian BTS使用的严重性定义,并推广应用于一般编程项目。
这样,严重性更多地成为可验证的事实问题,而不是优先级的陈述。优先级可以通过谈判或其他方式自由调整,而不影响严重性字段中的事实信息。
试图将“严重性”和“优先级”合并到一个字段中将导致耗费精力的争论和浪费时间。错误报告者需要一个坚定的事实指南来确定错误的“严重程度”,并且这需要易于独立方达成共识。另一方面,优先级是正确的谈判和调度游戏的目标。
我从事紧急控制中心系统的工作,所以这组错误级别有点...极端:
这是我想到的。如果你想知道,它是按照最严重到最不严重的顺序排列的 :-)
我们之前使用过的一些东西。我们将缺陷评级分为优先级和严重性。
严重性(提交缺陷时由提交者设置)
优先级(在缺陷评估期间由开发、管理和QA进行调整)
两个数字一起创建了风险优先级数(RPN)。只需将严重性与优先级相乘即可。结果越高,风险越高。25定义了终极缺陷炸弹。1可以在空闲时间或某人感到无聊需要做些事情时完成。
第一个目标:任何类型的最高或高评级的缺陷都应在发布之前修复。 第二个目标:RPN > 8的缺陷应在发布产品之前修复。
当然,这有点人为,但有助于给所有方(支持、QA /测试、工程和产品经理)提供一个工具来设置优先级,而不会摧毁其他方的意见。
使用FogBugz替换您的缺陷跟踪系统,并完全摆脱严重性字段。
请参见优先级与严重性
关于标准,IEEE软件异常分类指南是一个标准,但我不确定它被广泛采用。 IEEE 1044.1-1995
一种选择是让产品负责人确定错误的优先级。虽然对于一个错误有一些普遍的直觉,但制定优先顺序(例如,在修复错误B之前应该先修复错误A等)可以成为产品所有者的责任。
提供给产品所有者的信息越多(清晰简明),就能帮助该个人做出这些决定(例如,有多少用户遇到了错误,由于错误导致哪些功能不可用等)
我只是编了一个例子...我的意思是将错误分类不应该成为每周一次长达一小时的仪式。
在我看来,根据流程图进行优先排序是浪费时间。尽快修复Cat#1和#2中出现的错误。如果你发现自己被错误淹没了,就要放慢脚步反思。如果时间表不允许或者有更高优先级的事项,就推迟Cat#3和Cat#4。
关键是,你们所有人都要对这种严重性和期望质量有共同的理解。不要让遵守X的神圣标准拖慢你们交付客户想要的...可用软件的速度。
个人而言,我更喜欢使用两级严重性/优先级模型。我知道单一级别的论点,但在我工作过的地方,通常我只看到两级层次结构效果更好。
支持团队根据客户的意见设置严重性。客户根据支持团队的意见设置优先级。
对于严重性,我使用:
1-阻止/显示停止
2-主要功能不可用(或实际上不可用),没有实际的解决方法
3-主要功能不可用(或...),有解决方法
4-次要功能不可用(或实际上不可用),没有解决方法
5-次要功能不可用(或...),有解决方法
6-美观或其他琐碎问题
然后对于优先级,我只使用高、中、低,但是3-5个级别的任何内容都可以(超过这个范围就太过头了)。
通常我会首先按优先级排序,然后再按严重性排序。这个模型的重要之处在于客户拥有最重要的发言权。如果他们说报告上他们的标志打印方式是最高优先级,那么就会被关注,但是它会在其他客户的高优先级之后被关注,这些问题正在阻止他们登录。
一般来说,我不会发布任何高优先级问题或任何严重程度为1-4的中等优先级问题。显然,在理想的情况下,您会修复所有问题,但我从未有过这样的选择。