生命就像一场云游 坎坷也是一种收获

关于缺陷的优先级和严重级别(转)

上一篇 / 下一篇  2008-03-26 16:22:11 / 个人分类:缺陷管理

今天看到论坛里一个学员在问“到底应该是谁把缺陷状态置为PostPone,Rejected,Duplicate是Developer还是PM或CCB?”,还有学员对优先级这个字段理解的不够透彻,原话是“优先级的填写要看情况的。因为有时Tester 开的bug 很多,而PM又有好多TESTER,那PM就来不及去一一看那些BUG了,这时Priority就得由tester填写”,而论坛里还有同学找了篇英文的文章来告诉大家“看,老外都是这么做的”。

    我觉得有必要给大家解释透这两个概念,这样不至于在日后的工作中做错。

    以下粉红色部分是对那篇英文的引用,后面则是我的回答(结合微软的实际例子给大家说明)。

QUOTE:
原帖由 rivermen 于 2007-3-9 09:12 发表

c) The tester then selects the priority of the defect:

Critical - fatal error
High - require immediate attention
Medium - needs to be resolved as soon as possible but not a showstopper
Low - cosmetic error


    从这篇文章来看,这段英文描述是有问题的——不能说不对,至少不合理。
    优先级不应该给tester指定,这也是很多缺陷流程制定者容易忽略到的地方——很大一部分原因是流程制定者没有做过项目管理的工作或者学习过项目管理的知识。

为什么这么说呢?
    因为Tester只是项目团队的成员之一,对缺陷管理、项目进度和项目风险都不可避免的会“盲人摸象”、“管中窥豹”,只“看”到自己“看”到的那个部分。
    一般来说,一个被测系统往往需要多个tester的,而每个tester往往只关注自己发现的bug,不大会去了解其他tester所发现的bug,那么在这种情况下,他如何能够决定这个bug被修复的优先级别呢?!
这里再次强调一次,大家必须了解“Priority”真正的含义和作用——它是给管理者来据此做项目决策的,也就是说,缺陷优先级将直接导致工作安排的优先顺序。PM正是通过参考缺陷优先级来安排开发人员的工作顺序(这甚至能在Project里体现),使得项目风险降低、项目成本降低,解决问题更高效。
    其实,这在微软内部就叫做“基于风险的测试”,也就是指评估测试的优先级,先做高优先级的测试,如果时间或精力不够,低优先级的测试可以暂时先不做。有如下一个图,横轴代表影响,竖轴代表概率,根据一个软件的特点来确定:如果一个功能出了问题,它对整个产品的影响有多大,这个功能出问题的概率有多大?如果出问题的概率很大,出了问题对整个产品的影响也很大,那么在测试时就一定要覆盖到。对于一个用户很少用到的功能,出问题的概率很小,就算出了问题的影响也不是很大,那么如果时间比较紧的话,就可以考虑不测试。

    以下是微软公司的缺陷流程(不知道现在做微软外包的公司是否也采用这套流程),给大家参考参考。
Bug跟踪过程
  在软件开发项目中,测试人员的一项最重要使命就是对所有已知Bug进行有效的跟踪和管理,保证产品中出现的所有问题都可以得到有效的解决。一般地,项目组发现、定位、处理和最终解决一个Bug的过程包括Bug报告、Bug评估和分配、Bug处理、Bug关闭等四个阶段:
  1)测试工程师测试过程中发现新的Bug后,应向项目组报告该Bug的位置、表现、当前状态等信息。项目组在Bug数据库中添加该Bug的记录。
  2)开发经理对已发现的Bug进行集中讨论,根据Bug对软件产品的影响来评估Bug的优先级,制定Bug的修正策略。按照Bug的优先级顺序和开发人员的工作安排,开发经理将所有需要立即处理的Bug分配给相应的开发工程师。
  3)开发工程师根据安排对特定的Bug进行处理,找出代码中的错误原因,修改代码,重新生成产品版本。
  4)开发工程师处理了Bug之后,测试人员需要对处理后的结果进行验证,经过验证确认已正确处理的Bug被标记为关闭(Close)状态。测试工程师既需要验证Bug是否已经被修正,也需要确定开发人员有没有在修改代码的同时引入新的Bug。


    话说回来,网上有很多自称专家的人在那里大谈特谈所谓的优先级标准,什么“系统死机是高级别,界面错误是低级别”之类。其实这些指的是缺陷的严重级别(Serverity)!
    当然,一般来说缺陷的严重级别也不是tester“主观判断”决定的,如果公司比较规范的话,会由测试经理、项目经理等组织制订这么一份相关的标准文档,文档是关于对应缺陷严重级别的定义。Tester在测试的时候就根据这么一份文档来决定对应Bug的严重级别。
我下面粘贴某公司的一个《缺陷等级标准》的文档,大家可以看到其中的“E类——测试建议”正是我上课所说的Enhancement。


========================
缺陷严重级别定义:
o 最高级--导致运行中断(应用程序崩溃),预期的功能没有得到实现,测试工作无法继续进行等.
o 紧急---事件非常重要,并且需要马上给予关注.
o 高级---事件是重要的,并且应该在紧急的事件处理之后尽快得到解决.
o 中级---事件是重要的,但是由于解决问题需要花费一定的时间,所以可以用较长的时间解决.
o 低级---事件不重要,可以在时间和资源允许的情况下再解决.
o 建议性缺陷.

更为详细的划分如下:

A类——严重错误,包括:
o 由于程序所引起的死机,非法退出
o 死循环
o 导致数据库发生死锁
o 数据通讯错误
o 严重的数值计算错误

B类——较严重错误,包括:
o 功能不符
o 数据流错误
o 程序接口错误
o 轻微的数值计算错误

C类——一般性错误,包括:
o 界面错误(详细文档)
o 打印内容、格式错误
o 简单的输入限制未放在前台进行控制
o 删除操作未给出提示

D类——较小错误,包括:
o 辅助说明描述不清楚
o 显示格式不规范
o 长时间操作未给用户进度提示
o 提示窗口文字未采用行业术语
o 可输入区域和只读区域没有明显的区分标志
o 系统处理未优化

E类——测试建议(非缺陷)



===============================
    好了,关于缺陷优先级和严重级别我解释到这儿,我希望同学们在学习的过程中知其然更要知其所以然。流程的制定不是想当然的,更不是因为看到别的公司都这么做自己就跟着做的。项目管理、缺陷管理都需要有很深的技术管理知识作为支撑,否则是作不好的。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2011-06-09  
   1234
567891011
12131415161718
19202122232425
2627282930  

数据统计

  • 访问量: 7967
  • 日志数: 64
  • 建立时间: 2007-09-05
  • 更新时间: 2008-04-01

RSS订阅

Open Toolbar