BugFree

您现在的位置:首页>>软件测试工具解决方案>>常用工具介绍>>BugFree介绍

         一. BugFree 简介

        BugFree是借鉴微软的研发流程和Bug管理理念,使用PHP+MySQL独立写出的一个Bug管理 系统。简单实用、免费并且开放源代码(遵循GNU GPL)。 如何有效地管理软件产品中的 Bug,是每一家软件企业必须面临的问题。遗憾的是很多 软件企业还是停留在作坊式的研发模式中,其研发流程、研发工具、人员管理不尽人意,无 法有效的保证质量、控制进度,并使产品可持续发展。 针对这个问题,我们独立做出了 BugFree,并且半年多来每天都在使用。我们公司就是 用它来管理Bug,不断提高产品质量的:-) 命名BugFree 有两层意思:一是希望软件中的缺陷越来越少直到没有,Free嘛;二是表 示它是免费且开放源代码的,大家可以自由使用传播。

         为什么开放BugFree的源代码呢?

        (1). 根据这半年多的实践,觉得BugFree非常有用,我们公司的日常工作已经离不开它 了。虽然没有微软的Bug管理系统(以前叫Raid,现在是 Product Studio)的功能那么强大, 但是处理方法和思想是完全一致的,起码我自己用起来的感觉和在微软时基本一样,值得向 大家推荐。

        (2). 我们是用开放源代码的 PHP+MySQL开发的,目的就是希望跟大家分享BugFree。而 且开放源代码之后,期待高手不断改进它,大家都能用到更加强大的功能。也算为中国的软 件业做点小小的贡献:-)

        (3). BugFree代码在我们的“数字神经系统”中非常独立,很容易拿出来给大家共享。 不过坦率的讲,BugFree 仅仅是个工具而已,重要的是掌握其中蕴含的软件研发的流程 思想,才能用好这个工具。如果你以前没有用过 Bug管理系统,那么一开始的时候也许你会 觉得这个工具是在浪费时间,因为一个测试人员需要费神把发现 Bug的详细步骤记录下来, 有时还要贴一张示意图,这一切都不如当面说来得直接。 但是使用一段时间,你会发现 BugFree很有用,它忠实的记录着每个问题的处理过程, 不断提醒你存在的问题,永远不会丢失和忘记。如果你参与过较大软件项目或产品的研发, 就会理解它对软件可持续发展是至关重要的。而且研发的规模越大,BugFree 的作用就会越 大。

        二. 如何安装使用BugFree

        BugFree的安装和使用都非常简单,就像PHP+MySQL一样:

  • - Install.txt 介绍了BugFree的安装
  • - Usage.txt 介绍了如何使用BugFree
  • - FileList.txt介绍了BugFree的代码文件结构
  • 希望你能喜欢BugFree,就像我一样。
  •         三. 为什么开发BugFree

  •         一言以蔽之,「工欲善其事,必先利其器」。
  •         我曾在北京大学计算机研究所(方正技术研究院)学习、工作了七年,那里有我很多师长 和好友,我参与研发的方正RIP (PSPNT) 至今仍是方正的核心软件产品。当自认为成了一名 合格的 C++开发人员后,我发现面临一个无法解决的难题:如何有效地控制软件研发流程以 保证产品质量和进度。我意识到做好一个软件,只靠技术好是很不够的,必须要有一套好的 研发流程和配套的研发工具。恰好那时我在吴士宏的《逆风飞飏》中读到了微软的“数字神 经系统”及相关叙述,很吃惊,想去那里看看。 2000年我加入微软(中国)研发中心,真的很快在这里找到了答案。四年来,我所理解的 微软数字神经系统在软件研发中的妙处是:

            (1). 研发人员分工明确。主要的三个角色: PM (Program Manager)、 Dev (Developer)、 Tester三者分工明确、接口清晰,PM来定义需求、书写出来每个功能特性 (Feature)的设计 文档(Spec),Dev写代码来实现这个Spec,Tester来测试 Dev做出来的东西是否符合 PM定义 的 Spec,三个角色之间并无必然的上下级关系,只是分工合作完成某个功能(Feature)。我 将之形容为“三权分立”,三者之间有效合作并制衡。国内企业好像还没有PM这个角色,而 测试人员又往往成为开发人员的附庸,一个 Bug是否要被解决全由开发人员说了算,这很糟 糕,就像政治上一个权力没有被有效的制衡一样,一定会产生各种问题。

            (2). 研发工具很配套。PM将写好的需求设计文档(Spec)保存到 SharePoint【见附录一】文 档库中,所有相关的人都可以随时查看;Dev用Source Depot (功能类似CVS的微软内部源代 码管理工具)来保存源程序;Tester把发现的Bug记录到Raid中以有效跟踪这个问题的处理流 程。

            (3).分阶段的研发流程。和任何软件公司一样,微软的研发无非也分为规划、开发、测试、 发布等几个阶段。但是微软的研发流程不走形式,可以统一产品组所有员工的思想,并且能 够有效地控制住进度。做完一个版本后,还会让所有员工匿名投票,找出这次研发过程中出 现的各种问题以便在下个版本中解决 (此过程称为 Postmortem,挺吓人的一个词)。 可以这么比喻,微软这套研发模式是让其中的每个人都成了一架高速运转的机器上的各 种零件,少数零件坏了不要紧,可以随时更换。当然微软有许许多多技术高手,但我认为更 重要是其研发模式保证了软件产品的高品质、可持续发展。

            我在微软经历了三个产品的研发:Office XP、Project 2002、Office 2003。微软所有 产品的研发都遵循同样的研发模式、使用同样的研发工具来进行管理。在所有的工具中,我 最佩服的就是Raid。可以说,遍布全球的微软研发人员能够保持统一的思维模式、做事及语 言习惯,与整个研发流程的配套工具密不可分,其中最重要的就是通过Raid把整个产品的研 发有机的联系起来。阅读每个 Bug,你可以详细的看到大家讨论解决该问题的完整思路。 我曾读过微软Project 2002产品的Architect写的一个备忘录,其中提到 “Raid是微软 最伟大的产品,为Bill Gates节省了无数金钱”,当时我“心有戚戚焉”,立即给这哥儿们 发Email表示赞同之意:-) 他回信说希望Project能够做的像Raid一样成功,但可惜他要离开微软自己开公司了。
  •     在微软上班,我每天第一件事是打开 Outlook来处理有关自己的重要邮件,第二件事就 是打开Raid来看看有关自己的Bug情况,赶快处理。我一直纳闷,微软为什么不把这个Bug管 理系统作为软件来出售,那可是任何一家软件企业都需要的啊!
  •         今年四月我加盟朋友的公司(西线传媒科技有限公司:http://www.okooo.com)做网站。 我发觉自己已经习惯了微软的研发模式,于是建议这几个朋友先做一个 “数字神经系统” (BugFree 就是其中有关软件研发的Bug管理部分) ,其目的是让一切可以数字化、文档化的 信息被记录下来,为公司的进一步发展和决策提供基础信息支持。该系统可以用八个字来概 括:数据、文档、自助、自动。其表现形式就是一个包括六个子系统的企业内部网:
  • (1). 员工管理系统 - 每个员工都有唯一的UserID,验证密码后方可登录数字神经系统,访 问公司内部信息,查看上下级关系、每个员工的个人公开信息等,此处学习 SharePoint、 Outlook和Exchange中的员工管理和展示;
  • (2). 信息管理系统 - 内部的信息发布展示平台,有点象 BBS一样,可发布公司正式通告、 员工也可自由匿名发帖;
  • (3). Email系统 - 现在Email的重要性对一个企业不言而喻,我们采用免费Qmail来搭建;
  • (4). 文档管理系统 - 一个集中管理公司所有文档(包括研发过程书写的各种文档)的地方, 学习SharePoint中的文档库;
  • (5). 源代码管理系统 - 集成优秀且免费的CVS;
  • (6). BugFree - 虽然网上有免费的Bug管理系统,但是我看后觉得都不好使,和我在微软用 的差别太大,科泰世纪公司的 Bug管理系统【见附录二】倒也很像微软的,但是要花钱买。 于是决定用PHP+MySQL借鉴微软的研发流程和Bug管理工具自己开发一个,以便对我们开发新 网站、声讯软件、客户端软件和公司事务管理中出现的问题进行有效的跟踪处理。 当然这个小小的“数字神经系统”还不全面,而且当时设计的时候更多的是站在为方便 研发人员的日常工作而考虑的,以后还需要挂靠更多的公司业务相关模块。即使这样,它已 经发挥了很大威力,现在公司每个员工都养成这样的工作习惯并乐在其中:每天使用邮件, 到文档库中查找文档,发现问题上Bug等等。
  •         “数字神经系统”中的BugFree是用开放源代码的PHP+MySQL写成、基于浏览器方式运行 的。我以前没有任何Linux+Apache+MySQL+PHP的开发经验,但我很幸运的招聘到两名优秀的 Web程序员,可以在短短的两个月时间内搭建起这样的系统。其中BugFree是由我的同事王春 生开发的,他用了不到一个月的时间就把代码写完,让我很是惊讶,从而 认识到基于Linux的Web开发魅力。之后我们测试一个多月,就可以在实际工作中使用。现在 BugFree已经成了我们日常工作最重要的工具,每个员工也都习惯用Bug来记录跟踪事情,不 仅仅是代码中的缺陷可以上Bug,新的需求、设计变化等都可以用这个Bug管理系统有效的管 理起来。其实Bug 不仅仅可以用来记录软件中的缺陷,也可以用来跟踪公司的日常事务。比 如在公司的网上报销系统还没有建立之前,我们就用 BugFree来处理报销的事情。甚至,一 个同事给我上了这样的Bug:你的桌面太乱了,请整理一下:-)

            和Raid比较起来,BugFree有如下特点:
  • (1). Raid是Windows客户端软件,BugFree是基于浏览器的。基于此,Raid 有很强大的编辑 展示功能,而BugFree简单、方便、易用;
  • (2). Raid可以进行极其复杂的组合查询,BugFree的查询功能相对弱一些,但我觉得已经够 用了;
  • (3). 一个Bug从创建到关闭这个“生命周期”的处理过程,BugFree 全面借鉴Raid的处理流 程,处理方法甚至一些词汇都和Raid一样 (所以我现在用BugFree处理Bug的感觉和在微软时 候基本一样);
  • (4). BugFree 还有一个独创的功能:当一个Bug被指派给你的时候,系统会自动给你发一封 邮件,告诉你有个Bug需要你处理,这样结合 Email,BugFree被完美使用起来,成为我们现 在网站开发、运行、维护必备的工具。我们还增加了两个Bug统计功能:一是每天早上8点钟 每个同事都会收到一封Email,告诉他/她头上还有多少 Bug等待处理;二是每周一中午给所 有人发一封邮件,告知上周Bug的处理情况和到目前为止所有Bug的统计数据;
  • (5). BugFree程序规模很小,一个中等水平的PHP程序员就可以在1~2周内看懂所有的代码, 然后就可以根据自己的需要做相应的定制了;
  • (6). 最最重要是,BugFree 是免费并且开发源代码的。你可以体验到微软的Bug管理精髓, 按自己需要自由地增加功能、修改代码而不用担心版权问题:-)
  •         四. BugFree的升级情况和改进设想

            1. 升级情况:
  • BugFree目前是第二版(Ver 0.2),比第一版(Ver 0.1)比较起来的改动有:
  • - 全新的界面,显示空间更大,更加大气
  • - 符合你自定义查询条件的Bug改动时,会自动给你发信
  • - Bug信息中增加了两个字段:操作系统、抄送。“抄送”的功能表示这个Bug有变 化时,也会发送给这些人
  • - 增强BugFree的查询功能:
  • -- 分组的查询功能,更加方便使用
  • -- 点击某个Bug的 OpenedBy、AssignedTo、ResolvedBy、Resolution,自动找出 所有符合该项条件的所有Bug;
  • - 增加Bug的多任务分派功能,新建一个Bug时可以同时指派给多个人,这对事物跟踪和 数据校对类问题非常有用
  • - 添加多个附件
  • - 改变Severity的显示方式
  • - 增加BugFree的简单帐户管理
  • - 有快捷键支持
  • - 多语言支持,目前你可以选择英文界面
  • - 系统配置很灵活,可以根据使用情况自己定义
  • - 用Smarty技术把HTML和PHP代码分开,代码很清晰,易于维护
  • - 用Pear中标准的树状列表TreeMenu
  • - 使用ADO访问数据库
  •         2. 改进设想:
  •   和任何软件系统一样,BugFree中还存在着一些Bug、还有很多地方可以改进、还可以增 加很多新的功能。但是基于人力和时间的关系,没有太多精力去进一步完善它。开放源代码 之后,希望有热心人不断完善 BugFree。以下是目前我想到的可以改进的地方:
  • (1). 宣传推广BugFree的使用。一般中小企业没有很好的Bug管理系统,刚好可用BugFree来 填补这个空白。其实 BugFree是一个非常简单的工具,可以让非技术人员快速上手使用。开 源的目的是让它被广泛使用,只有被大家天天用,我们才能找到下一步不断改进这个软件的 真正需求。有人天天用是软件生命力的保证。
  • (2). 和源代码管理系统CVS有效的统一起来。当代码的改动是因为解决一个Bug引起的时候, 系统可以自动把代码的Check-in结合起来,微软的源代码管理Source Depot好像早就有了此 能力。可以考虑通过Eclipse把CVS和BugFree连通起来。
  • (3). 搭建研发工具套件。更进一步,把BugFree和需求设计文档、开发文档、测试文档、测 试用例等联系起来,做成一个软件研发工具套件,即可通过一个 Bug方便找到对应的文档、 代码、测试用例等等,那将是一个比较完美的境界。微软现在的 Product Studio 正在向这 个方面努力。不过,达到这一步,必须先做一个好的文档管理工具,就像微软的SharePoint 中的文档库一样,不仅仅存放文档,还要方便检索 (比如 Word文档内容)等,那可不是一件 容易的工作。我目前初步的想法是,先借鉴“基于Java 的全文索引引擎 Lucene”去做一个 易理解、易扩展的基于C++的全文索引引擎,我在微软做过SPS的PM,对搜索引擎这一块还是 比较熟悉、可以做出来的。有了这样的引擎为基础后,再借鉴SharePoint做出文档库及门户 功能。