孫偉強(qiáng)
(上海電機(jī)廠有限公司,上海 200240)
在大型軟件項(xiàng)目實(shí)施過程中,軟件測試人員擔(dān)任著發(fā)現(xiàn)軟件程序中的Bug的責(zé)任。在測試一個(gè)涉及多方面業(yè)務(wù)的大型系統(tǒng)(如ERP系統(tǒng))的過程中,經(jīng)常會(huì)測試出數(shù)百個(gè)Bug需要開發(fā)人員隨時(shí)更正。這些Bug可能分布在各類子功能中,也可能發(fā)現(xiàn)各種類型的Bug。在這種情況下,軟件缺陷管理工具是必不可少的。
在實(shí)際工作實(shí)踐過程中,沒有軟件缺陷管理工具的幫助,就可能會(huì)出現(xiàn)如下一系列的影響:
(1)軟件測試人員將Bug已經(jīng)提交給了開發(fā)人員,但是開發(fā)人員可能沒有一個(gè)很清晰的界面來接收到測試人員提交的Bug信息。
(2)有一些Bug可能是測試人員進(jìn)行回歸測試中測試出的問題,但是不能和第一次測試出此類型的情況進(jìn)行關(guān)聯(lián),所引起的結(jié)果為不能進(jìn)行有效的回歸測試。
(3)測試樣例的版本控制難以做到,不能很清晰地看出Bug所處的狀態(tài),是Bug被關(guān)閉了還是被延期了。
(4)當(dāng)運(yùn)用Word或者Excel作為缺陷管理工具時(shí),可能會(huì)給Bug各類指標(biāo)數(shù)的統(tǒng)計(jì)(特別是以圖表形式統(tǒng)計(jì))帶來問題,很難看出一個(gè)Bug對應(yīng)的測試需求。
(5)假如出現(xiàn)一些不可重現(xiàn)的Bug按照規(guī)定也需要進(jìn)行記錄,這些不可重現(xiàn)的Bug在整個(gè)項(xiàng)目中的狀態(tài)難以定義。(不能算作已經(jīng)解決的Bug,同時(shí)Bug由于不能重現(xiàn)使得開發(fā)人員修復(fù)起來有困難)
軟件測試的主要目的在于發(fā)現(xiàn)軟件存在的問題(Bug)。如何處理測試中發(fā)現(xiàn)的錯(cuò)誤,將直接影響到測試的效果。只有正確、迅速、準(zhǔn)確地處理這些錯(cuò)誤,才能消除軟件錯(cuò)誤,保證要發(fā)布的軟件符合需求設(shè)計(jì)的目標(biāo)。而有以上5點(diǎn)的存在,會(huì)使Bug的處理效率和Bug處理的驗(yàn)證會(huì)有偏差,對項(xiàng)目是否成功還是比較顯著的。
對于軟件各項(xiàng)錯(cuò)誤的狀態(tài),軟件業(yè)巨頭微軟公司對于軟件錯(cuò)誤的狀態(tài)有如下5種:
New:代表此Bug由測試人員發(fā)現(xiàn)并且進(jìn)行提交。
Open:Bug被正式確認(rèn)并且分發(fā)給開發(fā)人員。
Fixed:開發(fā)人員完成Bug漏洞修復(fù)并且提交給測試人員進(jìn)行驗(yàn)證測試。
Decline:開發(fā)人員拒絕修改錯(cuò)誤(代表Bug開發(fā)人員和測試人員對需求等非程序方面有歧義需要額外溝通)。
Deferred:Bug在本版本的程序中暫緩修復(fù),在下一個(gè)版本中修復(fù)。(一般是Bug嚴(yán)重等級比較低的項(xiàng)目)
Closed:測試人員最終驗(yàn)證通過,此Bug被最終修復(fù),并由測試人員關(guān)閉此Bug。
一般是由測試人員新建Bug記錄后,Bug記錄被正式派分到開發(fā)人員處,若開發(fā)人員對此Bug有歧義就可以拒絕這條Bug的修改并且與測試人員討論這條Bug的有效性。若此Bug的確需要修正,則由開發(fā)人員進(jìn)行修正后置軟件的錯(cuò)誤問題狀態(tài)為解決。
當(dāng)測試人員接到相關(guān)通知后,測試人員接到相關(guān)通知后進(jìn)行回歸測試后若沒有問題,則可以關(guān)閉這條Bug記錄。
在實(shí)際情況中,覺得開源軟件BugFree與軟件錯(cuò)誤狀態(tài)理論較為符合,也能解決版本控制問題,現(xiàn)把安裝過程和使用情況進(jìn)行分享。
(1)BugFree采用的是PHP+Apache+MySQL后臺(tái),而Apache使用的是和IIS一樣的80端口,所以安裝的機(jī)器上有IIS的話,請先修改IIS默認(rèn)端口,修改方法如下:
開始菜單——>控制面板——>管理工具——>Internet信息服務(wù),界面如圖1所示。
圖1 BugFree的界面
從圖1中可以看到,已經(jīng)將TCP端口改為了90。
① 同樣的,一些下載軟件會(huì)占用80端口,需要將這些軟件的進(jìn)程進(jìn)行關(guān)閉。
② 下載GreenAmp服務(wù)器軟件套件(版本號為050123)。
③ 將GreenAmp套件解壓后直接運(yùn)行啟動(dòng)GreenAMP.bat。
④ 在IE瀏覽器中輸入http:∥localhost/phpmyadmin,輸入用戶名root,密碼為空。若出現(xiàn)歡迎使用PHPMyAdmin,則代表安裝正確。
⑤ 下載BugFree文件后解壓到GreenAMP中的WWW文件夾下,再次在瀏覽器中輸入http:∥localhost/BugFree,接著直接點(diǎn)擊創(chuàng)建數(shù)據(jù)庫超鏈接后,再次將Include文件夾下的Config.inc.Sample.php進(jìn)行復(fù)制后更名為Config.inc.php,BugFree即可安裝成功。
(1)首先用Admin賬號登入添加項(xiàng)目和項(xiàng)目人員,用Admin賬號添加項(xiàng)目界面如圖2所示??梢孕略鲆粋€(gè)名為Price的項(xiàng)目。
(2)然后可以新增一個(gè)Bug,如圖3所示。
在下圖3中可以維護(hù)Bug類型(包括新增需求、代碼錯(cuò)誤、性能壓力等類型),創(chuàng)建Build中(可以填入發(fā)現(xiàn)Bug的日期,內(nèi)部程序版本等內(nèi)容)。這樣當(dāng)測試人員將某一個(gè)特定版本的Bug提交給開發(fā)人員后,開發(fā)人員可以針對這個(gè)特定版本的程序進(jìn)行修復(fù),從而不會(huì)引起程序開發(fā)版本的混亂。
(3)開發(fā)人員進(jìn)行程序修改并且點(diǎn)擊解決按鈕后,就可以解決掉這個(gè)Bug,解決方案有如下幾種:
① By Design(無效的Bug);
② Duplicate(已經(jīng)被別人發(fā)現(xiàn)的重復(fù)的Bug);
③ External(外部因素造成的Bug,可能為IE6下功能正確,而IE8中就可能無法運(yùn)行);
④ Fixed(Bug被正確地修正了);
⑤ Not Repro(無法復(fù)現(xiàn)Bug,可能為無效的Bug);
⑥ Postponed和Won't fix都為由于Bug緊急程度比較低,推遲到以后再修復(fù)此Bug,相當(dāng)于5種類型中的Deferred。
(4)當(dāng)開發(fā)人員完成保存后,測試人員進(jìn)行回歸測試后并且沒有再發(fā)現(xiàn)新的Bug的話,就可以關(guān)閉這個(gè)Bug,同時(shí)系統(tǒng)會(huì)記錄Bug開放的人員、時(shí)間,開發(fā)人員處理的人員、時(shí)間,Bug關(guān)閉的人員、時(shí)間等信息。
(5)還有一些報(bào)表功能,如某一個(gè)項(xiàng)目包含的Bug統(tǒng)計(jì)數(shù)、Bug被指派人的統(tǒng)計(jì)數(shù)、Bug類型的統(tǒng)計(jì)數(shù)、Bug操作系統(tǒng)的統(tǒng)計(jì)數(shù),這樣就可以對這些統(tǒng)計(jì)數(shù)進(jìn)行分析后得到項(xiàng)目的實(shí)際Bug情況。
通過在實(shí)際工作過程中參與的各個(gè)IT項(xiàng)目過程中,深刻地理解到當(dāng)測試項(xiàng)目非常龐大(如涉及到采購、財(cái)務(wù)、物流內(nèi)容的ERP項(xiàng)目或者對最終金額精度要求非常高的轉(zhuǎn)制報(bào)價(jià)項(xiàng)目),由于這些項(xiàng)目可能有幾十甚至上百個(gè)需求,一個(gè)測試需求可能需要3到4個(gè)測試樣例,這樣就會(huì)導(dǎo)致整個(gè)項(xiàng)目有幾百個(gè)測試樣例。假如沒有比較好的軟件缺陷工具進(jìn)行管理,可能會(huì)出現(xiàn)測試樣例不能覆蓋到相關(guān)需求、不能正確地統(tǒng)計(jì)出實(shí)際發(fā)現(xiàn)的Bug數(shù)量以及等問題。綜上所述:選擇一個(gè)合理并且方便的缺陷管理工具對于軟件系統(tǒng)成功是十分重要和迫切的。