产品设计体会(3015)项目中Bug的一些事

项目中,测试最开始一段时间,Bug总是不断的蹦出来,Bug指缺陷或故障,区别在于项目发布之前发现的叫缺陷,项目发布之后发现的叫故障,通常故障会对用户造成伤害,团队里也制订了相应的惩罚机制。这次不妨从Bug的角度来说说项目,下图是我们使用过的一份Bug级别定义,一般来说对一个Bug的描述有以下几个关键点。

bug级别定义

缺陷级别(Severity:即上图中的5级别定义,一般大于等于III级的Bug被认为是严重的问题。

所属产品、项目:有的人需要同时处理很多产品、项目,这个属性可以用来筛选。

Bug名称:一个短句,此Bug的简单说明。

Bug描述:写成如下形式,“执行某操作,期望出现什么情况,实际出现什么情况”,还可以添加截图、文档等附件。

其实其他属性还有很多,不过我觉得非必须,经常不填,也就不说了。

我们的测试过程使用了Mercury Interactive公司的Quality Center来管理,它是一个基于 Web且支持测试管理的所有必要方面的应用程序,更小的团队,用Excel来管理Bug也未尝不可。作为PD,也是会经常提Bug的,PD做测试的时候主要是模拟用户的身份使用产品,而测试人员会更多的按照TC执行。当发现一个Bug以后,我们会提交给相应的开发工程师,如果认为是需求问题也会提交给对应的PD,这时候Bug的状态为Open,之后的状态改变,可以用下图表示。

Bug状态流转图(图中defer拼错了)
Bug状态流转图(图中defer拼错了)

收到OpenBug,确认并修复,状态变为Fixed;否认,也许提出者理解错了,也许不打算修改,状态改为Rejected;或者认为不是自己的问题,可以把Bug转交(Assign to)给别人。

测试验证状态为FixedBug,没问题了就Closed,否则可以Reopened。看到RejectedBug,发现是自己理解错了,就可以Closed,仍然认为是Bug的可以Reopened。对于DeferredBug,意味着本项目中暂不修正,可能是因为技术做不到,时间不允许,性价比太低等,必须慎之又慎,通常由能负责的人,比如是测试经理、项目经理最终同意才Deferred

整个过程中,Bug的每次状态改变都可以添加注释说明,我们更鼓励有争议叫上当事人面对面的交流,而不是在系统里不停的纠缠。

到了项目发布之时,我们要求所有Bug的状态必须是Closed或者Deferred,当然对III级的Bug,有时候并没有这么严格。

使用Quality CenterExcel的好处,在于每个Bug重要的状态转换点,系统都会有邮件通知到相关人员,防止遗漏;项目中每个人在系统里的角色不同,权限不同,防止误操作,甚至一些恶意行为,比如开发人员就不能把Bug状态改为Closed;所有操作都有记录,谁在何时做了什么,便于追溯。这些都有效的防止了人为因素导致的问题。

PS:很久都不发带图片的文章,是因为picasa,我终于打算放弃,转投flickr了。。。

产品设计体会(3000)项目与文档,系列说明

2007年底之前,也就是开始做产品设计师约1年以内,我一直只是很单纯的在做产品设计、以及大产品设计,在为产品所发起的一个个项目中,扮演的是一个设计师的角色,主要负责“做多少、怎么做”的问题,那会项目经理是开发经理兼任,他负责“何时做、谁来做”的问题。

后来公司发现这样的一些弊端:

对设计师的考核是产品的商业价值,比如用户活跃度等等,而这些指标和产品的用户体验关系极大,大家知道,想把产品的用户体验做到极致,让用户轻松,必然的代价就是我们受罪,特别是开发的同学要额外做很多他们看起来价值不大的细节,比如一个最简单的登录页面上的2个输入框,一个填帐号,一个填密码,想体验好一点,就要考虑如何限制输入内容长度,如何控制输入非法字符,如何给用户提示等很多问题。简单说一下输入帐号的长度控制问题,就又要考虑是点击“登录”提交表单时判断?鼠标焦点移动到密码输入框时判断?还是输入帐号时随时计算长度直接判断?……

开发同学的考核一般来说是项目的完成情况,Bug数量,很显然,如果他们做项目经理,矛盾就自然而然就发生了,开发的同学会倾向于简化项目,尽量少做、做自己熟悉的,使得项目顺利完成 & bug很少,但是做出来的东西商业价值不足、用户体验不好。

由于上述原因,公司决定让产品设计师兼任项目经理,这样对我们的要求就更高了,于是我也渐渐的有机会接触了项目管理方面的事情,发现这块“硬功”也是一个产品设计师必备的素质,于是,我们向着全能战士——产品经理,又跨了一大步。

话说一个事物必然有它的两面,如果你只看到了一面,必然说明你只看到了系统的一部分,我还是比较相信在哲学层面上,很多东西都是“守恒”,或者说“对立统一”的。那么这么做的缺点又是什么呢,留个悬念,后续在一些有关组织结构的文章里再做讲述。

回到本系列,先谈论了做产品与做项目的异同。在做项目的过程中,我体会到创业公司,或者大公司里的创业型团队,特别是对于互联网、软件行业,有一颗敏捷之心很重要,所以这部分里有不少关于敏捷的描述。此外举例了适合创业型团队的项目管理方法中的几个关键点,比如Kick Off评审会,最简单的一句:计划与控制,就是项目管理。

大大小小的项目做了几十个,自然的发现另外2点提高效率的事情:流程与文档。

流程的作用,是把经常做的事情固化,以提高效率,下文有例子描述了简单的需求流程,再举个不好的例子,如果阿里有一位同事不幸去世了,那公司一定会起个紧急项目来处理这件事,而如果是华为,就可以走流程了。项目与流程是对立统一的关系,并且可以互相转化,后面也会仔细描述。

文档管理主要谈到了两块:一是模板管理,文档为什么要有模板?我们有哪些常用的文档模板?各个模板的目的是什么?相应的又应该怎么设计?举例说明了一些文档具体应该如何写,已经贴出来的有最最常见的UC;二是版本管理,提到了版本管理的目的,有哪些常用的版本管理方法及其优劣,顺便讨论一下文档轻重的问题。

这个系列还没有结束,这篇算是一个阶段性小结。