Bug管理的经验和实践
作者:Tuenhai 厚朴教育来源:Tuenhai 点击数:132 更新时间:2010-3-13
作者: Tuenhai.com MSN: king#tuenhai.com
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
原文在:http://bugfree.sourceforge.net/ (刘振飞 王春生)
一. 微软的研发管理分工明确
研发人员分工明确.主要的三个角色:PM(Program Manager)、Dev(Developer)、Tester三者分工明确,接口清晰,PM来定义需求、书写出每个功能(Feature)特性的设计文档(Spec),Dev写代码来实现这个Spec,Tester来测试Dev做出来的东西是否符合PM定义的Spec,三个角色并无必然的上下级关系,只是分工合作来完成某个功能。
有一次,tuenhai对项目的需求作了一些说明,PM竟然把我的说明作为需求,就匆匆进行开发……后来实在没有办法,tuenhai只得撤了他。从某种程度上讲,需求比coding更重要。高阶主管参与需求制定是有必要的,但项目经理绝不能因此偷懒,不写需求。定需求要求相关人员交流讨论多次,各方都满意后,才能进行下一步的开发。如果一个PM为了所谓的赶进度,省略需求,甚至省略文档,如此没有大局观的PM,实在是第一天就应该就地免职。
二. Raid 不仅仅是跟踪软件功能方面的Bug,其他各种问题如需求文档的改动,界面上的错别字,帮助文档的遣词造句问题,某项任务指派等等都可以通过一个Bug来跟踪。
现在公司初创,工作靠自觉,或口头分配,工作过程无记录,工作无法量化考核,这种情况想来就头疼。就一个Bug管理系统,就能提高不少的管理效率。
三. 国内公司对开发这一环节一直很重视,不过需求和测试较弱一点。如果没有很好地对项目或用户需求的真正把握,后面的所有工作都是白费工夫,事倍功半。
需求的重要,前面已有论述,至于测试,小的团队可能没有专职的测试人员,开发人员有时要兼测试工作。测试有一定的专业性,举一个小例子。开发人员有无测试代码在各个平台各个操作系统的兼容性?有可能开发人员压根不知道要进行这样的测试?没有进行严格的测试,产品怎么可以推向市场,由用户去帮我们测试吗?tuenhai没有正式做过开发或测试,但这些流程还是知道的。种种情况,令人忧心。
不单是开发,管理上的一些事情也要走类似“需求,开发,测试”的流程。如果把工作不甚严谨的人撤换掉,公司里可能就只剩几个人……
四. 如果你以前没有用过Bug管理系统,那么一开始的时候也许你会觉得这个工具浪费时间,因为一个测试人员要费神把发现Bug的详细步骤记录下来,有时还要贴一张示意图,这一切不如当面说来得直接。
但是使用一段时间,你们发现BugFree很有用,它忠实地记录着每个问题的处理过程,不断提醒你存在的问题,永远不会丢失和忘记,如果你参与过较大软件项目或产品的研发,就会理解它对软件可持续发展至关重要。
工作方法和过程比结果更重要。现在公司要以1000w的投入,二年后得到5亿的回报,在做这件大事的时候,如果不重视工作方法和工作过程,tuenhai怎么有信心去做好这件事情。1000w的投入,不是儿戏!公司里不少人因为信任我而加盟,如果我不把公司管理工作做好,又怎么对得起这些朋友的信任?
公司人虽然比较多,但清醒者有没有?有几个?
在公司初创期,虽然时间很紧,但不管怎么紧,首先是建立一个高效的管理系统。人有了,管理思想也不缺,但还要一个系统,一个工具来支撑。
第一步是招人,第二步是管理系统,第三步是做好各种实事。
web端Livid,Lexrus,碧轩,桌面端yewuyu,明日帝国,七猫都是高手,董事长pangshengdong长于商业策划,tuenhai 做事还算能抓住重点。作为初创且不出名的公司,拥有这样的人才布局,是相当不错的了。接下来还要引进分类广告的专才和资本运作高手(欢迎与tuenhai 联系 tuenhai.com msn:king#tuenhai.com)。
管理系统,我已经交Livid,Lexus,及BugFree的作者王春生来完成,预计一个月内,他们会给tuenhai一个完美的答卷。
管理系统搭建完成后,就要用这个系统高效组织管理。
五.做好Bug管理,应该是从高层领导到中间层管理人员再到基层人员,都从内心认同其重要性,然后根据自己公司的实际情况制定相关的管理体系和制度,切实执行并逐步形成自己的风格。要实用,不要随波逐流。
tuenhai:我对管理系统的建立是充分认识到其重要性,现在要让所有员工知道我的思考。不可能我一个人去做所有的事情。根据公司实际开发管理系统,更有针对性。可以考虑在BugFree基础上进行开发。或者在员工内部个人 Blog上进行功能扩展,加上工作相关功能。
六.当我决定做BugFree时,脑子里很清楚为什么要做,做成什么模样,应该怎么做,做出来后大家怎么用,每个环节都考虑清楚了。这样真正实现的时候就很快了
tuenhai:也就是需求要非常清晰。对于我们公司现在要做的管理系统,需求还不够清晰。相关人员都都提出自己的方案,然后讨论,脑力激荡。一周或两周的讨论,应该可以定出一个非常清晰的需求。需求定好,项目已经完成一半。
七. 一个好的Bug管理系统要具备以下特征:
1. 可以完备的记录、跟踪Bug的一生,从出生——创建新的Bug,不断成长——记录相关人员寻找产生Bug原因的讨论过程,发育成熟——找到一个处理办法,同时也允许Bug的复活(问题重现),继续其生长过程。
2. 方便的查询功能,快速找到你关心的Bug.
a)最近N个指派给我的Bug
b)最近N个由我创建的Bug
c)各处自定义条件的查询
3. 提供各种Bug的统计信息。比如每个人头上有多少个Bug,到目前为止Bug总数统计,最近一周的Bug曲线图等等。
4. 方便的项目和模块管理。可以有多个项目,每个项目有多个模块,方便增加、删除和修改。
5. 方便的用户管理。作为一个可独立使用的系统,需要能增加、删除用户。
八. 应该用Bug 管理指导原则(guidance)?来替换Bug管理规章制度(rules & regulations)这个词。
所以我认为Bug 管理就是去制定适合自己团队实际情况的Bug 处理流程和指导原则,制定者(管理层)应该起到真正指导的作用,他们要非常清楚下面这些问题的答案:
· 我们需要测试什么:哪些软件(网站)、哪些模块
· 测试人员的分工:什么人负责什么模块
· 测试工具和环境:巧妇难为无米之炊。你不能安排一个测试人员去测某个模块,而没有给他提供必要的软硬件环境
· 测试的进度安排:干这一行加班是不可避免的,但是需要有度,人不是机器,长期的劳累谁都扛不住。如果时间很紧,那只能去抓重点,要有所不为
· 发现一个问题时,如何用Bug 管理工具去创建一个Bug:标题如何写、严重程度、详细重现步骤、错误状况、期望结果、现场附件、这个Bug 去分配给谁
· 当一个Bug 被处理掉时,测试人员应该如何验证并关闭
· 当一个Bug 的解决方法有争议时,谁来仲裁
· 定期的Bug 提醒,比如当前每个人的Bug 情况
· Bug 状态报告:Bug 数目的变化趋势及我们应该采取的行动
· 阶段性的总结反馈:哪些地方我们做的好,哪些做的不好,为什么、如何改进
· … …
没有这样配套的Bug 处理流程和指导原则,再好的工具都将会是一个摆设、甚至是添乱的工具。就像一个乐队有非常出色的各种乐器,但乐队指挥是个外行(就像成龙电影《双龙会》一个镜头),那么演奏出来的一定会是混乱的乐章。
九. 已经陆续谈过微软的Bug 管理指导原则了,这里系统的总结一下:
·管理层要求所有的Bug 都要通过Raid(Product Studio)来跟踪处理。这个看起来很简单的Bug 管理工具是每个员工和其他同事有效协作的重要保证
·每个产品都细分模块(Area,SubArea),每个模块都有明确的需求定义者(PM)、开发工程师(Dev)和测试工程师(Tester)这三个角色。一个问题出现了,一定会落实到
某个人的头上去跟踪处理,绝不能出现?无主?的Bug
·PM 负责书写的Spec 是这个功能特征(Feature)的?合同?,以此Spec 来指导开发和测试。当Dev 和Tester 就某个Bug 发生争执的时候,PM 负责给出一个明确的说明
·测试不仅仅是Tester 的事情,尽管那是他们的专职工作。研发团队中的所有人每发现产品的问题时候,都有义务把这个问题告知负责这个模块的测试人员去记录跟踪这个Bug,或者干脆自己新建一个Bug 来跟踪
·你可以创建一个Bug 指派给自己,以跟踪某件事的处理。比如开发人员把源代码中的某处问题用Bug 记录下来,以后抽出时间来进行处理
·团队中的所有人都可以创建、指派和更改Bug 的状态
·当你创建一个Bug 的时候,描述一定要足够详细,让下面处理Bug 的人和其他关心这个Bug 的同事能够通过Bug 描述准确的重现这个问题,而不是猜测某些步骤或者跑过来当面问你
·通常一个Bug 的处理过程是这样的:
1. Tester 发现一个问题,到Raid 中创建一个Bug,描述这个Bug 的详细信息,比如重现步骤(Repro Step)、错误结果(Result)、期望的改动(Expect)、运行版本等;然后把这个Bug 指派给负责该模块的Dev Lead
2. Dev Lead 判断后把这个Bug 指派给某个特定的Dev
3. Dev 处理掉这个Bug 并返还给原Tester,或者请求PM 给出一个澄清说明
·管理层通过Raid 来跟踪整体进度,以及每个员工、团队在其中的贡献
·有专人定期给相关同事发出Bug 的状态报告
·每个人都可以方便的自助查询Bug 的分布处理情况。Bug 管理系统对所有的团队成员都是毫无保留的敞开大门(除了你不能删除Bug,另外所有的操作都被忠实的纪录下来)
·随着时间的推移,管理层要逐步给出明确的Bug 解决指导方针:哪些Bug 是可以不理睬的(Won’t Fix),哪些是可以推迟到下个版本处理(Postponed)。比如在最终Build到来前的几周,也许非常严重的Bug,像数据丢失、程序崩溃之类的也都要推迟到下个版本再解决了。
·当一线员工出现争执、无法达成一致意见的时候(尽管这种情况不多见),管理层要快速给出处理意见等等。
十. 我所计划的Bug 管理指导原则是:
·产品(WAP、彩e 或彩信杂志、网站等)中碰到的所有问题都要用BugFree 来跟踪处理
·有一个专职的测试小组
·团队中每个同事发现一个问题时,都有义务去告知相关的人员或者直接创建一个Bug
·需求、开发、测试三个角色的定位要非常明确。特别的,提出需求的人要把需求认真考虑好、细化成文档,然后才能提交正式开发、测试
·发现一个Bug 时,测试人员提交给某个开发小组长,他来负责指派给具体的开发人员;产生争议的时候由需求定义者来出面说明;?矛盾?很大时我来协调和仲裁。Bug 的处理过程都要用BugFree 记录下来:
·每天系统自动通知头上有Bug 的人自己还有几个问题。我会检查这些Bug,看到不合适的地方就去添加我的意见
·每周系统自动通知所有人前一阶段Bug 的整体情况;同时测试小组要汇总上周的Bug测试情况,告诉团队中所有同事哪些模块容易出问题、主要有哪些类型的问题
上面这些我能够作为?硬性要求?的,只能是前两条:
任何人再向开发人员反映问题的时候,开发人员会告诉他们:创建一个Bug 来跟踪
刚刚成了一个测试小组
其余的只能融化在日常工作中,管理层不断在很多细节上要求、甚至亲自示范(比如我会使用不同的产品,发现问题上Bug),去教会大家测什么、如何测、发现问题怎么办、Bug 解决后怎么办。
十一. 关于“数字神经系统”
让一切可以数字化、文档化的 信息被记录下来,为公司的进一步发展和决策提供基础信息支持。该系统可以用八个字来概 括:数据、文档、自助、自动。其表现形式就是一个包括六个子系统的企业内部网:
(1). 员工管理系统 - 每个员工都有唯一的UserID,验证密码后方可登录数字神经系统,访 问公司内部信息,查看上下级关系、每个员工的个人公开信息等,此处学习 SharePoint、 Outlook和Exchange中的员工管理和展示;
(2). 信息管理系统 - 内部的信息发布展示平台,有点象 BBS一样,可发布公司正式通告、 员工也可自由匿名发帖;
(3). Email系统 - 现在Email的重要性对一个企业不言而喻,我们采用免费Qmail来搭建;
(4). 文档管理系统 - 一个集中管理公司所有文档(包括研发过程书写的各种文档)的地方, 学习SharePoint中的文档库;
(5). 源代码管理系统 - 集成优秀且免费的CVS;
(6). BugFree - 虽然网上有免费的Bug管理系统,但是我看后觉得都不好使,和我在微软用 的差别太大,科泰世纪公司的Bug管理系统倒也很像微软的,但是要花钱买。于是决定用PHP+MySQL借鉴微软的研发流程和Bug管理工具自己开发一个,以便对我们开发新网站、声讯软件、客户端软件和公司事务管理中出现的问题进行有效的跟踪处理。
有两种表现形式:
一是Blog的基础上作功能扩展,加上权限,加上评分。
上部导航是我的一些栏目,每月工作,每周工作,每日工作,工作心得;Bug管理,网文收藏,我的简历.还可以包括自定义栏目。
每月工作,每周工作,每日工作帖子作固顶。每个帖子分三部分组成:高阶主管参与的工作计划,工作总结,高阶主管评分。
每月工作,每周工作,每日工作,工作心得四个栏目本组人都可以看到。其他栏目全公司可以看到。
Bug管理用来创建Bug,指派任务,整合BugFree的功能。
右边是一些公共的东东,上部可以是公告区,显示公告或制度等。接着是项目文档,本组成员的Blog地址,我有权限看到的Blog文章等。
另一种表现形式是如同内容管理系统,栏目和Blog形式一样。
分享到:
相关推荐
本文将结合"软件测试 BUG管理 经验和实践"的主题,深入探讨如何有效地进行BUG管理,以及分享一些专家的实践经验。 首先,理解BUG的定义至关重要。BUG通常指的是软件中的错误、缺陷或不正常的行为,它可能导致程序...
这本名为《Bug管理经验和实践》的电子书,以PDF格式提供,共分为三部分,旨在深入探讨和分享Bug管理的有效方法和实战策略。以下是书中可能涉及的一些核心知识点: 1. **Bug的定义与分类**:书中可能会介绍什么是Bug...
本文将深入探讨刘振飞在方正出版印刷系统以及微软Office开发组中积累的Bug管理经验和实践。 一、Bug定义与分类 Bug通常指的是软件中存在的错误、缺陷或不合规行为,导致程序无法正常运行或功能不符合预期。按照...
总之,Bug管理是软件生命周期中不可或缺的一部分,良好的Bug管理实践能显著提高软件质量,缩短发布时间,增强用户满意度,同时也有助于团队协作和学习成长。通过深入理解和实践,我们可以不断优化这一过程,为软件...
本文基于“Bug管理的经验和实践2”一文的核心观点,深入探讨了Bug管理中的“人”的因素,以及如何通过合理的管理制度和流程,避免过度僵化的规则所带来的负面影响。 #### Bug管理制度的定位与设计 Bug管理制度不应...
### Bug管理的经验与实践 #### 一、引言 在软件开发过程中,Bug管理是一项至关重要的任务,它直接影响到软件产品的质量和用户体验。本文基于孟岩与刘振飞的对话,探讨了Bug管理的经验与实践,并从微软的研发管理...
【Bug管理的经验和实践】 Bug管理是软件开发过程中的关键环节,它涉及到对软件缺陷的跟踪、记录、修复和预防。在《Bug管理的经验和实践(中)》中,作者探讨了有效Bug管理的重要性,强调了管理体系与技术工具的结合。...
【Bug管理的经验和实践(中)】 在软件开发过程中,Bug管理是不可或缺的一环,它涉及到项目的质量和效率。本文深入探讨了如何有效地进行Bug管理,强调了管理与技术结合的重要性,特别是利用专业的软件系统作为支撑...
本文通过分析“项目管理BUG管理”这一主题,并结合部分内容中提到的微软公司研发管理经验,深入探讨BUG管理在项目管理中的作用及其最佳实践。 #### 二、BUG管理的重要性 在项目管理中,BUG管理不仅关乎产品的最终...
本文将基于《软件测试及Bug管理经验谈》这一主题,深入探讨软件测试的核心原则、Bug管理的重要性和有效实践,以及如何选择适合的Bug管理工具。 #### 清晰的质量概念 软件测试的第一步在于确立明确的质量标准。这...
本资料包"bug管理与实践.rar"主要围绕Bugzilla的使用说明以及在实际工作中的管理策略进行讲解,旨在为学习者提供丰富的实践经验。 首先,理解Bug管理的基础概念。Bug是指软件中导致程序运行异常或不符合预期功能的...