摘要:針對具有大型#65380;交互式#65380;領域特點的軟件系統,對于實際的白盒測試項目進行了認真總結,系統地闡述了該類軟件測試的技術#65380;方法#65380;策略#65380;過程以及管理#65377;通過描述測試項目的組織和實施過程,提出了進行大型交互式軟件測試的基本思路,即從過程#65380;管理#65380;培訓以及測試方法等方面提取共性特征#65377;最后對測試發現的軟件問題進行統計和分析,驗證測試的有效性和意義#65377;
關鍵詞:白盒測試; 交互應用軟件; 測試過程管理; 測試用例; 軟件問題報告
中圖分類號:TP311文獻標志碼:A
文章編號:1001-3695(2007)10-0235-03
軟件測試是軟件質量保證的重要手段#65377;據研究機構統計分析表明,國外軟件開發機構40%的工作量花在軟件測試上,軟件測試費用占軟件開發總費用的30%~50%#65377;對于一些要求高可靠#65380;高安全的軟件,測試費用可能相當于整個軟件項目開發所有費用的3~5倍#65377;由此可見,要成功開發出高質量的軟件產品,必須重視并加強軟件測試工作[1]#65377;
白盒測試的優點是清楚所設計的測試用例在代碼級上哪些地方被忽略掉,幫助軟件測試人員增大了代碼的覆蓋率,提高代碼的質量,發現代碼中隱藏的問題#65377;當系統龐大時,測試開銷會非常大[2]#65377; 目前國內的白盒測試主要針對高可靠性軟件開展#65377;這些軟件對于可靠性的要求非常高,需要進行白盒測試[3],主要涉及到軍用軟件等高可靠性軟件#65377;一般來說,白盒測試的代價非常高#65377;除非很大的軟件項目,否則由于本身經費有限,很少將經費用于白盒測試,只是在公司或企業內部進行一些簡單的功能測試,這樣的測試很難有效保證軟件質量#65377;因此,在白盒測試的應用研究及實踐方面的資料比較少,很難找到太多可以用來借鑒的切實可行的工程化方法#65377;
1軟件系統及特點
某大型軟件研發項目作為某集團公司科技投入力度最大的單個項目之—,將成為中國該行業特色技術的有效載體,不僅能夠滿足國內該行業的需求,還能夠支撐該集團公司國際競爭的需求,成為中國該領域的主導軟件[4]#65377;
被測軟件的交互應用部分共分為17個子系統,共包含文件3 091個,總代碼行為822 439行C++代碼(20060106單版本統計數據)#65377;該應用軟件主要有以下幾個特點:
a)系統龐大復雜#65377;整個軟件系統有幾千萬行代碼,龐大復雜,被測的交互應用系統只是其中的一部分;參與各子系統的開發人員多,能力素質有差異,代碼風格不嚴格統一;子系統之間相對獨立又相互關聯,關系錯綜復雜#65377;
b)明顯的交互性#65377;被測試軟件屬于交互應用系統,交互應用的特點對于測試方法的選擇提出了新的要求#65377;
c)領域特征突出#65377;該被測系統是屬于具有典型行業特點的軟件,涉及大量的領域背景知識#65377;
d)處于開發階段#65377;軟件處于開發過程中,系統還不太穩定;代碼還不夠完善,軟件版本的變化比較頻繁#65377;
2白盒測試流程
對于整個測試的組織和實施過程,針對軟件的大型#65380;交互性#65380;領域性和開發中的幾個特點,從測試過程組織#65380;測試方法選擇以及測試數據管理等幾個方面,提出了進行該類軟件系統白盒測試的基本思路,即以測試過程管理為中心#65380;明確測試流程#65380;綜合三種測試方法#65380;關注軟件領域特性#65377;
對于整個軟件測試過程,文獻[5]中提到了POCERM模型進行組織和實施#65377;對于該大型交互式應用軟件系統的測試,將面臨許多新的實際問題和困難,需要針對該軟件系統所具有的特點在該模型基礎上適當改進和補充,如圖1所示#65377;
3測試過程管理
3.1一個中心:以科學#65380;高效的測試過程管理為中心
大型軟件測試的組織和實施存在大量的文檔#65380;測試用例#65380;軟件問題報告等數據需要進行組織和管理,以便對測試過程進行評估,以及在以后的測試實踐中進行重用和借鑒#65377;這樣必須充分重視測試過程的管理#65377;北京航空航天大學軟件工程研究所開發的QESuite是一個理想的測試過程管理工具,在這個大型的測試項目中發揮了重要的作用#65377;圖2是QESuite的功能框架#65377;
QESuite的功能包括測試用例庫#65380;問題追蹤庫#65380;狀態報告庫#65380;考勤庫#65380;項目交流庫#65377;該工具面向軟件產品的整個生命周期,實現了對測試過程#65380;測試對象和測試數據的有效管理,指導用戶實施測試過程改進,滿足開發企業對測試管理的需求,適用于各類企業對其軟件測試過程進行有效的管理#65377;它是輔助企業快速建立高效#65380;規范的軟件測試過程管理體系的必備工具#65377;
3.2兩個目標:組織測試大綱和發現軟件問題
1)針對交互應用的特點組織測試大綱在該項目中,由于各交互應用子系統本身是可執行程序,不需要為每個交互應用子系統編寫驅動程序,也不需要為每個交互應用子系統中的每個類的方法設計相應測試用例#65377;通過實際運行軟件子系統來進行交互應用軟件的白盒測試#65377;這需要從應用的角度(即用戶使用角度)為每個交互應用子系統設計測試大綱來指導交互應用的白盒測試#65377;每個交互應用的測試大綱包含了多個從使用角度設計的各種測試場景#65377;主要包括以下步驟:
a)結合功能對源代碼劃分測試項#65377;將軟件功能與源代碼對應起來,在充分考慮功能性的情況下,對源代碼進行測試項的劃分#65377;
b)測試大綱完全從功能角度出發#65377;在未進行功能測試之前,充分了解系統的功能,參考黑盒測試用例組織方法,充分考慮這些功能以及功能的組合來進行測試大綱的編寫#65377;
c)根據覆蓋要求補充測試大綱#65377;在測試中根據覆蓋率的結果可以發現有些語句和分支未能走到#65377;這樣就需要進一步增加測試大綱或者測試場景,滿足覆蓋的目標#65377;對于這樣的測試大綱(場景)通過QESuite進行有效組織和管理#65377;
2)軟件測試的目標就是發現軟件中的問題在測試中會發現了許多軟件缺陷,對這些缺陷進行處理#65377;對于問題報告管理是借助QESuite來完成的,對測試用例與對應的軟件問題進行鏈接管理#65377;圖3中的三個圖分別說明了QESuite的基本組成以及在實際項目中對問題報告和測試用例(即測試大綱)的管理#65377;
4測試方法選擇
白盒測試通過分析程序的內部結構,根據其內部結構設計測試用例#65377;黑盒測試完全不考慮程序內部結構和內部特征(或對于上述信息無從獲知)的情況下,根據需求規格說明書設計測試用例和推斷測試結果的正確性[6]#65377;顯然,這兩類測試方法是從完全不同的角度出發對軟件進行測試#65377;只有通過將兩者有效地結合才能彌補任何一種方法的不足,使測試方法的機理更完善[7]#65377;
在實際項目中,首先針對白盒測試的特點對源代碼進行代碼檢查;然后結合軟件的功能劃分測試項進行測試大綱的設計,并進行典型的軟件功能測試;最后運行測試大綱并進行覆蓋分析,通過增加測試大綱達到覆蓋率的要求#65377;在測試項目中采取以下幾種測試方法的綜合測試:
a)代碼檢查#65377;傳統的方法一般都是涉及開發人員的,而在實際測試項目中,由于開發人員任務重,且是在項目開發過程中進行的,很難做到讓開發人員參與代碼方面的檢查工作#65377;代碼檢查是一種非常有效的測試方法,后面有具體數據說明在測試過程發現問題的有效性#65377;
b)典型功能測試#65377;經過代碼檢查后,由于軟件的交互性特點,要根據軟件用戶手冊進行典型的功能測試#65377;
c)覆蓋分析#65377;經過了功能測試之后,還要進行覆蓋分析,通過補充測試大綱,完成代碼覆蓋率的要求#65377;
此外,還包括:關鍵模塊的測試,保證關鍵模塊的運行質量;內存檢查,應用工具進行深入分析,檢查系統的內存泄漏問題,提高軟件系統的運行性能#65377;
5充分考慮領域特性對測試的影響
前面描述了軟件系統的領域特點,它給第三方測試帶來了前所未有的困難#65377;在實際測試中,考慮實際的測試工作,無法也不可能進行長期系統的培訓和學習,主要采取兩種方法來解決這個問題:
a)明線就是集中培訓,在測試開始階段,開發人員對被測軟件的功能介紹#65380;軟件系統結構分析以及行業流程的針對性培訓等#65377;通過這樣一個過程使測試人員對整個被測系統的背景知識有了一定的了解,對于軟件系統的功能#65380;特點以及代碼結構有了大概的認識,就可以開始測試#65377;
b)暗線就是長期經常的交流和溝通,是指具體的測試人員在對各子系統的測試過程中,對于遇到的問題隨時找到開發人員進行交流#65380;討論,保證測試的順利開展#65377;
通過這種方法可以使測試人員循序漸進地了解被測系統,逐步深入地進行測試并發現越來越多的軟件問題,使得測試過程比較順暢#65380;科學#65380;有效#65377;
領域知識的培訓離不開項目管理人員的積極配合;領域軟件的特有特征需要開發人員在代碼可能變更的趨勢方面#65380;需求變更方面及時提供更多的信息,避免無效測試#65377;這些都需要在項目過程中進行及時有效的溝通#65380;協調,保證測試的順利進展#65377;
6軟件問題統計和分析
在該項目的測試過程中發現了大量的軟件問題,截至2006年1月6日,共編寫測試大綱(場景數)383(1 839)個,發現軟件問題總數2 264個#65377;
6.1測試期間每周軟件問題的發現情況
表1給出了在實際測試中每周發現的軟件問題的情況#65377;結合圖4中的曲線趨勢發現,在開發過程中的測試實際上發現的軟件問題雖然有所減少,但是還沒有呈現出收斂的趨勢#65377;
這些數據表明:
a)軟件不夠穩定#65377;需求的變更#65380;版本的變化一直沒有停止過,新代碼的引入和變化帶來了新的問題,同時對于bug的修復也會引發新的問題#65377;因此在軟件處于開發狀態時,測試過程中軟件問題沒有明顯減少#65377;
b)測試是有效的#65377;每周發現問題平均值是102.2個,表明測試切實發現了軟件系統存在的一些問題#65377;
c)測試驅動了開發#65377;從圖4可以看出,總體上來說,軟件問題在某種程度上是在減少,主要包括在測試中發現的一些共性問題,與開發人員及時溝通和討論并協調解決#65377;
6.2按問題發現的方式
從圖5可以看出,在發現問題的方式中,代碼檢查是發現軟件問題非常有效的方式#65377;有64%的軟件問題是通過代碼檢查發現的;功能測試發現了29%的軟件問題,這與被測軟件的交互式特征非常一致;覆蓋測試發現的問題只占7%的比例#65377;這充分說明,經過了代碼檢查和功能測試這兩個階段,軟件中實際存在的軟件問題大大減少,但是仍然還有一些深層次的問題,符合對白加黑的綜合測試方法的期望#65377;
6.3按照軟件系統的測試需求
在該軟件系統的測試中,開發方提出了需要關注的幾個特性,希望有所側重發現其中的軟件問題,即軟件系統可靠性#65380;穩定性和性能方面的軟件問題#65377;圖6是經過統計整理得到的問題數目及分布情況#65377;從圖中可以看出,通過測試發現了這三類問題共計1 318個,占發現問題總數的58.2%,達到了預期的目標,滿足了開發方對軟件的關注需求,對于保障該軟件的質量起到了至關重要的作用#65377;
7結束語
某大型交互式應用軟件的白盒測試有效地保證了該軟件的質量#65377;作為第三方測試也形成了一個典范,從中總結了許多切實可行的方法,必將促進第三方軟件測試的進一步發展#65377;本文針對軟件的大型#65380;交互性#65380;領域等特性,提出了進行該類軟件測試的方法#65380;技術以及管理策略#65377;
該軟件系統的測試是一種不同于一般白盒測試和黑盒測試的測試方法#65377;目前測試還都停留在人工測試的階段,迫切需要大量工具的支持,而目前的工具很難適應版本的變化頻度#65377;隨著國內軟件行業的不斷發展和完善,第三方測試必將得到更大的發展,對于這樣大型的軟件測試項目也需要更多的研究和探索,找到更加科學#65380;合理#65380;高效的測試方法#65377;
參考文獻:
[1]軟件測試工具[EB/OL].[2006-08-30].http://www.visionmc.com/solution/testbed1.htm.
[2]JORGENSEN P C.軟件測試[M].韓柯,等譯.2版.北京:機械工業出版社,2003:6-8.
[3]高海昌,賀曉紅,馮博琴,等.軟件結構測試自動化關鍵技術研究[J].微電子學與計算機,2005,22(3):25-28.
[4]某交互應用白盒測試項目軟件測試報告[R].北京:北京航空航天大學軟件工程研究所,2006:1-3.
[5]劉超,金茂忠.軟件測試過程的基本模型POCERM[J].北京航空航天大學學報,1997,23(1):56-60.
[6]鄭人杰.計算機軟件測試技術[M].北京:清華大學出版社,1992:44-45.
[7]李秋英,劉斌,阮鐮.灰盒測試方法在軟件可靠性測試中的應用[J].航空學報,2002,23(5):455-458.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”