摘要:軟件測試不僅是軟件開發(fā)生存周期過程中最艱巨、最復雜的任務,也是軟件開發(fā)過程中的一個非常重要的階段。軟件測試的目的不僅發(fā)現(xiàn)軟件的錯誤與缺陷,還對軟件的質(zhì)量進行度量和評估,確保軟件質(zhì)量,提高軟件可靠性。主要從軟件測試方法、原理、應用、可行性研究等方面進行分析。   

  關鍵詞:軟件測試;生存周期;軟件質(zhì)量 

  0引言 

  隨著計算機技術的普及和推廣,各類型軟件廣泛受到各行業(yè)人員的青睞,人們對軟件產(chǎn)生了極大的依賴 ,隨著這一趨勢的不斷發(fā)展,人們對軟件的質(zhì)量要求越來越高,如何保證軟件的質(zhì)量已成為軟件工程領域的一項重要任務。軟件質(zhì)量決定了軟件的壽命,軟件質(zhì)量關系到軟件的使用與維護。任何軟件在投入使用前,都要檢測軟件設計中的錯誤與缺陷,以確保軟件的質(zhì)量。目前,保證軟件質(zhì)量直接有效方法就是軟件測試,通過測試尋找軟件的Bug、避免軟件開發(fā)過程中的缺陷、關注用戶的需求、衡量軟件的品質(zhì),最終目的就是保證軟件質(zhì)量。 

  1軟件測試概述 

  軟件測試的目的是以最少的測試用例集合測試出更多的程序潛在錯誤,降低測試效率成本,確保軟件的質(zhì)量,軟件測試在軟件生命周期占據(jù)重要地位。在軟件工程學中,通過如圖1所示的軟件開發(fā)V 模型,可以看出軟件測試按操作的先后順序可分為單元測試、集成測試、系統(tǒng)測試和驗收測試。軟件測試是軟件開發(fā)過程中最艱巨、最繁重的任務,據(jù)大量的統(tǒng)計數(shù)據(jù)表明,軟件測試的工作量占軟件開發(fā)總工作量的40%左右,有的甚至超過總工作量的一半。軟件測試是在軟件投入使用前,對軟件需求分析、設計說明以及編碼進行最終復審,是軟件質(zhì)量保證的關鍵步驟。任何項目軟件測試均可用白盒測試和黑盒測試。 

   2黑盒測試 

  2.1黑盒測試概念 

  黑盒測試也稱為功能測試或數(shù)據(jù)驅(qū)動測試,它是在知道程序功能的情況下,檢驗軟件的功能模塊是否能正常使用。 

  2.2黑盒測試的原理、方法和功能 

  黑盒測試著眼于程序外部結構,把程序看作一個沒有打開或黑乎乎的盒子,不關心軟件內(nèi)部設計以及程序?qū)崿F(xiàn),只關心外部表現(xiàn),通過觀察輸入與輸出即可知道測試的結果。測試者只在程序接口進行測試,檢查程序功能是否符合需求規(guī)格說明書的規(guī)定,程序是否能接收輸入數(shù)據(jù)而產(chǎn)生正確的輸出信息,并保持外部信息的完整性。 

  黑盒測試注重于測試軟件的功能需求,測試軟件功能是否達到預期目的,是否符合軟件說明書的要求。黑盒測試通過黑盒測試檢測軟件的是否存在缺陷、功能是否被遺漏,軟件的性能是否滿足用戶需求,軟件能否接受正確的數(shù)據(jù)輸入,根據(jù)用戶需求得到正確的數(shù)據(jù)輸出,能否保持數(shù)據(jù)完整性,是否存在初始化及終止性錯誤等問題,確保軟件的正確性、安全性、可用性、兼容性、健壯性。 

  目前常用的黑盒測試有邊界值分、析等價劃分、正交試驗法、錯誤推測法、判定表驅(qū)動法、因果圖法、功能圖法、場景法等測試方法。這些方法都比較常用和適用,但在使用過程中,應根據(jù)軟件項目的特點選擇測試方法,以便提高測試效率。 

  2.3黑盒測試可行性研究 

  黑盒測試無須了解軟件內(nèi)部設計和實現(xiàn)等問題,只需基于軟件供需求和設計說明書,站在用戶角度對軟件界面和軟件的功能進行測試。黑盒測試技術應用于確認測試、系統(tǒng)測試和驗收測試。測試的結果取決于測試用例,對測試人員的經(jīng)驗要求比較高,黑盒測試不能提供直觀測試覆蓋率,不容易發(fā)現(xiàn)內(nèi)部實現(xiàn)的漏洞,無法對程序進行定位測試,難于衡量系統(tǒng)的完整性。黑盒測試偏向業(yè)務,注重整體。 

  目前,黑盒測試工具主要有客戶端功能測試:MI公司的winrunner,compuware的qarun,Rational的robot ;服務器端壓力性能測試: MI公司winload,compuware的qaload,Rational的SQA load等等; Web測試工具:MI公司的Astra系列,rsw公司的e�test suite; 測試管理工具:rational的test manager,compuware的qadirector等;缺陷跟蹤工具:trackrecord,Testtrack。其中,Winrunner是一個較為典型自動化測試工具,通過自動捕獲、檢測和模擬用戶交互操作,能識別出絕大多數(shù)軟件功能缺陷,從而確保那些跨越了多個功能點和數(shù)據(jù)庫的應用程序在發(fā)布時盡量不出現(xiàn)功能性故障。 

  3白盒測試 

  3.1白盒測試概念 

  白盒測試又稱為結構測試、邏輯測試和基于程序的測試,其目的是發(fā)現(xiàn)程序編碼過程中的錯誤。它知道產(chǎn)品內(nèi)部工作過程,可通過測試來檢測產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行,按照程序內(nèi)部的結構測試程序,來檢驗程序中的每條通路是否都能按預定要求正確工作,而不顧它的功能是怎樣的。 

  3.2白盒測試的原理、方法及功能 

  白盒測試把程序看成是一個打開透明的盒子,是對軟件設計過程的細節(jié)進行細致的檢查。測試人員必須清楚程序的內(nèi)部結構,利用程序內(nèi)部的邏輯結構和其他相關信息,設計或選擇相應的測試用例,對程序所有邏輯路徑進行測試,然后再不同點檢查程序狀態(tài),確定實際狀態(tài)是否與預期目標完全一致。 

  軟件測試人員使用白盒測試主要對程序功能模塊進行檢測,主要體現(xiàn)在以下幾方面:對程序模塊的所有獨立的執(zhí)行路徑至少測試1次;對所有的邏輯判定“真”與“假”的兩種取值至少測試1次;在循環(huán)的邊界和運行界限內(nèi)執(zhí)行循環(huán)體;測試內(nèi)部數(shù)據(jù)結構的有效性等。 

  常用白盒測試方法有語句覆蓋、條件覆蓋、判定覆蓋、條件組合覆蓋、判定/條件覆蓋、路徑覆蓋等,其中路徑覆蓋是最強的邏輯覆蓋標準,它保證程序中的每一條可能的路徑至少執(zhí)行一次,因而這樣設計的測試用例更具有代表性,暴露程序錯誤的能力也最強。 

  3.3白盒測試可行性研究 

  白盒測試在了解系統(tǒng)整體設計與實現(xiàn)和對源代碼進行審核的基礎上進行,能盡早發(fā)現(xiàn)問題,測試效果好等優(yōu)點,用盒測試技術應用于單元測試, 集成測試也會涉及一些。但是,白盒測試起點高,不能確保系統(tǒng)與軟件需求的一致性,測試代價遠遠高于黑盒測試,側(cè)重于實現(xiàn),注重局部,對過程進行測試。 

  常用的白盒測試工具有PR公司的PRQA 軟件、Telelogic 公司的Lo2giscope 軟件、Macabe 公司的Macabe、 Rational 公司的Purify、 Compuware公司的DevPartner 軟件、Numega 中的BounceChecker等系列。其中Logiscope是一種軟件質(zhì)量保證工具,它可以通過自動進行代碼檢查和對容易出錯的模塊的鑒定與檢測來幫助擴大測試范圍,從而達到保證質(zhì)量和完成軟件測試的目的。Purify工具能自動定位內(nèi)存相關錯誤,在錯誤發(fā)生并造成破壞之前進行修正,這些錯誤包括非法指針操作、數(shù)組越界檢測、內(nèi)存分配錯誤以及內(nèi)存泄漏、未初始化內(nèi)存訪問等。 

  4實用測試策略 

  為提高軟件的測試策略,要盡可能把無限的測試變成有限的測試,以較小的代價暴露較多的程序錯誤,降低測試的效率成本。在實際高水平的測試中,往往需要綜合使用各種方法,即采用白盒測試與黑盒測試相結合,靜態(tài)測試與動態(tài)測試相結合,機器測試與人工測試相結合,以有效的提高測試效率和測試覆蓋度。測試用例的設計方法有如下的實用測試策略:使用邊界值分析設計測試用例,測試邊界容易出錯之處;使用等價劃分設計測試用例,測試軟件的主要錯誤;必要時結合人工測試的錯誤推測方法設計測試用例作彌補;使用邏輯覆蓋涉及測試用例作為測試補充;若檢查程序輸入條件和各種組合情況或輸入條件和輸出結果存在因果聯(lián)系,使用因果圖法和判定表驅(qū)動法;軟件存在著多個輸入?yún)?shù)且每個輸入?yún)?shù)的有多種取值的情況,使用正交試驗法;利用功能圖法通過不同時期條件的有效性設計不同的測試用例;對于業(yè)務流清晰的軟件,利用場景法貫穿整個測試案例設計過程,在案例中綜合使用各種測試方法。 

  5測試原則 

  不論使用什么測試方法設計測試用例,都必須保證軟件的有限測試,測試人員在進行軟件測試時應遵行如下的測試原則:一是軟件要盡早測試和不斷測試,如果不在早期階段進行測試,錯誤的延時擴散常常會導致最后成品測試的巨大困難,甚至造成嚴重的后果;二是預先預定軟件的測試結果;三是盡量避免測試自己編寫的程序,測試工作應該由獨立的專業(yè)的軟件測試機構來完成;四是測試要兼顧合法輸入和不合法數(shù)據(jù)的輸入;五是測試要以軟件需求規(guī)格說明書為標準;六是對測試錯誤結果一定要有一個確認的過程,要明確找到的新錯與找到的舊錯成正比;七是測試是相對的,不可能窮盡所有測試,要根據(jù)人力物力安排測試,并選擇好的測試用例和測試方法;八是測試用例留作測試報告與以后的反復測試用,重新驗證糾錯的程序是否有錯。 

  總之,黑盒測試和白盒測試是軟件測試重要技術,用來發(fā)現(xiàn)軟件缺陷與錯誤,是對軟件質(zhì)量進行度量和評估,以提高軟件的質(zhì)量的關鍵技術。任何軟件項目都可以使用白盒測試和黑盒測試,在使用時不存在技術含量的誰高誰低的問題,只是兩者的偏重不同,使用的技術也不同。從以往經(jīng)驗總結來看,軟件工程師進行軟件測試時,主要以黑盒測試為主,白盒測試為輔,必要時根據(jù)需要選擇合適的測試工具,降低軟件測試的工作量和復雜度,保證軟件的質(zhì)量,提高軟件測試和軟件開發(fā)的效率。參考文獻: 

  [1]張海藩.軟件工程導論[M].北京:清華大學出版社,2000. 

  [2]鄭人杰.計算機軟件測試技術[M].北京:清華大學出版社,1992. 

  [3]胥家瑞.淺談白盒測試和黑盒測試在軟件測試測試中的作用[J].天津市財貿(mào)管理干部學院學報,2010(4). 

  [4]IAN SOMMERVILLE.Software Engineering[M].北京:機械工業(yè)出版社,2004. 

  [5]王雅文,宮云戰(zhàn),楊朝紅.軟件測試工具[J].北京化工大學學報,2007(34). 

  [6]陳明.實用軟件工程基礎[M].北京:清華大學出版社,2001.