• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            [轉(zhuǎn)]Bug管理的經(jīng)驗(yàn)和實(shí)踐[轉(zhuǎn)載]

            [轉(zhuǎn)]Bug管理的經(jīng)驗(yàn)和實(shí)踐[轉(zhuǎn)載]

            [轉(zhuǎn)載]

            孟巖:劉振飛,你好。我知道你以前是方正出版印刷系統(tǒng)的核心開(kāi)發(fā)人員,后來(lái)來(lái)到微軟的Office開(kāi)發(fā)組。我認(rèn)識(shí)你的時(shí)候你還在微軟工作,狀態(tài)似乎不錯(cuò)。為什么后來(lái)又離開(kāi)微軟了呢?

            劉振飛:93年到96年,我在北大計(jì)算機(jī)研究所讀研。96年畢業(yè)后,我留在所里繼續(xù)從事方正核心產(chǎn)品世紀(jì)RIP --- PSPNT的研發(fā)、維護(hù)、升級(jí)(還有外圍軟件開(kāi)發(fā)比如新女?huà)z補(bǔ)字NewNW、PDF流程系統(tǒng)等)。PSPNT是國(guó)內(nèi)比較大的、成功的軟件產(chǎn)品,我一直為曾參與研發(fā)過(guò)這個(gè)產(chǎn)品而自豪。

            工作中,我模模糊糊地覺(jué)得應(yīng)該有一個(gè)清晰的、可控的流程,而不是依靠幾個(gè)開(kāi)發(fā)“高手”來(lái)支撐一個(gè)項(xiàng)目。方正人的個(gè)人素質(zhì)非常優(yōu)秀,集中在一起應(yīng)該做得更為出色。我在方正的時(shí)候最多也就帶過(guò)10來(lái)人的隊(duì)伍,但即使這么小的團(tuán)隊(duì),已經(jīng)讓我精疲力竭、疲于應(yīng)付了。我發(fā)現(xiàn)面臨一個(gè)無(wú)法解決的難題:如何有效地控制軟件研發(fā)流程以保證產(chǎn)品質(zhì)量和進(jìn)度。我意識(shí)到做好一個(gè)軟件,只靠技術(shù)好是很不夠的,必須要有一套好的研發(fā)流程和配套的支持工具。你也知道國(guó)內(nèi)軟件企業(yè)的項(xiàng)目經(jīng)理都是“全才”:需求、設(shè)計(jì)、編碼、測(cè)試、維護(hù)乃至產(chǎn)品發(fā)布都要精通,事必躬親,但實(shí)踐中你又不可能樣樣都精通,所以結(jié)果只有一個(gè):四處救火,累得半死但永遠(yuǎn)看不到盡頭。

            當(dāng)時(shí)就覺(jué)得這么干有問(wèn)題,但究竟問(wèn)題出在哪里、如何有效改進(jìn)都不知道。我最納悶的是:這么10來(lái)號(hào)人的研發(fā)管理就這么費(fèi)勁,人家微軟上千人、分布全球的Windows、Office研發(fā)隊(duì)伍是怎么有效管理的?我當(dāng)時(shí)深入研究了一些軟件工程方面的理論,比如花了一段時(shí)間仔細(xì)閱讀了原版的Rational Unified Process(RUP),覺(jué)得很興奮,RUP里面的研發(fā)理論很完備,和幾個(gè)同事聊天覺(jué)得應(yīng)該按照RUP的去做,但是理論歸理論,具體到實(shí)際產(chǎn)品開(kāi)發(fā)該如何做,還是一籌莫展。

            恰好那時(shí)候讀了微軟(中國(guó))公司前總經(jīng)理吳士宏的暢銷(xiāo)書(shū)《逆風(fēng)飛飏》,提到了微軟的企業(yè)管理、內(nèi)部的數(shù)字神經(jīng)系統(tǒng)及相關(guān)敘述,非常感興趣,想去那里看看。剛好有個(gè)機(jī)會(huì),得到了微軟(中國(guó))研發(fā)中心Office組的一個(gè)PM(Program Manager)職位。在微軟的4年中,我先后經(jīng)歷過(guò)Office XP、Office 2003的研發(fā),中間還夾著做過(guò)Project 2002。微軟所有產(chǎn)品的研發(fā)都遵循同樣的研發(fā)模式、使用同樣的研發(fā)工具來(lái)進(jìn)行管理,只不過(guò)產(chǎn)品大小不一、人員配置有點(diǎn)區(qū)別罷了。經(jīng)歷這幾個(gè)大產(chǎn)品的研發(fā)流程,加上在方正的體驗(yàn)的對(duì)比總結(jié),我覺(jué)得自己比較深入的理解了微軟做研發(fā)的“套路”。

            我是C++程序員出身,當(dāng)PM后就沒(méi)怎么寫(xiě)過(guò)代碼,總還想寫(xiě)寫(xiě)。剛好幾個(gè)朋友開(kāi)的公司要做網(wǎng)站、短信、聲訊,還要對(duì)報(bào)紙做數(shù)據(jù)支持,他們需要一個(gè)懂研發(fā)管理的人去帶技術(shù)部。我覺(jué)得已經(jīng)熟悉了微軟的研發(fā)流程,這剛好是一個(gè)檢驗(yàn)自己所學(xué)所思的機(jī)會(huì),所以就離開(kāi)微軟去做這家小公司的技術(shù)總監(jiān)了(而且滿足我另外的愿望:我對(duì)Windows之外的世界充滿好奇,比如每天去新浪網(wǎng)看新聞,他們網(wǎng)站是如何做出來(lái)的、用到什么樣的技術(shù)?Linux、開(kāi)源軟件到底怎么回事?)

            不過(guò)我一直認(rèn)為微軟是一家偉大的公司,很喜歡其工作氛圍。特別的,微軟的軟件研發(fā)流程我認(rèn)為是最先進(jìn)的,值得大家去學(xué)習(xí)。

            孟巖:那請(qǐng)你介紹一下你所體會(huì)的微軟研發(fā)管理的妙處。

            劉振飛:從我理解的角度,微軟的研發(fā)管理可以從以下幾個(gè)方面描述:

            (1)研發(fā)人員分工明確。主要的三個(gè)角色: PM (Program Manager)、 Dev (Developer)、Tester三者分工明確、接口清晰,PM來(lái)定義需求、書(shū)寫(xiě)出來(lái)每個(gè)功能特性 (Feature)的設(shè)計(jì)文檔(Spec),Dev寫(xiě)代碼來(lái)實(shí)現(xiàn)這個(gè)Spec,Tester來(lái)測(cè)試 Dev做出來(lái)的東西是否符合 PM定義的 Spec,三個(gè)角色之間并無(wú)必然的上下級(jí)關(guān)系,只是分工合作完成某個(gè)功能(Feature)。我將之形容為“三權(quán)分立”,三者之間有效合作并制衡。國(guó)內(nèi)企業(yè)好像還沒(méi)有PM這個(gè)角色,而測(cè)試人員又往往成為開(kāi)發(fā)人員的附庸,一個(gè) Bug是否要被解決全由開(kāi)發(fā)人員說(shuō)了算,這很糟糕,就像政治上一個(gè)權(quán)力沒(méi)有被有效的制衡一樣,一定會(huì)產(chǎn)生各種問(wèn)題。

            (2)研發(fā)工具很配套。PM將寫(xiě)好的需求設(shè)計(jì)文檔(Spec)保存到 SharePoint文檔庫(kù)中,所有相關(guān)的人都可以隨時(shí)查看;Dev用Source Depot (功能類(lèi)似CVS的微軟內(nèi)部源代碼管理工具)來(lái)保存源程序;Tester把發(fā)現(xiàn)的Bug記錄到Raid中以有效跟蹤這個(gè)問(wèn)題的處理流程。

            (3)分階段的研發(fā)流程。和任何軟件公司一樣,微軟的研發(fā)無(wú)非也分為規(guī)劃、開(kāi)發(fā)、測(cè)試、發(fā)布等幾個(gè)階段。但是微軟的研發(fā)流程不走形式,可以統(tǒng)一產(chǎn)品組所有員工的思想,并且能夠有效地控制住進(jìn)度。做完一個(gè)版本后,還會(huì)讓所有員工匿名投票,找出這次研發(fā)過(guò)程中出現(xiàn)的各種問(wèn)題以便在下個(gè)版本中解決 (此過(guò)程稱(chēng)為 Postmortem,挺嚇人的一個(gè)詞)。

            可以這么比喻,微軟這套研發(fā)模式讓其中的每個(gè)人都成了一架高速運(yùn)轉(zhuǎn)的機(jī)器上的各種零件,少數(shù)零件壞了不要緊,可以隨時(shí)更換。當(dāng)然微軟有許許多多技術(shù)高手,但我認(rèn)為更重要是其研發(fā)模式保證了軟件產(chǎn)品的高品質(zhì)、可持續(xù)發(fā)展。

            孟巖:提到微軟的研發(fā)管理,你說(shuō)過(guò)一句話,我印象很深。你說(shuō)微軟的研發(fā)管理中,它的bug管理系統(tǒng)是居于核心地位的。你這么說(shuō),有什么道理嗎?

            劉振飛:前面說(shuō)過(guò),微軟所有產(chǎn)品的研發(fā)都遵循同樣的研發(fā)模式、使用同樣的研發(fā)工具來(lái)進(jìn)行管理。在所有的工具中,我最佩服的就是其Bug管理系統(tǒng)Raid(現(xiàn)在叫Product Studio)。可以說(shuō),遍布全球的微軟研發(fā)人員能夠保持統(tǒng)一的思維模式、做事及語(yǔ)言習(xí)慣,與整個(gè)研發(fā)流程的配套工具密不可分,其中最重要的就是通過(guò)Raid把整個(gè)產(chǎn)品的研發(fā)有機(jī)的聯(lián)系起來(lái)。閱讀每個(gè) Bug,你可以詳細(xì)的看到大家討論解決該問(wèn)題的完整思路。

            我曾讀過(guò)微軟Project 2002產(chǎn)品的Architect寫(xiě)的一個(gè)備忘錄,其中提到: 如果Raid是別家的產(chǎn)品,需要微軟每年付出一筆巨大的費(fèi)用,Bill Gates會(huì)支付這筆錢(qián)嗎?“He wouldn’t be happy, but you bet he would. Microsoft depends on Raid to get the job done.”當(dāng)時(shí)我“心有戚戚焉”,立即給這哥兒們發(fā)Email表示贊同之意J 他回信說(shuō)希望Project能夠做的像Raid一樣成功,但可惜他要離開(kāi)微軟自己開(kāi)公司了。

            在微軟上班,我每天第一件事是打開(kāi) Outlook來(lái)處理有關(guān)自己的重要郵件,第二件事就是打開(kāi)Raid來(lái)看看有關(guān)自己的Bug情況,趕快處理。我一直納悶,微軟為什么不把這個(gè)Bug管理系統(tǒng)作為軟件來(lái)出售,那可是任何一家軟件企業(yè)都需要的啊!

            表面上看Raid其實(shí)是一個(gè)簡(jiǎn)單的工具,那么它的重要性體現(xiàn)在什么地方呢?

            l Raid從一開(kāi)始就支持多用戶(hù)

            l 一個(gè)團(tuán)隊(duì)中的所有人都可以創(chuàng)建、指派Bug,或者改變Bug狀態(tài)

            l 用戶(hù)可以非常自由的去定制Raid

            l 基于SQL,很多有用的報(bào)告可以被生成出來(lái)

            l 管理層需要所有Bug都在Raid中被有效的跟蹤處理

            Raid的價(jià)值在于它密切跟蹤當(dāng)前產(chǎn)品的實(shí)際Bug狀態(tài),使項(xiàng)目組中的成員非常有效的協(xié)調(diào)他們的工作。大家都很聰明,如果一個(gè)工具是容易理解的、而且管理層提供其使用指南(比如Bug怎么被指派和解決),那么簡(jiǎn)單的工具也能提供巨大的價(jià)值。

            孟巖:能否請(qǐng)你簡(jiǎn)要地介紹一下微軟的bug管理體制?

            劉振飛:在整個(gè)產(chǎn)品的研發(fā)過(guò)程中,特別是在測(cè)試產(chǎn)品、修復(fù)Bug的中后期,團(tuán)隊(duì)中所有人都生活在Raid中:

            - 測(cè)試人員(Tester)只要發(fā)現(xiàn)問(wèn)題就立即新建一個(gè)Bug予以跟蹤并指派給相關(guān)的開(kāi)發(fā)小組長(zhǎng)(Dev Lead)

            - 開(kāi)發(fā)小組長(zhǎng)會(huì)判斷這個(gè)Bug屬于某個(gè)特定的開(kāi)發(fā)人員(Dev)并指派給他處理

            - 開(kāi)發(fā)人員會(huì)根據(jù)Bug的詳細(xì)描述信息找到問(wèn)題所在,修改程序解決這個(gè)Bug并把Bug返回給當(dāng)初的測(cè)試人員;或者有爭(zhēng)議的時(shí)候,把Bug指派給這個(gè)Feature的定義者PM,要求一個(gè)澄清說(shuō)明

            - 測(cè)試人員在看到某個(gè)Bug被解決后,就去驗(yàn)證這個(gè)Bug是否真的不存在了,根據(jù)最初的發(fā)現(xiàn)步驟去證實(shí)問(wèn)題真的解決了就關(guān)閉這個(gè)Bug;若還能重現(xiàn),或者不同意開(kāi)發(fā)人員的解法,可以激活這個(gè)Bug,返還給當(dāng)初的開(kāi)發(fā)人員做進(jìn)一步調(diào)查處理

            - 當(dāng)測(cè)試人員和開(kāi)發(fā)人員無(wú)法達(dá)成一致意見(jiàn)的時(shí)候,由對(duì)應(yīng)的PM出面做協(xié)調(diào),判斷這個(gè)Bug的嚴(yán)重程度、對(duì)用戶(hù)可能的影響,根據(jù)產(chǎn)品的進(jìn)度和項(xiàng)目資源做出評(píng)估,是否真的需要修理掉這個(gè)問(wèn)題

            - 管理團(tuán)隊(duì)利用Raid來(lái)跟蹤整個(gè)進(jìn)度:?jiǎn)蝹€(gè)人的工作、小組的進(jìn)度,整個(gè)產(chǎn)品研發(fā)進(jìn)度

            研發(fā)隊(duì)伍中的所有人都通過(guò)Raid來(lái)商議、溝通某個(gè)Bug是否符合當(dāng)前解決Bug的“門(mén)檻”,決定是否需要真正修理掉這個(gè)Bug、如何修理、可能的副作用、如何測(cè)試其解決方案等等。每個(gè)人可以在Raid中看到某個(gè)Bug的全部歷史檔案,比如幾年前發(fā)現(xiàn)的一個(gè)Bug一直推遲到這一版才解決,前幾年大家是如何討論的,可能的處理思路是什么,都被完整地記錄下來(lái)了。

            每月、每周甚至每天,參與這個(gè)產(chǎn)品研發(fā)的人都收到一封當(dāng)前Bug狀態(tài)的Email:每個(gè)人都上有多少Bug,Dev、PM、Tester頭上Bug數(shù)最多的前5名都是誰(shuí),哪個(gè)子產(chǎn)品、子模塊中的問(wèn)題還是處于上升階段,整個(gè)Bug的趨勢(shì)怎么樣等等。這是最詳盡的產(chǎn)品狀況“內(nèi)參”,暴露在團(tuán)隊(duì)中每個(gè)成員的面前,一覽無(wú)遺。只要你的名字被列在Email中,你就非常緊張,因?yàn)槟隳X袋上的Bug比較多、影響整個(gè)產(chǎn)品的質(zhì)量。這些該死的Bug等待著你去快速處理,盡快把自己從排行榜上去掉。每解掉一個(gè)Bug,或者把Bug轉(zhuǎn)給另外的人去處理,就會(huì)舒一口氣,因?yàn)轭^上又少了一個(gè);某一天你頭上的Bug數(shù)降為0了,心里就會(huì)非常高興J

            我覺(jué)得微軟的Bug處理過(guò)程,非常類(lèi)似于“擊鼓傳花”的游戲。鼓點(diǎn)響起,你的任務(wù)就是盡快把自己手中的“花”(Bug)傳給下一個(gè)人,不要讓它在自己手里耽誤很長(zhǎng)時(shí)間。從表面上看,在微軟工作從不打卡、上班時(shí)間也很自由、上午很晚到辦公室也沒(méi)人管你,但是有Email跟著、有Bug催著,你永遠(yuǎn)不可能偷懶。沒(méi)有人盯著你,只是事情如影隨形,而且所有和你相關(guān)的事情都是公開(kāi)的,相關(guān)的人都知道,就像處于非常開(kāi)放的輿論監(jiān)督之中,除了把事情辦漂亮你還能有別的選擇嗎?

            最后要強(qiáng)調(diào)兩點(diǎn):

            (1) 上Bug不僅僅是測(cè)試人員的事情,團(tuán)隊(duì)中的每個(gè)人發(fā)現(xiàn)問(wèn)題時(shí)都上個(gè)Bug來(lái)跟蹤;

            (2) Raid中不僅僅是跟蹤軟件功能方面的Bug,其他各種問(wèn)題如需求文檔(Spec)的改動(dòng)、界面上的錯(cuò)別字、幫助文檔的遣詞造句問(wèn)題、某項(xiàng)任務(wù)指派等等都可以通過(guò)一個(gè)Bug來(lái)跟蹤。

            我至今對(duì)剛進(jìn)微軟時(shí)老板的一句話印象深刻:Everything should be tracked in Raid!

            孟巖:就你了解到的情況,國(guó)內(nèi)的公司在這方面怎么樣?

            劉振飛:在微軟這幾年,我也一直和國(guó)內(nèi)軟件公司的朋友們保持接觸。很遺憾的是,國(guó)內(nèi)的一些軟件企業(yè),特別是不少中小企業(yè),其軟件研發(fā)還是處于作坊式的狀態(tài),只不過(guò)作坊規(guī)模有大中小之分罷了。有意思的是,走在國(guó)內(nèi)IT最前沿做各類(lèi)網(wǎng)站的企業(yè),根據(jù)我的了解,也在走軟件企業(yè)最初幾個(gè)“大蝦”(牛人)搞定一切的階段。我不是說(shuō)個(gè)人技術(shù)好不重要,而是需要更進(jìn)一步,把研發(fā)管理真正搞起來(lái),做出規(guī)模效應(yīng),從而有效的保證質(zhì)量、控制進(jìn)度、把對(duì)某個(gè)人的依賴(lài)盡量降低,并使產(chǎn)品可持續(xù)發(fā)展。

            你知道國(guó)內(nèi)不少軟件企業(yè)在做ISO9001或CMM認(rèn)證,花費(fèi)不菲。少數(shù)企業(yè)純粹是為了認(rèn)證而認(rèn)證,對(duì)付著拿到證書(shū)就達(dá)到目的了;更多的企業(yè)確實(shí)是想利用這個(gè)認(rèn)證的過(guò)程,把自己的研發(fā)流程規(guī)范化。但似乎能從這些認(rèn)證中享受到真正的研發(fā)管理提升的并不是很多,甚至開(kāi)發(fā)人員現(xiàn)在需要花費(fèi)大量的時(shí)間去書(shū)寫(xiě)一些例行公事的、沒(méi)有任何實(shí)際價(jià)值的格式化文檔,苦不堪言。

            我覺(jué)得軟件研發(fā)管理必須結(jié)合自己企業(yè)的實(shí)際情況,不要生搬硬套書(shū)本上的理論,只要人員分工、配置合理,能夠控制質(zhì)量,什么方法都可以采用。黑貓白貓,能抓耗子的就是好貓。千萬(wàn)不要走形式、走過(guò)場(chǎng)。

            孟巖:其實(shí)國(guó)內(nèi)公司在研發(fā)方面與微軟的差距非常大,也存在于很多方面。為什么你獨(dú)獨(dú)看中bug管理?為什么你認(rèn)為中國(guó)中小型企業(yè)的軟件開(kāi)發(fā)管理規(guī)范化,應(yīng)當(dāng)從bug管理入手呢?

            劉振飛:從微軟的研發(fā)管理來(lái)看主要是需求、開(kāi)發(fā)、測(cè)試這三大塊,毫無(wú)疑問(wèn)國(guó)內(nèi)公司在開(kāi)發(fā)這個(gè)環(huán)節(jié)一直都很重視,不過(guò)需求和測(cè)試較弱一點(diǎn)。大家現(xiàn)在都已經(jīng)認(rèn)識(shí)到充分理解業(yè)務(wù)需求的重要性,如果沒(méi)有很好的對(duì)項(xiàng)目或產(chǎn)品用戶(hù)需求的真正把握,后面所有的工作都將是白費(fèi)工夫、事倍功半,這一塊缺乏的是如何有效地將用戶(hù)的需求轉(zhuǎn)成一份份詳細(xì)的、后面開(kāi)放測(cè)試人員可以理解的文檔。

            但是測(cè)試這一塊大家還是不夠重視,對(duì)測(cè)試人員的素質(zhì)要求也不是很高、人員比例也較低,測(cè)試人員往往依附于開(kāi)發(fā)人員的直接管理,人微言輕。而在微軟,測(cè)試人員和開(kāi)發(fā)人員的比例很多時(shí)候是1比1的,有時(shí)候會(huì)更高。測(cè)試人員和開(kāi)發(fā)、需求人員一樣有自己?jiǎn)为?dú)的行政管理路線,比如我就注意到有非常資深的測(cè)試人員可以做VP,專(zhuān)門(mén)管理某個(gè)產(chǎn)品的測(cè)試工作。這在國(guó)內(nèi)企業(yè)來(lái)說(shuō),幾乎就是不可能的。

            通過(guò)前面的介紹,無(wú)論人員的配置和工具的提供,你可以看出微軟是非常重視測(cè)試的。所以我覺(jué)得如果我們學(xué)習(xí)微軟先進(jìn)的研發(fā)理念,可以從測(cè)試入手,打造必要的測(cè)試管理系統(tǒng),通過(guò)這樣的系統(tǒng),把需求、開(kāi)發(fā)、測(cè)試三個(gè)環(huán)節(jié)融合在一起,讓團(tuán)隊(duì)中所有的人都遵循同樣的研發(fā)思路:需求人員真正理解用戶(hù)的業(yè)務(wù)需要,認(rèn)真研究后形成需求文檔作為產(chǎn)品一個(gè)個(gè)功能的“合同”;開(kāi)發(fā)人員寫(xiě)出設(shè)計(jì)文檔,然后動(dòng)手寫(xiě)代碼;測(cè)試人員理解需求文檔,然后測(cè)試做出來(lái)的功能是否符合最初的設(shè)想。整個(gè)過(guò)程碰到的任何問(wèn)題都要通過(guò)Bug系統(tǒng)來(lái)記錄、跟蹤,相關(guān)人員通過(guò)Bug管理來(lái)商談、溝通相應(yīng)的解決方案。

            這樣通過(guò)Bug管理,逐步統(tǒng)一研發(fā)人員的思維、做事模式,讓整個(gè)團(tuán)隊(duì)可以有效地運(yùn)轉(zhuǎn)起來(lái),并不斷優(yōu)化自己項(xiàng)目的軟件研發(fā)流程,提高產(chǎn)品質(zhì)量,從而使產(chǎn)品可持續(xù)發(fā)展。

            孟巖:看來(lái)你對(duì)于bug管理可真是重視。聽(tīng)說(shuō)你在離開(kāi)微軟后,開(kāi)發(fā)了一個(gè)開(kāi)源項(xiàng)目BugFree,號(hào)稱(chēng)是要全面模擬微軟的bug管理機(jī)制。能介紹一下大致的情況嗎?

            劉振飛:今年四月我加盟朋友的公司開(kāi)始做網(wǎng)站,發(fā)覺(jué)自己已經(jīng)習(xí)慣了微軟的研發(fā)模式,于是建議這幾個(gè)朋友先做一個(gè) “數(shù)字神經(jīng)系統(tǒng)”,其目的是讓一切可以數(shù)字化、文檔化的信息被記錄下來(lái),為公司的進(jìn)一步發(fā)展和決策提供基礎(chǔ)信息支持。

                BugFree 就是其中有關(guān)軟件研發(fā)的Bug管理系統(tǒng)部分。我太了解Bug管理對(duì)軟件研發(fā)的重要性、也對(duì)微軟的Bug系統(tǒng)有了深入掌握,所以需要有一個(gè)類(lèi)似微軟的Bug系統(tǒng)才好開(kāi)展工作。雖然網(wǎng)上有免費(fèi)的Bug管理系統(tǒng)(如Mantis、Bugzilla),但是我看后覺(jué)得都不好使,和我在微軟用的差別太大,上海科泰世紀(jì)公司的 Bug管理系統(tǒng)倒也很像微軟的,但是要花錢(qián)買(mǎi)。琢磨著反正我也這一塊非常熟悉了,何不做一個(gè)出來(lái)自己用?于是決定借鑒微軟的研發(fā)流程和Bug管理工具自己開(kāi)發(fā)一個(gè),以便對(duì)我們開(kāi)發(fā)新網(wǎng)站、聲訊軟件、客戶(hù)端軟件和公司事務(wù)管理中出現(xiàn)的問(wèn)題進(jìn)行有效的跟蹤處理。

            “數(shù)字神經(jīng)系統(tǒng)”中的BugFree是用開(kāi)放源代碼的PHP+MySQL寫(xiě)成、基于瀏覽器方式運(yùn)行的。我以前沒(méi)有任何Linux+Apache+MySQL+PHP的開(kāi)發(fā)經(jīng)驗(yàn),但我很幸運(yùn)的招聘到幾名優(yōu)秀的Web程序員,可以在短短的兩個(gè)月時(shí)間內(nèi)搭建起這樣的系統(tǒng)。其中BugFree是由我的同事王春生開(kāi)發(fā)的,他用了不到一個(gè)月的時(shí)間就把代碼寫(xiě)完,讓我很是驚訝,從而認(rèn)識(shí)到基于Linux的Web開(kāi)發(fā)魅力。之后我們測(cè)試一個(gè)多月,就可以在實(shí)際工作中使用并不斷完善。現(xiàn)在BugFree已經(jīng)成了我們?nèi)粘9ぷ髯钪匾墓ぞ撸總€(gè)員工也都習(xí)慣用Bug來(lái)記錄跟蹤事情,不僅僅是代碼中的缺陷可以上Bug,新的需求、設(shè)計(jì)變化等都可以用這個(gè)Bug管理系統(tǒng)有效的管理起來(lái)。其實(shí)Bug 不僅僅可以用來(lái)記錄軟件中的缺陷,也可以用來(lái)跟蹤公司的日常事務(wù)。比如在公司的網(wǎng)上報(bào)銷(xiāo)系統(tǒng)還沒(méi)有建立之前,我們就用 BugFree來(lái)處理報(bào)銷(xiāo)的事情。甚至,一個(gè)同事給我上了這樣的Bug:你的桌面太亂了,請(qǐng)整理一下J

            命名BugFree 有兩層意思:一是希望軟件中的缺陷越來(lái)越少直到?jīng)]有,F(xiàn)ree嘛;二是表示它是免費(fèi)且開(kāi)放源代碼的,大家可以自由使用傳播。也算為中國(guó)的軟件業(yè)做點(diǎn)小小的貢獻(xiàn),特別的,希望能對(duì)國(guó)內(nèi)中小企業(yè)的研發(fā)流程改進(jìn)、Bug的有效管理提供參考和幫助。

            和微軟內(nèi)部的Raid比較起來(lái),BugFree有如下特點(diǎn):

            (1)Raid是Windows客戶(hù)端軟件,BugFree是基于瀏覽器的。基于此,Raid 有很強(qiáng)大的編輯展示功能,而B(niǎo)ugFree簡(jiǎn)單、方便、易用;

            (2)Raid可以進(jìn)行極其復(fù)雜的組合查詢(xún),BugFree的查詢(xún)功能相對(duì)弱一些,但我覺(jué)得對(duì)中小企業(yè)已經(jīng)夠用了;

            (3)一個(gè)Bug從創(chuàng)建到關(guān)閉這個(gè)“生命周期”的處理過(guò)程,BugFree 全面借鑒Raid的處理流程,處理方法甚至一些詞匯都和Raid一樣 (所以我現(xiàn)在用BugFree處理Bug的感覺(jué)和在微軟時(shí)候基本一樣);

            (4)BugFree 還有一個(gè)獨(dú)創(chuàng)的功能:當(dāng)一個(gè)Bug被指派給你的時(shí)候,系統(tǒng)會(huì)自動(dòng)給你發(fā)一封郵件,告訴你有個(gè)Bug需要你處理,這樣結(jié)合 Email,BugFree被完美使用起來(lái),成為我們現(xiàn)在網(wǎng)站開(kāi)發(fā)、運(yùn)行、維護(hù)必備的工具。我們還增加了兩個(gè)Bug統(tǒng)計(jì)功能:一是每天早上8點(diǎn)鐘每個(gè)同事都會(huì)收到一封Email,告訴他/她頭上還有多少 Bug等待處理;二是每周一中午給所有人發(fā)一封郵件,告知上周Bug的處理情況和到目前為止所有Bug的統(tǒng)計(jì)數(shù)據(jù);

            (5)BugFree程序規(guī)模很小,一個(gè)中等水平的PHP程序員就可以在1~2周內(nèi)看懂所有的代碼,然后就可以根據(jù)自己的需要做相應(yīng)的定制了;

            (6)最最重要是,BugFree 是免費(fèi)并且開(kāi)發(fā)源代碼的。你可以體驗(yàn)到微軟的Bug管理精髓,按自己需要自由地增加功能、修改代碼而不用擔(dān)心版權(quán)問(wèn)題J

            不過(guò)坦率的講,BugFree 僅僅是個(gè)工具而已,重要的是掌握其中蘊(yùn)含的軟件研發(fā)的流程思想,才能用好這個(gè)工具。如果你以前沒(méi)有用過(guò) Bug管理系統(tǒng),那么一開(kāi)始的時(shí)候也許你會(huì)覺(jué)得這個(gè)工具是在浪費(fèi)時(shí)間,因?yàn)橐粋€(gè)測(cè)試人員需要費(fèi)神把發(fā)現(xiàn) Bug的詳細(xì)步驟記錄下來(lái),有時(shí)還要貼一張示意圖,這一切都不如當(dāng)面說(shuō)來(lái)得直接。

            但是使用一段時(shí)間,你會(huì)發(fā)現(xiàn) BugFree很有用,它忠實(shí)的記錄著每個(gè)問(wèn)題的處理過(guò)程,不斷提醒你存在的問(wèn)題,永遠(yuǎn)不會(huì)丟失和忘記。如果你參與過(guò)較大軟件項(xiàng)目或產(chǎn)品的研發(fā),就會(huì)理解它對(duì)軟件可持續(xù)發(fā)展是至關(guān)重要的。而且研發(fā)的規(guī)模越大,BugFree 的作用就會(huì)越大。

            感興趣的朋友,可以到http://www.okooo.com/OpenSource 來(lái)體驗(yàn)、下載最新版的BugFree。

            孟巖:好的,我們下期結(jié)合BugFree來(lái)具體看看一個(gè)軟件開(kāi)發(fā)項(xiàng)目的bug管理應(yīng)該怎么做。

            —發(fā)表在《程序員》雜志2005年第2期38~42頁(yè)的原文—

            孟巖:劉振飛,你好。上一期文章里,我們談到了Bug管理的理念和經(jīng)驗(yàn)。按照我的體會(huì),Bug的控制是一個(gè)管理與技術(shù)相結(jié)合的課題。做好Bug的管理,一方面需要有完善的管理體系和制度,另一方面更需要有一個(gè)堅(jiān)實(shí)的基礎(chǔ)平臺(tái)來(lái)支撐。確切地說(shuō),就是要有一個(gè)比較完善適用的軟件,充當(dāng)Bug管理的中樞神經(jīng)。顯然你是很看重這個(gè)軟件系統(tǒng)的。我想問(wèn)你一個(gè)問(wèn)題,如果沒(méi)有這樣的軟件系統(tǒng),而是單方面強(qiáng)化管理,比如制定完善的流程和制度來(lái)管理Bug,你看這樣可行嗎?

            劉振飛:從我的經(jīng)驗(yàn)來(lái)講,只靠制度而沒(méi)有良好的Bug管理軟件,根本無(wú)法確保Bug管理的有效性,因?yàn)閮H靠這些規(guī)章制度很可能流于形式、走過(guò)場(chǎng)。正如源代碼管理一樣,如果沒(méi)有類(lèi)似CVS或VSS的工具,很難想象一個(gè)較大項(xiàng)目中的源代碼僅僅靠公司的源代碼管理制度和大家的自覺(jué)性,就可以讓多個(gè)程序員之間的不同版本源程序保持同步、不沖突。光有制度是不行的,必須有配套工具來(lái)保證這些制度落到實(shí)處!

            還有,做好 Bug 的管理,應(yīng)該是從高層領(lǐng)導(dǎo)到中間管理層再到基層人員,都從內(nèi)心認(rèn)同其重要性,然后根據(jù)自己公司的實(shí)際情況制定相關(guān)的管理體系和制度,切實(shí)執(zhí)行并逐步形成自己的風(fēng)格。要實(shí)用、不要隨波逐流。不能今天一個(gè)ISO、明天一個(gè)CMM、后天又來(lái)個(gè)6西格碼。工具是思想的載體,再好的管理思想還是要通過(guò)工具來(lái)實(shí)現(xiàn)。購(gòu)買(mǎi)也好、自己開(kāi)發(fā)也好,必須有個(gè) Bug 管理工具作為基礎(chǔ)支撐平臺(tái)。

            孟巖:一個(gè)企業(yè)如果有意建立自己的“Bug管理神經(jīng)系統(tǒng)”,大致可以有三種選擇,一是購(gòu)買(mǎi)成熟的商業(yè)產(chǎn)品,二是選擇類(lèi)似BugFree那樣的開(kāi)源軟件,三是自己開(kāi)發(fā)符合本公司現(xiàn)有架構(gòu)的Bug管理軟件。對(duì)于某些公司來(lái)說(shuō),最后一種模式應(yīng)該是很有吸引力的。你主持了BugFree的開(kāi)發(fā),能否告訴我們,開(kāi)發(fā)一個(gè)Bug管理系統(tǒng)難不難?

            劉振飛:應(yīng)該說(shuō)不難,想自己開(kāi)發(fā)一個(gè)Bug管理系統(tǒng)的朋友,你首先要明確本公司真正的需求是什么,再就是根據(jù)你的需求做出來(lái)后一定要在實(shí)際產(chǎn)品研發(fā)中真正應(yīng)用起來(lái),根據(jù)大家的反饋不斷去完善。

            像我們開(kāi)發(fā)BugFree,從開(kāi)始動(dòng)手寫(xiě)代碼到真正能夠在公司里使用,前后也就兩個(gè)月時(shí)間。為什么能夠這么快做出來(lái)呢?最重要的原因是我把 BugFree的需求真正掌握了。我在微軟天天使用Raid、時(shí)時(shí)刻刻和Bug管理打交道。我是站在微軟這個(gè)巨人的肩上去深刻理解其20多年研發(fā)所總結(jié)出來(lái)的經(jīng)驗(yàn),所以四年下來(lái),不讓我熟悉Bug管理都難J 當(dāng)我決定做 BugFree 的時(shí)候,腦子里很清楚為什么要做、做成什么模樣、應(yīng)該怎么做、做出來(lái)后大家怎么用,每個(gè)環(huán)節(jié)都考慮清楚了。這樣真正實(shí)現(xiàn)的時(shí)候就很快了。

            當(dāng)然僅僅做出來(lái)是不夠的,還要在實(shí)際工作真正使用起來(lái),并根據(jù)大家的實(shí)踐去不斷完善這個(gè)系統(tǒng)。之所以敢于把 BugFree 開(kāi)源出來(lái)展示給更多的朋友,是因?yàn)榻?jīng)過(guò)我們近20人的團(tuán)隊(duì)10個(gè)多月的實(shí)際應(yīng)用,大家一致覺(jué)得它是個(gè)難得的好工具、是日常工作的好幫手,大家工作都離不開(kāi)了。

            不過(guò),現(xiàn)在有不少成熟的Bug管理軟件可以買(mǎi)的到,也有很多開(kāi)源軟件讓你自由挑選。BugFree 是免費(fèi)并且開(kāi)發(fā)源代碼的,你可以體驗(yàn)到微軟的Bug管理精髓,按自己的需要自由地增加功能、修改代碼而不用擔(dān)心版權(quán)問(wèn)題,為什么不試一試?實(shí)在不滿意再動(dòng)手自己造也不遲J

            孟巖:那么去買(mǎi)一個(gè)成熟的商業(yè)產(chǎn)品如何?有什么比較好的選擇嗎?我聽(tīng)說(shuō)科泰世紀(jì)公司在陳榕的領(lǐng)導(dǎo)下也開(kāi)發(fā)了一個(gè)類(lèi)似微軟內(nèi)部使用的Bug管理系統(tǒng),你了解嗎?還有開(kāi)源社區(qū)里很流行的Bugzilla!,你怎么看?

            劉振飛:成熟的Bug管理商業(yè)產(chǎn)品應(yīng)該有不少,比如,IBM提供的Rational ClearQuest、微軟將在VS.NET 2005(Whidbey)中集成的Bug管理系統(tǒng)、上海微創(chuàng)提供的BMS、科泰世紀(jì)《和欣軟件工程管理工具》套裝軟件中的Bug管理系統(tǒng)等等,都應(yīng)該不錯(cuò)。開(kāi)源社區(qū)中,你可以選擇Bugzilla!、Mantis等Bug管理系統(tǒng)。

            老實(shí)講,除了微軟相關(guān)的Bug管理系統(tǒng)之外,其它的我都不熟悉。不過(guò)我認(rèn)為不同的Bug管理系統(tǒng)之間功能上應(yīng)該不會(huì)差別太大,因?yàn)榇蠹叶际菑能浖?shí)踐中總結(jié)出來(lái)的經(jīng)驗(yàn)結(jié)晶,不會(huì)說(shuō)某家有特別獨(dú)到、別家根本想不到的地方。差別之處主要在于價(jià)格、安裝配置、易用性、可定制、能修改源程序等方面。

            在我決定做 BugFree 之前,曾經(jīng)考察過(guò)上面提到的開(kāi)源社區(qū)Bug管理系統(tǒng),但是簡(jiǎn)單研究之后,覺(jué)得和我在微軟用的Raid差別太大、不習(xí)慣;陳榕在微軟工作時(shí)間更長(zhǎng),他們做的系統(tǒng)也是借鑒微軟、最接近我的使用習(xí)慣,但是得花錢(qián)購(gòu)買(mǎi)(盡管比起其它商業(yè)化Bug管理系統(tǒng)而言,價(jià)格不算貴),而且不能根據(jù)我自己的要求隨便更改,所以干脆自己做一個(gè)算了。不管怎么樣,我覺(jué)得多樣性是一件好事,給了大家更多的選擇機(jī)會(huì)。每家公司、項(xiàng)目、人員的狀況都不一樣,都可以根據(jù)自己的具體情況挑選自己喜愛(ài)的Bug管理系統(tǒng)。

            順便說(shuō)一句,通過(guò)我自己做BugFree開(kāi)源的經(jīng)歷,覺(jué)得自由軟件的真正魅力不在于其零價(jià)格,而是其源代碼的完全開(kāi)放,你可以根據(jù)自己的具體情況自由的去修改、去定制,完整的控制整個(gè)系統(tǒng)。

            孟巖:如果有這么一家公司,它接受不了整套的Bug管理制度,打算自己開(kāi)發(fā)一個(gè)Bug管理系統(tǒng),以適應(yīng)自己企業(yè)的需求,讓你給參謀參謀,你覺(jué)得一個(gè)良好可用的Bug管理系統(tǒng),需要有哪些基本功能?

            劉振飛:我覺(jué)得一個(gè)Bug管理系統(tǒng)需要具備以下外部特征:

            1.可以完備的記錄、跟蹤Bug 的一生:從出生(創(chuàng)建新的Bug)、不斷成長(zhǎng)(記錄相關(guān)人員尋找產(chǎn)生Bug的原因的討論過(guò)程)、發(fā)育成熟(找到了一個(gè)處理辦法)到最后死亡(關(guān)閉),同時(shí)也要允許Bug的復(fù)活(問(wèn)題重現(xiàn)),繼續(xù)其生長(zhǎng)過(guò)程。

            2.方便的查詢(xún)功能,快速找到你關(guān)心的 Bug。比如:

            a). 最近N個(gè)指派給我的 Bug

            b). 最近N個(gè)由我創(chuàng)建的 Bug

            c). 各種自定義條件的查詢(xún)

            3.提供各種Bug統(tǒng)計(jì)信息。比如每個(gè)人頭上有多少個(gè)Bug、到目前為止Bug總數(shù)的統(tǒng)計(jì)、最近一周Bug曲線圖等等,視具體需要可以有很多種統(tǒng)計(jì)。

            4.方便的項(xiàng)目和模塊管理,可以有很多項(xiàng)目、每個(gè)項(xiàng)目有多個(gè)模塊,要能夠很方便的增加、刪除、修改。

            5.簡(jiǎn)單的用戶(hù)管理。作為一個(gè)可獨(dú)立使用的系統(tǒng),需要能夠增加、刪除用戶(hù)。當(dāng)然最好的是直接使用公司已有的管理系統(tǒng)中的用戶(hù)認(rèn)證。比如在微軟,只要你登錄公司內(nèi)部網(wǎng)(域)后,你就可以直接使用Raid了,它直接集成了公司的用戶(hù)認(rèn)證,不需要單獨(dú)一套用戶(hù)認(rèn)證系統(tǒng),那樣對(duì)使用者就很不方便,管理起來(lái)也會(huì)比較混亂。

            孟巖:你結(jié)合BugFree具體談?wù)劊@些功能是如何協(xié)同的?開(kāi)發(fā)者、測(cè)試工程師和PM在整個(gè)開(kāi)發(fā)過(guò)程中,是如何圍繞這個(gè)系統(tǒng)運(yùn)轉(zhuǎn)的?

            劉振飛:先從基礎(chǔ)設(shè)施說(shuō)起。首先BugFree有一個(gè)獨(dú)立且簡(jiǎn)單的用戶(hù)管理,可以方便的增刪用戶(hù):

            然后是簡(jiǎn)單的項(xiàng)目/模塊管理,管理員可以方便的增加新的項(xiàng)目、新的模塊,或者更改已有項(xiàng)目/模塊的顯示名字:

            因?yàn)閮H僅有管理員才可以進(jìn)入后臺(tái)管理,所以這兩個(gè)后臺(tái)功能做的比較簡(jiǎn)單。

            這樣定義了項(xiàng)目/模塊和用戶(hù)后,BugFree的用戶(hù)就可以進(jìn)行Bug的跟蹤處理了。舉個(gè)虛擬的場(chǎng)景,林燕鋒、你、我三個(gè)人在一家公司做網(wǎng)站,他是測(cè)試工程師(Tester)、你是開(kāi)發(fā)工程師(Developer)、我是需求定義者(PM),我們?nèi)齻€(gè)負(fù)責(zé)公司網(wǎng)站的新聞?lì)l道:

            [1]. 林燕鋒發(fā)現(xiàn)新聞?lì)l道的后臺(tái)管理中“編輯”功能打開(kāi)速度非常的緩慢,無(wú)法忍受。于是他新建一個(gè)Bug說(shuō)明這個(gè)問(wèn)題,然后指派給我;

            [2]. 我看到這個(gè)Bug后,趕快到新聞?lì)l道的后臺(tái)試用一下,果然很慢。于是我把這個(gè)Bug指派給你,加上我的注釋?zhuān)骸懊蠋r,這項(xiàng)功能使用很頻繁,速度太慢直接影響了我們信息編輯的工作效率。請(qǐng)你研究一下這部分代碼,看如何調(diào)整程序,以加快打開(kāi)速度。”

            [3]. 你看到這個(gè)Bug后,作為這部分功能的實(shí)現(xiàn)者,去認(rèn)真地研究了當(dāng)時(shí)的代碼,經(jīng)過(guò)調(diào)試,發(fā)現(xiàn)是數(shù)據(jù)庫(kù)查詢(xún)方式的問(wèn)題,采用不同的方式之后,新聞編輯功能的速度大大提高了,于是你解掉(Fixed)這個(gè)Bug,并把你發(fā)現(xiàn)的問(wèn)題原因和解決方法做了描述:“不好意思,以前的查詢(xún)方法有點(diǎn)笨,現(xiàn)在已經(jīng)修改了數(shù)據(jù)庫(kù)查詢(xún)方式,加快了瀏覽速度,具體改動(dòng)請(qǐng)參見(jiàn)附件EditNews.php。”因?yàn)閱?wèn)題被解決,這個(gè)Bug會(huì)被自動(dòng)指派給創(chuàng)建者林燕鋒頭上。

            [4]. 林燕鋒看到這個(gè)Bug被Fixed了,趕快去驗(yàn)證了一下,發(fā)現(xiàn)問(wèn)題真的消失了,于是他關(guān)閉這個(gè)Bug,并加上注釋?zhuān)骸疤昧耍瑒偛庞昧艘幌拢俣却_實(shí)快了很多。我代表信息編輯感謝你老兄的工作啊!:-)”

            你看這樣做,BugFree就非常完整地記錄了Bug的一生:如何發(fā)現(xiàn)(創(chuàng)建Bug)、不斷討論(編輯Bug)、找到原因(解決Bug)到最后關(guān)閉它。這樣開(kāi)發(fā)工程師、測(cè)試工程師和PM在整個(gè)開(kāi)發(fā)過(guò)程中,都被一個(gè)個(gè)情況各異的Bug們牽著鼻子,密切配合,不斷發(fā)現(xiàn)問(wèn)題、研究可能的原因、找到處理辦法、驗(yàn)證解決方法是否真的湊效。BugFree 讓所有項(xiàng)目/產(chǎn)品的研發(fā)參與者圍著它轉(zhuǎn),忠實(shí)的記錄了所有被發(fā)現(xiàn)問(wèn)題的討論處理過(guò)程,即使時(shí)間過(guò)了很久、我們?nèi)齻€(gè)都離開(kāi)了這家公司,但當(dāng)時(shí)我們處理的思路被保留下來(lái)了,后面接手的同事可以完整無(wú)誤的看到全部的討論過(guò)程,就像有臺(tái)錄像機(jī)把這個(gè)過(guò)程錄下來(lái)一樣。

            孟巖:從內(nèi)部來(lái)看,BugFree的架構(gòu)是怎么樣的?

            劉振飛:BugFree 是用 PHP+MySQL 寫(xiě)成的。首先我們定義了七個(gè)相關(guān)數(shù)據(jù)表:

            - BugProject: 項(xiàng)目表

            - BugModule: 項(xiàng)目中的模塊表

            - BugInfo:      Bug基本信息表

            - BugHistory: Bug處理過(guò)程的歷史記錄表

            - BugFile:        Bug相關(guān)附件表

            - BugQuery:   Bug查詢(xún)條件表

            - BugUser:      Bug的簡(jiǎn)單用戶(hù)表

            程序代碼也是按照前面介紹的Bug管理功能展開(kāi)的,基本上一個(gè)功能對(duì)應(yīng)一個(gè)PHP文件,比如:

            ● Bug的處理過(guò)程

            - AddBug.php:             加入一個(gè)新Bug

            - EditBugForm.php:    編輯一個(gè)Bug的信息

            - ResolveBug.php:       解決一個(gè)Bug

            - ActivateBug.php:      激活一個(gè)Bug

            - CloseBug.php:           關(guān)閉一個(gè)Bug

            ● Bug的查詢(xún)

            - QueryBug.php:          查詢(xún)符合條件的Bug

            - SaveQuery.php:        保存用戶(hù)定義的查詢(xún)條件

            - DelQuery.php:           刪除一個(gè)用戶(hù)定義的查詢(xún)條件

            ● Bug的統(tǒng)計(jì)自動(dòng)通知

            - NoticeBug.php:         發(fā)信通知每個(gè)用戶(hù)的Bug情況

            - StatBug.php:             發(fā)信給所有人告知當(dāng)前Bug統(tǒng)計(jì)情況

            BugFree 中使用Smarty技術(shù)把PHP代碼和HTML隔離開(kāi),每個(gè)涉及到界面的.php文件,都有一個(gè)對(duì)應(yīng)的在Template目錄下的.tpl文件,這樣代碼結(jié)構(gòu)就非常清晰,很容易看懂、維護(hù)和添加新的功能。

            主要目錄結(jié)構(gòu)如下:

            \                   -     根目錄下主要存放上述Bug一生處理流程、查詢(xún)等功能文件

            Admin\        -     后臺(tái)管理對(duì)應(yīng)的文件

            BugFile\       -     存放Bug中的附件

            Compile\     -     存放Smarty編譯后的文件

            Document\ -     BugFree 的各種說(shuō)明文檔

            Image\        -     BugFree 中用到的各種圖片

            Include\      -      公用文件

            JS\               -     用到的JavaScript文件

            Shell\           -      存放需要定時(shí)執(zhí)行的文件

            Template\   -     所有界面模板文件(.tpl)

                除去ADO、Smarty等第三方文件,BugFree 自身也就是由30多個(gè)PHP文件組成。更詳細(xì)的說(shuō)明請(qǐng)參看Document\FileList.txt (代碼文件結(jié)構(gòu))。

            所以你看,BugFree 的架構(gòu)其實(shí)非常簡(jiǎn)單,代碼量也不大。想探個(gè)究竟的朋友,只要明白了表的結(jié)構(gòu),然后按圖索驥,根據(jù)功能逐個(gè)查看對(duì)應(yīng)的代碼文件就可以了。PHP 程序的復(fù)雜度要遠(yuǎn)小于C/C++,很直觀。我覺(jué)得一個(gè)中等水平的 PHP程序員就可以在1~2周內(nèi)看懂所有的代碼,然后就可以根據(jù)需要做相應(yīng)的定制了。BugFree 僅僅是個(gè)小工具而已,沒(méi)有什么神秘的。

            孟巖:看來(lái)BugFree的設(shè)計(jì)考慮是相當(dāng)細(xì)致的。不過(guò)很多人都抱怨這個(gè)用PHP編寫(xiě)的軟件不容易配置,尤其是在Windows環(huán)境下。你能否簡(jiǎn)單地給大家介紹一下BugFree的配置和部署方法?

            劉振飛:上一期文章發(fā)表后陸續(xù)收到一些網(wǎng)友的Email,反映的主要問(wèn)題是 BugFree 在 Windows平臺(tái)上的安裝問(wèn)題,而Linux平臺(tái)上似乎很少人抱怨。這從一個(gè)側(cè)面說(shuō)明在Linux上大家已經(jīng)習(xí)慣自己動(dòng)手配置、有問(wèn)題自己能找到解決辦法J

            坦率的講,因?yàn)闀r(shí)間、精力、資源有限,目前我們對(duì) BugFree的安裝配置這一塊的測(cè)試做的很不夠,所以還要請(qǐng)網(wǎng)友諒解。我也是通過(guò)這個(gè)軟件,覺(jué)得做好開(kāi)源項(xiàng)目真的很不容易,需要付出巨大的努力,因而很佩服那些為開(kāi)源社區(qū)貢獻(xiàn)優(yōu)秀軟件的人們。

            從反饋的情況來(lái)看,我想主要的原因有三個(gè):

            [1]. 運(yùn)行環(huán)境的版本問(wèn)題,比如PHP、MySQL的版本

            [2]. 程序路徑問(wèn)題

            [3]. PHP 的配置參數(shù)

            目前經(jīng)過(guò)我們實(shí)際測(cè)試的工作環(huán)境有:

            ●  PHP 4.3.8和MySQL 4.0.17 (基于RedHat 9 + Apache 1.3.x)

            ●  EasyPHP 1.7 (我自己在Windows上測(cè)試過(guò))

            其他環(huán)境,如IIS、Apache2、PHP5等,還沒(méi)有測(cè)試過(guò)。在Window上使用BugFree需要改動(dòng)PHP.ini中的下述參數(shù):

                    allow_call_time_pass_reference = On

                    error_reporting = E_ALL & ~E_NOTICE

                    register_globals = On

                根據(jù)大家的意見(jiàn),我特別寫(xiě)了一份文檔“在 Windows 平臺(tái)上安裝 BugFree 的詳細(xì)步驟”,公布在 http://www.okooo.com/OpenSource,供大家參考。

            若有朋友成功嘗試過(guò)其他版本的運(yùn)行環(huán)境,歡迎你把詳細(xì)步驟整理出來(lái)發(fā)送給我,這樣我可以共享給所有網(wǎng)友。這就是開(kāi)源的好處:和感興趣的熱心朋友們一起不斷完善 BugFree。

            孟巖:我記得BugFree 1.0開(kāi)發(fā)出來(lái)以后,你特別興奮,跟我說(shuō)這個(gè)系統(tǒng)已經(jīng)達(dá)到了微軟內(nèi)部系統(tǒng)的水準(zhǔn)。不過(guò)馬上你就開(kāi)始做2.0版。2.0有什么大的改進(jìn)嗎?是你的1.0版還不夠完善,還是說(shuō)你對(duì)于Bug管理有了新的認(rèn)識(shí)?

            劉振飛:前面提過(guò),BugFree 僅僅是個(gè)小小的Bug管理工具而已,所以第一版發(fā)布后我覺(jué)得從1.0計(jì)數(shù)有點(diǎn)不好意思,那么龐大的Apache才到2.0了嘛。所以我決定 BugFree 的版本從0.1計(jì)數(shù),慢慢往上加J

                   BugFree 0.1版是在2004-10-11正式公開(kāi)的。在我們內(nèi)部使用過(guò)程中,逐步累積了不少新的功能需求一直沒(méi)有來(lái)得及添加,而且 Ver 0.1主要有兩個(gè)不足:

            [1]. 最初的代碼是10個(gè)月前寫(xiě)的,有很多不規(guī)范之處。而且PHP代碼和HTML代碼混在一起,很難閱讀和維護(hù);

            [2]. 原先的界面看起來(lái)不是很美觀,感覺(jué)有點(diǎn)局促。所以我和負(fù)責(zé)編程的朋友王春生認(rèn)真討論后,決定重新書(shū)寫(xiě) BugFree 的代碼,解決已知的若干小Bug,并增加了很多新功能。王春生寫(xiě)了程序,同時(shí)在我們內(nèi)部不斷測(cè)試使用。終于我可以按計(jì)劃在2004-12-15公布出來(lái)了這個(gè)全新的版本 0.2 版。

            Ver 0.2的主要的改動(dòng)有:

            n 用Smarty技術(shù)把HTML和PHP代碼分開(kāi),代碼很清晰,易于維護(hù)

            n 多語(yǔ)言支持,目前你可以選擇英文界面。增加一個(gè)新語(yǔ)言也很容易,就是增加一個(gè)對(duì)應(yīng)的文件包含所有的字符串而已(由此BugFree可以走出國(guó)門(mén)了J)

            n 系統(tǒng)配置很靈活,可以根據(jù)使用情況自己定義

            n 全新的界面,顯示空間更大,更加大氣

            n 增加BugFree的簡(jiǎn)單用戶(hù)管理

            n 符合你自定義查詢(xún)條件的Bug改動(dòng)時(shí),會(huì)自動(dòng)給你發(fā)信

            n Bug信息中增加了兩個(gè)字段:操作系統(tǒng)、抄送。“抄送”的功能表示這個(gè)Bug有變化時(shí),也會(huì)發(fā)送給這些人

            n 增強(qiáng)BugFree的查詢(xún)功能

            n 增加Bug的多任務(wù)分派功能,新建一個(gè)Bug時(shí)可以同時(shí)指派給多個(gè)人,這對(duì)事務(wù)跟蹤和數(shù)據(jù)校對(duì)類(lèi)問(wèn)題非常有用

            n 可以添加多個(gè)附件

            n 改變Severity的顯示方式

            n 有快捷鍵支持

            n 用Pear中標(biāo)準(zhǔn)的樹(shù)狀列表TreeMenu

            n 使用ADO訪問(wèn)數(shù)據(jù)庫(kù)

            目前這個(gè)0.2版的代碼質(zhì)量和用戶(hù)界面都有了很大改進(jìn),但其中的Bug管理思想和0.1版相比沒(méi)有任何變化,只不過(guò)代碼更清晰、界面更漂亮、使用起來(lái)更方便了。

            —發(fā)表在《程序員》雜志2005年第3期46~49頁(yè)的原文—

            孟巖:劉振飛,你好。在這個(gè)系列的前面兩篇文章里,我們先是探討了Bug管理的理念和意義,然后又從軟件系統(tǒng)的構(gòu)建角度更進(jìn)一步探討了Bug管理技術(shù)層面的問(wèn)題。這次我想我們應(yīng)該來(lái)探討B(tài)ug管理中“人”的問(wèn)題了。當(dāng)然,所謂人的問(wèn)題,就是管理制度的問(wèn)題。有了先進(jìn)的理念、堅(jiān)實(shí)的軟硬件基礎(chǔ),還需要有相應(yīng)的管理制度與之相配套,否則Bug管理就只是一個(gè)擺設(shè)。你認(rèn)為一個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)當(dāng)制定嚴(yán)格的Bug管理制度嗎?沒(méi)有一個(gè)相配套的管理制度,會(huì)有怎樣的后果?

            劉振飛:我們?cè)诘谝黄恼轮杏懻撨^(guò),微軟的軟件研發(fā)可以總結(jié)為以下兩點(diǎn):

            (1).需求(PM)、開(kāi)發(fā)(Dev)、測(cè)試(Test)三權(quán)分立,分工明確、各司其職

            (2).每個(gè)產(chǎn)品的每個(gè)版本遵循同樣的模式:流程+工具+人,并不斷反饋(以改進(jìn)流程、升級(jí)工具并提高團(tuán)隊(duì)/員工的能力)

            回到你這個(gè)問(wèn)題,Bug管理制度其實(shí)就是定義Bug處理流程,有了好用的工具之后,我們需要這樣的流程去明確指導(dǎo)如何對(duì)Bug進(jìn)行管理。但是一個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)當(dāng)制定嚴(yán)格的Bug管理制度嗎?坦率的講,不需要。嚴(yán)格的制度在軟件行業(yè)就意味著教條、負(fù)擔(dān)和不切實(shí)際,讓一幫聰明的大腦陷入無(wú)邊無(wú)際的條條框框不能自拔,明知道是包袱還要去背、是火坑還要去跳,直到有一天終于受不了,最終結(jié)果不外乎三個(gè):過(guò)勞累到、對(duì)付一天是一天或者干脆辭職換個(gè)工作。因此我覺(jué)得應(yīng)該用“Bug管理指導(dǎo)原則(guidance)”來(lái)替換“Bug管理規(guī)章制度(rules & regulations)”這個(gè)詞。

            所以我認(rèn)為Bug管理就是去制定適合自己團(tuán)隊(duì)實(shí)際情況的Bug處理流程和指導(dǎo)原則,制定者(管理層)應(yīng)該起到真正指導(dǎo)的作用,他們要非常清楚下面這些問(wèn)題的答案:

            l 我們需要測(cè)試什么:哪些軟件(網(wǎng)站)、哪些模塊

            l 測(cè)試人員的分工:什么人負(fù)責(zé)什么模塊

            l 測(cè)試工具和環(huán)境:巧婦難為無(wú)米之炊。你不能安排一個(gè)測(cè)試人員去測(cè)某個(gè)模塊,而沒(méi)有給他提供必要的軟硬件環(huán)境

            l 測(cè)試的進(jìn)度安排:干這一行加班是不可避免的,但是需要有度,人不是機(jī)器,長(zhǎng)期的勞累誰(shuí)都扛不住。如果時(shí)間很緊,那只能去抓重點(diǎn),要有所不為

            l 發(fā)現(xiàn)一個(gè)問(wèn)題時(shí),如何用Bug管理工具去創(chuàng)建一個(gè)Bug:標(biāo)題如何寫(xiě)、嚴(yán)重程度、詳細(xì)重現(xiàn)步驟、錯(cuò)誤狀況、期望結(jié)果、現(xiàn)場(chǎng)附件、這個(gè)Bug去分配給誰(shuí)

            l 當(dāng)一個(gè)Bug被處理掉時(shí),測(cè)試人員應(yīng)該如何驗(yàn)證并關(guān)閉

            l 當(dāng)一個(gè)Bug的解決方法有爭(zhēng)議時(shí),誰(shuí)來(lái)仲裁

            l 定期的Bug提醒,比如當(dāng)前每個(gè)人的Bug情況

            l Bug狀態(tài)報(bào)告:Bug數(shù)目的變化趨勢(shì)及我們應(yīng)該采取的行動(dòng)

            l 階段性的總結(jié)反饋:哪些地方我們做的好,哪些做的不好,為什么、如何改進(jìn)

            l … …

                沒(méi)有這樣配套的Bug處理流程和指導(dǎo)原則,再好的工具都將會(huì)是一個(gè)擺設(shè)、甚至是添亂的工具。就像一個(gè)樂(lè)隊(duì)有非常出色的各種樂(lè)器,但樂(lè)隊(duì)指揮是個(gè)外行(就像成龍電影《雙龍會(huì)》一個(gè)鏡頭),那么演奏出來(lái)的一定會(huì)是混亂的樂(lè)章。

            孟巖:根據(jù)你的了解,國(guó)內(nèi)中小型軟件開(kāi)發(fā)企業(yè)中Bug管理制度方面有什么缺陷?主要的問(wèn)題是什么?

            劉振飛:我想目前中小軟件企業(yè)的Bug管理主要存在的問(wèn)題是:

            1. 不重視測(cè)試,認(rèn)為測(cè)試人員無(wú)關(guān)大局,隨便測(cè)測(cè)就行了。當(dāng)然這種情況正在逐步好轉(zhuǎn),因?yàn)榇蠹叶奸_(kāi)始意識(shí)到了測(cè)試重要性;

            2. 有些企業(yè),認(rèn)識(shí)到測(cè)試的重要性后,卻走向極端 --- 制定了極其嚴(yán)格的規(guī)章制度:無(wú)數(shù)瑣碎、難用的測(cè)試工單、非常嚴(yán)密的一級(jí)級(jí)權(quán)力控制,在Bug管理系統(tǒng)中誰(shuí)能看到什么信息、誰(shuí)可以解決、誰(shuí)可以關(guān)閉等等,非常嚴(yán)格。一個(gè)需要靈活變化的工作變成了工業(yè)制造車(chē)間流水線的一個(gè)工種,讓測(cè)試人員陷入制度的泥潭,不能把主要精力投入測(cè)試工作本身;

            3. 管理層自身沒(méi)有制訂明確的Bug處理流程及相關(guān)指導(dǎo)原則,讓測(cè)試人員在黑暗中摸索,走到哪兒算哪兒,不能給他們以切實(shí)有效的指導(dǎo)和幫助;

            4. 管理層把軟件的質(zhì)量保證責(zé)任一股腦推到測(cè)試人員身上,任何問(wèn)題都去指責(zé)下面的測(cè)試人員,殊不知測(cè)試僅僅是研發(fā)的一個(gè)環(huán)節(jié),前面需求、開(kāi)發(fā)兩個(gè)環(huán)節(jié)如果沒(méi)有好好做,測(cè)試將會(huì)極其被動(dòng),比如:沒(méi)有需求文檔,怎么測(cè)試?這是一個(gè)系統(tǒng)工程;

            5. 錯(cuò)誤的考核標(biāo)準(zhǔn):管理層用Bug個(gè)數(shù)去衡量測(cè)試人員的工作成績(jī),誰(shuí)發(fā)現(xiàn)的Bug多誰(shuí)的工作就做的好。這是一個(gè)十分危險(xiǎn)的傾向,將直接導(dǎo)致測(cè)試人員去重視Bug個(gè)數(shù)這個(gè)數(shù)字本身、而不是產(chǎn)品的真正質(zhì)量。

            遺憾的是,即使在微軟內(nèi)部,各個(gè)地方研發(fā)中心也有這個(gè)傾向,比如經(jīng)常出現(xiàn)大陸、臺(tái)灣、韓國(guó)、日本四個(gè)地方某個(gè)軟件的測(cè)試人員虎視眈眈的在半夜盯著某個(gè)版本的問(wèn)世,一旦下載到最新的Build,馬上安裝測(cè)試,把表面上的Bug趕快“搶”到、記錄進(jìn)Raid/Product Studio中,然后心滿意足的打車(chē)回去,很高興比另外三個(gè)對(duì)手多上了幾個(gè)Bug。我記得微軟內(nèi)部有個(gè)專(zhuān)門(mén)的培訓(xùn)曾認(rèn)真的研討過(guò)這個(gè)問(wèn)題:不能用Bug數(shù)目來(lái)衡量Tester的工作。但是微軟太大了,當(dāng)某地方或部門(mén)不能找到更合適的標(biāo)準(zhǔn)的時(shí)候,Bug數(shù)目本身就是最快捷的答案了。

            這是我現(xiàn)在經(jīng)常思考的問(wèn)題之一。

            孟巖:能否請(qǐng)你比較系統(tǒng)地闡述一下微軟的Bug管理制度?

            劉振飛:其實(shí)前兩篇文章已經(jīng)陸續(xù)談過(guò)微軟的Bug管理指導(dǎo)原則了,這里系統(tǒng)的總結(jié)一下:

            u 管理層要求所有的Bug都要通過(guò)Raid(Product Studio)來(lái)跟蹤處理。這個(gè)看起來(lái)很簡(jiǎn)單的Bug管理工具是每個(gè)員工和其他同事有效協(xié)作的重要保證

            u 每個(gè)產(chǎn)品都細(xì)分模塊(Area,SubArea),每個(gè)模塊都有明確的需求定義者(PM)、開(kāi)發(fā)工程師(Dev)和測(cè)試工程師(Tester)這三個(gè)角色。一個(gè)問(wèn)題出現(xiàn)了,一定會(huì)落實(shí)到某個(gè)人的頭上去跟蹤處理,絕不能出現(xiàn)“無(wú)主”的Bug

            u PM負(fù)責(zé)書(shū)寫(xiě)的Spec是這個(gè)功能特征(Feature)的“合同”,以此Spec來(lái)指導(dǎo)開(kāi)發(fā)和測(cè)試。當(dāng)Dev和Tester就某個(gè)Bug發(fā)生爭(zhēng)執(zhí)的時(shí)候,PM負(fù)責(zé)給出一個(gè)明確的說(shuō)明

            u 測(cè)試不僅僅是Tester的事情,盡管那是他們的專(zhuān)職工作。研發(fā)團(tuán)隊(duì)中的所有人每發(fā)現(xiàn)產(chǎn)品的問(wèn)題時(shí)候,都有義務(wù)把這個(gè)問(wèn)題告知負(fù)責(zé)這個(gè)模塊的測(cè)試人員去記錄跟蹤這個(gè)Bug,或者干脆自己新建一個(gè)Bug來(lái)跟蹤

            u 你可以創(chuàng)建一個(gè)Bug指派給自己,以跟蹤某件事的處理。比如開(kāi)發(fā)人員把源代碼中的某處問(wèn)題用Bug記錄下來(lái),以后抽出時(shí)間來(lái)進(jìn)行處理

            u 團(tuán)隊(duì)中的所有人都可以創(chuàng)建、指派和更改Bug的狀態(tài)

            u 當(dāng)你創(chuàng)建一個(gè)Bug的時(shí)候,描述一定要足夠詳細(xì),讓下面處理Bug的人和其他關(guān)心這個(gè)Bug的同事能夠通過(guò)Bug描述準(zhǔn)確的重現(xiàn)這個(gè)問(wèn)題,而不是猜測(cè)某些步驟或者跑過(guò)來(lái)當(dāng)面問(wèn)你

            u 通常一個(gè)Bug的處理過(guò)程是這樣的:

            1. Tester發(fā)現(xiàn)一個(gè)問(wèn)題,到Raid中創(chuàng)建一個(gè)Bug,描述這個(gè)Bug的詳細(xì)信息,比如重現(xiàn)步驟(Repro Step)、錯(cuò)誤結(jié)果(Result)、期望的改動(dòng)(Expect)、運(yùn)行版本等;然后把這個(gè)Bug指派給負(fù)責(zé)該模塊的Dev Lead

            2. Dev Lead判斷后把這個(gè)Bug指派給某個(gè)特定的Dev

            3. Dev處理掉這個(gè)Bug并返還給原Tester,或者請(qǐng)求PM給出一個(gè)澄清說(shuō)明

            u 管理層通過(guò)Raid來(lái)跟蹤整體進(jìn)度,以及每個(gè)員工、團(tuán)隊(duì)在其中的貢獻(xiàn)

            u 有專(zhuān)人定期給相關(guān)同事發(fā)出Bug的狀態(tài)報(bào)告

            u 每個(gè)人都可以方便的自助查詢(xún)Bug的分布處理情況。Bug管理系統(tǒng)對(duì)所有的團(tuán)隊(duì)成員都是毫無(wú)保留的敞開(kāi)大門(mén)(除了你不能刪除Bug,另外所有的操作都被忠實(shí)的紀(jì)錄下來(lái))

            u 隨著時(shí)間的推移,管理層要逐步給出明確的Bug解決指導(dǎo)方針:哪些Bug是可以不理睬的(Won’t Fix),哪些是可以推遲到下個(gè)版本處理(Postponed)。比如在最終Build到來(lái)前的幾周,也許非常嚴(yán)重的Bug,像數(shù)據(jù)丟失、程序崩潰之類(lèi)的也都要推遲到下個(gè)版本再解決了。

            u 當(dāng)一線員工出現(xiàn)爭(zhēng)執(zhí)、無(wú)法達(dá)成一致意見(jiàn)的時(shí)候(盡管這種情況不多見(jiàn)),管理層要快速給出處理意見(jiàn)等等。

            孟巖:在微軟,如果違反了這些制度,會(huì)有什么后果?

            劉振飛:哈,這個(gè)問(wèn)題有意思。我還真沒(méi)有仔細(xì)考慮過(guò),如果一個(gè)研發(fā)人員在微軟違反了這些“Bug管理制度”,會(huì)有什么結(jié)果?他一定不會(huì)因此被開(kāi)除J,不過(guò)他肯定會(huì)努力學(xué)習(xí)和適應(yīng)這些Bug處理原則,他的直接上司也會(huì)指導(dǎo)他如何做才是正確的。

            讓我們換個(gè)角度去考慮這個(gè)問(wèn)題。Bug管理是研發(fā)管理的有機(jī)組成部分,而研發(fā)管理是微軟企業(yè)管理極其重要的部分,只有好的企業(yè)管理才能把業(yè)務(wù)做好,業(yè)務(wù)做好了,公司就有好的利潤(rùn),這樣公司發(fā)展了員工也跟著賺錢(qián)了。微軟可以很奢侈的在眾多求職者中招聘到合適的員工,這個(gè)員工進(jìn)來(lái)后不可能對(duì)微軟近30年研發(fā)總結(jié)出來(lái)的“Bug管理制度”發(fā)生抵觸情緒、甚至有意去違反破壞這些處理原則,他所能夠做的只能是快速去體會(huì)、理解、適應(yīng)這些流程和指導(dǎo)原則。

            我曾聽(tīng)到這樣一個(gè)故事:國(guó)內(nèi)某大型軟件企業(yè)研發(fā)老總訪問(wèn)微軟,詢(xún)問(wèn)如何進(jìn)行研發(fā)管理,微軟一位研發(fā)高層答曰:很簡(jiǎn)單啊,定期看看Email發(fā)來(lái)的Bug報(bào)告和曲線圖,然后通過(guò)Email告訴各軟件負(fù)責(zé)人,下一步應(yīng)該注意哪些問(wèn)題就可以了。我們國(guó)企老總很愕然,百思不得其解。如果沒(méi)有相關(guān)的軟件研發(fā)流程和指導(dǎo)原則、配套工具以及熟悉這些的員工,管理層無(wú)論如何達(dá)不到這樣的“輕松自在”--- 用Email進(jìn)行研發(fā)管理。

            有時(shí)候想,我們需要“拿來(lái)主義”。與其羨慕Bill Gates的錢(qián)袋、痛罵微軟帝國(guó)的“霸權(quán)”,還不如好好研究學(xué)習(xí)人家的研發(fā)管理和企業(yè)管理:如何把幾萬(wàn)個(gè)聰明的腦殼有效的管理起來(lái)?如何讓分布全球的幾千名研發(fā)人員每隔上18個(gè)月生產(chǎn)出新版本的Office和Windows?為什么我們上百人、幾十人甚至幾個(gè)人的軟件企業(yè)就管理不好?

            孟巖:在整個(gè)Bug管理的系統(tǒng)中,測(cè)試人員是非常關(guān)鍵的一個(gè)角色。以前測(cè)試人員在團(tuán)隊(duì)里的形象好像是灰色的,這兩年各公司都開(kāi)始重視測(cè)試工作和專(zhuān)業(yè)測(cè)試人員的培養(yǎng)。你覺(jué)得測(cè)試人員在Bug管理體系中處在一個(gè)怎樣的位置上?測(cè)試人員與開(kāi)發(fā)人員之間的關(guān)系如何?

            劉振飛:測(cè)試人員在整個(gè)軟件研發(fā)管理體系中都是一個(gè)十分重要的、無(wú)法替換與省略的角色。經(jīng)過(guò)多年產(chǎn)品研發(fā)的體會(huì),我現(xiàn)在無(wú)法想象一個(gè)軟件企業(yè)沒(méi)有或者不重視測(cè)試和測(cè)試人員。就像沒(méi)有經(jīng)過(guò)質(zhì)檢人員檢驗(yàn)過(guò)的流水線生產(chǎn)出來(lái)的電視機(jī),能出廠嗎?會(huì)有人買(mǎi)嗎?

            測(cè)試人員和開(kāi)發(fā)人員是對(duì)立統(tǒng)一的關(guān)系。說(shuō)對(duì)立,是因?yàn)闇y(cè)試人員需要專(zhuān)門(mén)挑出開(kāi)發(fā)人員做出來(lái)的功能模塊的毛病、發(fā)現(xiàn)其考慮不周的地方;說(shuō)統(tǒng)一,這兩個(gè)角色需要努力協(xié)同工作,把負(fù)責(zé)的模塊做好。只有每一個(gè)模塊問(wèn)題減少了,整個(gè)產(chǎn)品才能提高質(zhì)量;好質(zhì)量才有好價(jià)錢(qián);公司賺到錢(qián)了大家才能有好收入。所以開(kāi)發(fā)和測(cè)試是同一戰(zhàn)壕里的戰(zhàn)友,只有共同努力才行。

            孟巖:現(xiàn)在很多開(kāi)發(fā)工程方法提倡“全員測(cè)試”,很有點(diǎn)類(lèi)似日本企業(yè)里流行的“全員質(zhì)量管理”。特別是單元測(cè)試已經(jīng)將功能性測(cè)試變成開(kāi)發(fā)人員的一項(xiàng)職責(zé),這是否與Bug管理體系有沖突?全員測(cè)試是否會(huì)導(dǎo)致責(zé)任的不清晰?你覺(jué)得單元測(cè)試與Bug管理是否矛盾?能否協(xié)同工作?

            劉振飛:一點(diǎn)也不矛盾。開(kāi)發(fā)人員把一個(gè)功能模塊送去測(cè)試的時(shí)候,應(yīng)該已經(jīng)把最基本、最常用的功能邏輯測(cè)試通過(guò),否則測(cè)試人員發(fā)現(xiàn)這些基本問(wèn)題后,很快還得退回去給開(kāi)發(fā)人員,這樣雙方都費(fèi)時(shí)費(fèi)神。

            我所理解的“全員測(cè)試”就是每個(gè)人當(dāng)發(fā)現(xiàn)問(wèn)題的時(shí)候,不能說(shuō)“這是測(cè)試/研發(fā)人員的事情”而置之不理,而應(yīng)該把這個(gè)問(wèn)題記錄到Bug管理工具中,或者告訴相關(guān)的測(cè)試人員去跟蹤。產(chǎn)品是公司的產(chǎn)品,是大家共同的飯碗。當(dāng)然測(cè)試人員的專(zhuān)職工作就是去分模塊測(cè)試,而且測(cè)試得有計(jì)劃、有條理、有總結(jié)歸納;別的同事可能不是那么系統(tǒng)化而已。

            在Office 2003(Office 11)發(fā)布后啟動(dòng)的下一版Office 12研發(fā)伊始,微軟Office組的管理層就根據(jù)大家的反饋,啟動(dòng)了一項(xiàng)叫做“Engineering Excellence”的活動(dòng),全面總結(jié)上一版研發(fā)流程中經(jīng)驗(yàn)教訓(xùn),提出了十多條大的、具體的過(guò)程改進(jìn)辦法全面執(zhí)行,其中有一條叫做“Feature Crews”,就是加強(qiáng)測(cè)試:在把源代碼check in到代碼庫(kù)之前,就開(kāi)始測(cè)試一個(gè)功能特征(Feature)。該Feature對(duì)應(yīng)的PM、Dev、Tester緊密合作在本地Build上,當(dāng)一個(gè)Feature進(jìn)入總產(chǎn)品代碼庫(kù)的時(shí)候應(yīng)該經(jīng)過(guò)認(rèn)真測(cè)試、非常穩(wěn)定可靠,就是說(shuō)把測(cè)試工作大大往前(開(kāi)發(fā)階段)提了。當(dāng)然Office組有專(zhuān)人立即設(shè)計(jì)、開(kāi)發(fā)相關(guān)的支撐工具去保證“Feature Crews”這個(gè)新方法能夠順利執(zhí)行。當(dāng)我第一次看到這份“Engineering Excellence”活動(dòng)說(shuō)明時(shí),真是佩服得五體投地!!很多像這樣具有優(yōu)秀管理、執(zhí)行能力的各個(gè)小組織,組成了微軟公司優(yōu)秀的大團(tuán)隊(duì)。

            孟巖:這樣吧,假設(shè)你領(lǐng)到一個(gè)團(tuán)隊(duì)進(jìn)行軟件開(kāi)發(fā),以BugFree為基礎(chǔ)進(jìn)行Bug管理,能否簡(jiǎn)單地介紹一下你打算制定怎樣的Bug管理協(xié)作制度?比如,有哪幾個(gè)角色,角色之間如何協(xié)作,那些規(guī)定需要作為硬性要求保證執(zhí)行,如何保證等等。

            劉振飛:我現(xiàn)在還真是正在帶領(lǐng)著一個(gè)團(tuán)隊(duì)去這么干(北京金環(huán)天朗通信技術(shù)發(fā)展有限公司 http://www.newsky.cn/)。我所計(jì)劃的Bug管理指導(dǎo)原則是:

            ü 產(chǎn)品(WAP、彩e或彩信雜志、網(wǎng)站等)中碰到的所有問(wèn)題都要用BugFree來(lái)跟蹤處理

            ü 有一個(gè)專(zhuān)職的測(cè)試小組

            ü 團(tuán)隊(duì)中每個(gè)同事發(fā)現(xiàn)一個(gè)問(wèn)題時(shí),都有義務(wù)去告知相關(guān)的人員或者直接創(chuàng)建一個(gè)Bug

            ü 需求、開(kāi)發(fā)、測(cè)試三個(gè)角色的定位要非常明確。特別的,提出需求的人要把需求認(rèn)真考慮好、細(xì)化成文檔,然后才能提交正式開(kāi)發(fā)、測(cè)試

            ü 發(fā)現(xiàn)一個(gè)Bug時(shí),測(cè)試人員提交給某個(gè)開(kāi)發(fā)小組長(zhǎng),他來(lái)負(fù)責(zé)指派給具體的開(kāi)發(fā)人員;產(chǎn)生爭(zhēng)議的時(shí)候由需求定義者來(lái)出面說(shuō)明;“矛盾”很大時(shí)我來(lái)協(xié)調(diào)和仲裁。Bug的處理過(guò)程都要用BugFree記錄下來(lái):

            ü 每天系統(tǒng)自動(dòng)通知頭上有Bug的人自己還有幾個(gè)問(wèn)題。我會(huì)檢查這些Bug,看到不合適的地方就去添加我的意見(jiàn)

            ü 每周系統(tǒng)自動(dòng)通知所有人前一階段Bug的整體情況;同時(shí)測(cè)試小組要匯總上周的Bug測(cè)試情況,告訴團(tuán)隊(duì)中所有同事哪些模塊容易出問(wèn)題、主要有哪些類(lèi)型的問(wèn)題

            上面這些我能夠作為“硬性要求”的,只能是前兩條:

            ? 任何人再向開(kāi)發(fā)人員反映問(wèn)題的時(shí)候,開(kāi)發(fā)人員會(huì)告訴他們:創(chuàng)建一個(gè)Bug來(lái)跟蹤

            ? 剛剛成了一個(gè)測(cè)試小組

                其余的只能融化在日常工作中,管理層不斷在很多細(xì)節(jié)上要求、甚至親自示范(比如我會(huì)使用不同的產(chǎn)品,發(fā)現(xiàn)問(wèn)題上Bug),去教會(huì)大家測(cè)什么、如何測(cè)、發(fā)現(xiàn)問(wèn)題怎么辦、Bug解決后怎么辦。

            因?yàn)檎麄€(gè)研發(fā)團(tuán)隊(duì)剛招聘了不少新人,由于歷史的原因以前也沒(méi)有重視測(cè)試工作,大家這方面的經(jīng)驗(yàn)相對(duì)而言比較少,所以目前我最重要的工作是給大家不斷灌輸這些意識(shí),手把手去教他們?nèi)绾蝿?chuàng)建一個(gè)Bug、解決一個(gè)Bug時(shí)應(yīng)該怎么描述、提供哪些信息等等。坦率的講,這個(gè)過(guò)程會(huì)非常辛苦勞累。去年我在的公司比較小,一切我都可以從零開(kāi)始設(shè)計(jì)規(guī)劃。但現(xiàn)在不同,因?yàn)楣緲I(yè)務(wù)有很多、人員也有了一定規(guī)模、以前的程序有很多,而且基于這個(gè)行業(yè)自身的特點(diǎn),新的需求很多、變化非常頻繁,所以在這種情況下如何把研發(fā)流程理順、Bug管理到位,對(duì)我也是很大的挑戰(zhàn)。我會(huì)根據(jù)對(duì)業(yè)務(wù)的深入理解去不斷調(diào)整、細(xì)化上面提到這些“制度”。

            孟巖:BugFree在設(shè)計(jì)上為此作了什么特別的考慮?

            劉振飛:我想主要有這么幾點(diǎn):

            (1) BugFree是基于Web的Bug管理系統(tǒng),我們研發(fā)人員很容易上手使用、簡(jiǎn)單方便

            (2) 一個(gè)Bug從創(chuàng)建到關(guān)閉這個(gè)“生命周期”的處理過(guò)程,BugFree 全面借鑒微軟內(nèi)部工具Raid的處理流程,處理方法甚至一些詞匯都和Raid一樣,代表著“先進(jìn)的生產(chǎn)力”J

            (3) 當(dāng)一個(gè)Bug被指派給你的時(shí)候,系統(tǒng)會(huì)自動(dòng)給你發(fā)一封郵件,提示有個(gè)Bug需要你處理,這樣結(jié)合 Email,不斷提醒研發(fā)隊(duì)伍Bug的存在和進(jìn)展。我們還增加了兩個(gè)Bug統(tǒng)計(jì)功能:一是每天定時(shí)(比如早上8點(diǎn)鐘)每個(gè)同事都會(huì)收到一封Email,告訴他/她頭上還有多少 Bug等待處理;二是每周一中午給所有人發(fā)一封郵件,告知上周Bug的處理情況和到目前為止所有Bug的統(tǒng)計(jì)數(shù)據(jù)

            (4) 很方便的去自定義查詢(xún)條件,以后輕輕點(diǎn)擊一個(gè)按鈕隨時(shí)查看你關(guān)心的Bug

            (5) BugFree是用開(kāi)源的PHP+MySQL寫(xiě)成的,規(guī)模很小、代碼也很規(guī)范,所以需要的時(shí)候很容易定制或擴(kuò)充功能。

            孟巖:非常感謝你,劉振飛。我們通過(guò)這三期訪談,已經(jīng)較全面地談到了Bug管理的方方面面。從前兩次的反應(yīng)來(lái)看,很多讀者都對(duì)這個(gè)話題非常感興趣,你能否用三句話總結(jié)一下你的主要觀點(diǎn)?

            劉振飛:

            1. 測(cè)試是軟件產(chǎn)品研發(fā)的重要一環(huán),需要IT企業(yè)的高度重視,就像重視開(kāi)發(fā)一樣。

            2. 選擇一個(gè)得心應(yīng)手的Bug管理工具,比如使用最接近微軟內(nèi)部Bug管理系統(tǒng)的開(kāi)源軟件BugFree ,是免費(fèi)的!J

            3. 明確Bug管理的流程和指導(dǎo)原則,并把這些意識(shí)逐步灌輸?shù)矫總€(gè)研發(fā)人員頭腦中;同時(shí)根據(jù)企業(yè)的具體情況不斷去完善測(cè)試流程和方法。

            也真誠(chéng)感謝你做這次訪談,通過(guò)這么多有啟發(fā)性、很有條理的問(wèn)題,我算是有機(jī)會(huì)把這么多年的軟件研發(fā)經(jīng)驗(yàn)、特別是Bug管理的體會(huì)系統(tǒng)的總結(jié)一下,給自己留下一份很有意義的記錄。同時(shí)借這個(gè)機(jī)會(huì),也感謝給我Email探討B(tài)ug管理實(shí)踐以及BugFree系統(tǒng)的讀者朋友表示感謝,如果這三篇訪談能對(duì)大家的實(shí)際測(cè)試管理工作有所幫助、BugFree能夠被真正使用起來(lái),那我就非常自豪和快樂(lè)了。

            另外,我也會(huì)根據(jù)自己的使用經(jīng)驗(yàn)和網(wǎng)友們的反饋,逐步完善BugFree,讓它成為一個(gè)長(zhǎng)期的、有生命力的開(kāi)源項(xiàng)目。

            孟巖:最后一個(gè)題外話。我知道你現(xiàn)在從事研發(fā)管理工作,招聘過(guò)不少技術(shù)人員,對(duì)那些未走出校門(mén)的大學(xué)生和剛剛踏入社會(huì)的大學(xué)生們,有什么意見(jiàn)和建議?

            劉振飛:春節(jié)后我剛剛完成我們部門(mén)今年的第一輪招聘,一共收到了1000多封簡(jiǎn)歷、面談過(guò)近100人,最后錄取了9名新同事。去年也曾招聘過(guò)一些新人;一方面是很多大學(xué)生工作不好找、另一方面是很多企業(yè)招到一個(gè)合適的人也很費(fèi)勁。在招聘過(guò)程中,真是什么情況都碰到過(guò)。

            作為一名有幾年工作經(jīng)驗(yàn)的老畢業(yè)生,我想對(duì)年輕的學(xué)弟學(xué)妹們提幾點(diǎn)建議以共勉:

            1. 爭(zhēng)取做一個(gè)善良的人、多站在別人的角度上去考慮問(wèn)題。

            2. 要樹(shù)立為自己努力工作的心態(tài),你不僅僅是為老板打工。如果對(duì)工作不滿,趕快換一個(gè),千萬(wàn)不要耗著;我們比上一代人幸運(yùn)、可以有更多的選擇工作機(jī)會(huì),所以不要浪費(fèi)自己的青春年華。

            3. 珍惜在學(xué)校讀書(shū)的四年寶貴時(shí)光,打好專(zhuān)業(yè)基礎(chǔ)(比如計(jì)算機(jī)專(zhuān)業(yè)的起碼應(yīng)該把離散數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)認(rèn)真搞明白)、提高基本素質(zhì)(比如誠(chéng)信、溝通表達(dá)及團(tuán)隊(duì)協(xié)作能力)。

            4. 如果你想朝技術(shù)方面發(fā)展,多去鉆研鉆研那些優(yōu)秀的開(kāi)源軟件,學(xué)習(xí)別人的智慧;

            5. 擺脫那種非常純的技術(shù)情結(jié),要逐步明白在市場(chǎng)經(jīng)濟(jì)的企業(yè)中,業(yè)務(wù)、管理最重要,技術(shù)是一種“后勤支持”,沒(méi)有我們想象的那么重要。

            6. 不斷學(xué)習(xí)來(lái)提高綜合素質(zhì)。技術(shù)之外的書(shū)籍:哲學(xué)、歷史、經(jīng)濟(jì)、文學(xué)等都需要好好讀一讀。古人云,“世事練達(dá)即文章,處處留心皆學(xué)問(wèn)”。比如我看電影和話劇的時(shí)候,覺(jué)得這兩樣和軟件研發(fā)非常相似,劇本就是需求、演員就是開(kāi)發(fā)人員、彩排類(lèi)似測(cè)試,導(dǎo)演呢就像一個(gè)項(xiàng)目經(jīng)理,一個(gè)票房很高的電影就像很受歡迎的軟件產(chǎn)品一樣。

            7. 身體是革命的本錢(qián)。毛主席他老人家的這句話千真萬(wàn)確,健康的身體是扛住工作和生活壓力的重要保證。

            8. 想辦法去慢慢培養(yǎng)自己金錢(qián)和管理意識(shí),碰到合適的機(jī)會(huì)也可以嘗試自己創(chuàng)業(yè),即使失敗了也可以學(xué)到很多書(shū)本之外的知識(shí)。難道陳天橋生下來(lái)就注定要當(dāng)中國(guó)大富豪嗎?王侯將相,寧有種乎?

            posted on 2008-09-10 09:01 FongLuo 閱讀(317) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2008年12月>
            30123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            導(dǎo)航

            常用鏈接

            留言簿

            隨筆分類(lèi)(11)

            隨筆檔案(79)

            文章檔案(1)

            收藏夾(38)

            學(xué)習(xí)網(wǎng)站

            一般網(wǎng)站

            最新隨筆

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            久久久老熟女一区二区三区| 久久精品中文字幕有码| 99久久精品国产一区二区| 久久青青草原精品国产| 99久久精品国产一区二区三区| 久久夜色撩人精品国产小说| 久久精品国产精品亚洲精品| 色综合久久88色综合天天| 久久久久久久久66精品片| 99久久成人18免费网站| 国内精品久久久人妻中文字幕| 三级片免费观看久久| 久久综合丁香激情久久| 少妇久久久久久被弄高潮| 久久精品国产国产精品四凭| 97久久精品无码一区二区| 久久久久久久久久久精品尤物| 中文字幕成人精品久久不卡| 91精品国产高清久久久久久io | 潮喷大喷水系列无码久久精品| 青青草国产成人久久91网| 色偷偷久久一区二区三区| 久久国产亚洲精品| 亚洲午夜无码AV毛片久久| 久久国产精品免费一区| 国产成人99久久亚洲综合精品| 91精品国产9l久久久久| 久久九九亚洲精品| 国产精品久久精品| 国产精品久久久久天天影视| 久久久无码一区二区三区| 亚洲AV无码一区东京热久久| 亚洲精品乱码久久久久久蜜桃图片| 久久亚洲精品无码aⅴ大香| 三级三级久久三级久久| 精品国产日韩久久亚洲| 日韩精品久久久久久免费| 国内精品伊人久久久久av一坑| 国产成人精品白浆久久69 | 亚洲欧美精品伊人久久| 国内精品久久久久久久久电影网|