3典型Bug Tracker介紹
開源軟件領(lǐng)域,存在的Bug Tracker很多,比較有名的有BugZilla、GNATS、Buggit、Mantis、DBTS等。這些缺陷跟蹤與管理系統(tǒng)為開源軟件管理提供了一個(gè)良好的控制手段。軟件開發(fā)需要Bug Tracker的存在,開源軟件的開發(fā)更加離不開它們。曾職于微軟公司的開源Bug Tracker BugFree發(fā)起者劉振飛先生說過:在(微軟)所有的工具中,我佩服的是其Bug管理系統(tǒng)Raid(現(xiàn)在叫Product Studio);Raid的價(jià)值在于它密切跟蹤當(dāng)前產(chǎn)品的實(shí)際Bug狀態(tài),使項(xiàng)目組中的成員非常有效的協(xié)調(diào)他們的工作[[11]]。
同樣,開源軟件沒有合適的Bug管理軟件支撐,恐怕也很難開發(fā)出的產(chǎn)品。下面我們可以了解這個(gè)領(lǐng)域一些主流的系統(tǒng),Mozilla公司提供的Buzilla是一個(gè)產(chǎn)品缺陷的記錄及跟蹤工具,它能夠?yàn)槟憬⒁粋(gè)完善的Bug跟蹤體系,包括報(bào)告Bug、查詢Bug記錄并產(chǎn)生報(bào)表、處理解決、管理員系統(tǒng)初始化和設(shè)置四個(gè)部分。它具有如下特點(diǎn):基于Web方式,安裝簡(jiǎn)單、運(yùn)行方便快捷、管理安全;有利于缺陷的清楚傳達(dá);系統(tǒng)靈活,強(qiáng)大的可配置能力;支持自動(dòng)發(fā)送Email[[12]。相比之下,Mantis則是PHP/MySQL/Web-based缺陷跟蹤系統(tǒng),它具有個(gè)人可定制的Email通知功能、支持多項(xiàng)目、多語言等優(yōu)點(diǎn)[[13]]。另外,在線Bug跟蹤與管理系統(tǒng)如TrackStudio、Bugols提供了的用戶界面。特別地,Bugols在它的主頁(yè)上宣言它們的理想是讓每個(gè)程序員都能輕輕松松地發(fā)布和維護(hù)自己的程序,它們的使命是通過精湛的技術(shù)構(gòu)建全球方便、易用、人性化的在線Bug管理工具[[14]]。]
然而,大多缺陷跟蹤系統(tǒng)似乎過多地關(guān)注如何進(jìn)行Bug的管理,卻忽略了與自動(dòng)化質(zhì)量評(píng)估工具的有效結(jié)合。另一方面,許多研究者嘗試運(yùn)用開源項(xiàng)目的源代碼和測(cè)試數(shù)據(jù)的易得性來設(shè)計(jì)新的項(xiàng)目質(zhì)量評(píng)估工具[[15]]。也許他們可以在Bug跟蹤與管理系統(tǒng)的設(shè)計(jì)上下更多的工夫。
4結(jié)論
本文在系統(tǒng)介紹了Bug跟蹤與管理的知識(shí)后,特別針對(duì)開源軟件的跟蹤與缺陷管理展開了分析。研究中發(fā)現(xiàn),如何提交一個(gè)友好的Bug報(bào)告到Bug Tracker對(duì)于及時(shí)、有效、正確地解決問題非常重要。然而,大多基于Web的Bug Tracker在客戶端提供了詳細(xì)的空白Bug清單供用戶填寫,雖然這樣的做法為系統(tǒng)有效接受和處理Bug帶來的方便,卻忽略了豐富而繁雜的表單是否超過了Bug提交者所能承受的極限。當(dāng)然,這些系統(tǒng)采取了一些下拉列表選擇項(xiàng),但是過多的用戶必須操作勢(shì)必不讓人滿意。另外,這些系統(tǒng)的界面也顯得不夠漂亮,試想一個(gè)非專業(yè)人士來報(bào)告一個(gè)Bug時(shí),不夠友好的界面也許會(huì)使他放棄報(bào)告一個(gè)可能致命的Bug。解決的辦法是,在必須信息和附加信息之間選擇一個(gè)平衡點(diǎn),同時(shí)提供一個(gè)清潔的界面。另外一個(gè)問題是,多數(shù)Bug Tracker都會(huì)拒絕重復(fù)提交的Bug;可是,Bug的類型、報(bào)告時(shí)間與報(bào)告頻率都是重要的評(píng)估參數(shù)[[16]]。這樣,如果系統(tǒng)一味地拒絕提交重復(fù)的Bug,恐怕統(tǒng)計(jì)一個(gè)Bug的出現(xiàn)頻率也會(huì)是一個(gè)難題。
實(shí)際中發(fā)現(xiàn),多數(shù)Bug Tracker具有過濾Bug報(bào)告的功能,以抵制重復(fù)提交的報(bào)告或已存在的問題報(bào)告,有些系統(tǒng)還能夠完全接受E-mail提交的報(bào)告或者與郵件列表可以協(xié)調(diào)工作;但是,過濾機(jī)制實(shí)際上是一個(gè)需要技巧與算法的東西。試想一個(gè)問題提交者提交了一個(gè)報(bào)告主題與報(bào)告中問題描述不一致的問題報(bào)告,結(jié)果會(huì)怎樣呢?可能這會(huì)是一個(gè)重要的報(bào)告,只是報(bào)告者一時(shí)疏忽才犯了錯(cuò)誤,但系統(tǒng)卻將它當(dāng)作一個(gè)已有的簡(jiǎn)單的錯(cuò)誤而拒絕了它。問題出在這,項(xiàng)目的下一個(gè)版本可能因?yàn)槟莻(gè)Bug而失敗,后果也許非常嚴(yán)重。其實(shí),這里想要指出的問題是,如何有效而準(zhǔn)確地過濾Bug報(bào)告?其實(shí)這里牽涉到一些搜索和匹配技術(shù),系統(tǒng)不但要檢查Bug主題,還要檢查它的內(nèi)部信息。如何高效實(shí)現(xiàn)它呢?這是一讓人困惑而又親近的話題。也許我們可以期待機(jī)器學(xué)習(xí)理論和應(yīng)用的進(jìn)步,當(dāng)系統(tǒng)具有相當(dāng)智能的時(shí)候,也許可以快速地?fù)渥降娇赡艿腂ug,并自動(dòng)修改可能的錯(cuò)誤,使一個(gè)Bug報(bào)告是完備的、一致的、準(zhǔn)確的。那樣的話一個(gè)Bug Tracker的運(yùn)行將更加有效,對(duì)于開源軟件的進(jìn)步也許會(huì)發(fā)揮重要作用。