于慧媛 楊 光 王勇利
(解放軍 91404部隊 河北秦皇島 066001)
黑盒測試充分性分析
于慧媛 楊 光 王勇利
(解放軍 91404部隊 河北秦皇島 066001)
黑盒測試 軟件測試 充分性
伴隨著計算機軟件在信息社會中的廣泛應用,軟件質量問題逐漸成為人們關注的焦點,高質量與高可靠性是軟件謀求質量的要求,而軟件測試則是這兩項要求的重要保障。軟件測試已經形成了完整的、系統的測試方法,并且有眾多的手工和自動化測試工具支持這些方法。從測試是否針對軟件系統內部結構和具體實現算法的角度來看,可分為白盒測試和黑盒測試。其中,軟件測試的充分性直接影響著軟件的質量。在白盒測試情況下,軟件的測試充分性可通過語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋和路徑覆蓋等方法進行度量,但在黑盒情況下,這些基于程序的覆蓋度量方法不再實用,為此提出了基于程序外部特性的測試充分性,即基于功能覆蓋的軟件測試充分性概念,然而對于一個較復雜的指揮流程型軟件,僅僅滿足功能覆蓋的軟件測試充分性是不夠的,還應增加強度、性能及安全性擴充測試,綜合全面的測試才能夠使黑盒測試得到充分測試,使軟件質量得以保障。
白盒測試也稱結構測試或邏輯驅動測試,它是知道產品內部工作過程,可通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作,而不顧它的功能,白盒測試的主要方法有邏輯驅動、基路測試等,主要用于軟件驗證。“白盒”法全面了解程序內部邏輯結構、對所有邏輯路徑進行測試。“白盒”法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據。貫穿程序的獨立路徑數是天文數字。在白盒測試情況下,軟件的測試充分性可通過語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋和路徑覆蓋等方法進行度量。
黑盒測試也稱功能測試或數據驅動測試,它是在已知產品所應具有的功能,通過測試來檢測每個功能是否都能正常使用,在測試時,把程序看作一個不能打開的黑盆子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序接口進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數鋸而產生正確的輸出信息,并且保持外部信息(如數據庫或文件)的完整性。黑盒測試方法主要有等價類劃分、邊值分析、因果圖、錯誤推測等,主要用于軟件確認測試。因此,黑盒測試是從用戶觀點出發的測試,已知產品所應具有的功能,通過測試來檢測每個功能是否都能正常使用,目的是發現軟件需求或者設計規格說明中的錯誤。“黑盒”法著眼于程序外部結構、不考慮內部邏輯結構、針對軟件界面和軟件功能進行測試。“黑盒”法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。相比較白盒測試,黑盒測試則不能采取窮舉路徑的方法,這既不現實也不科學。首先分析一下,軟件最常出現的錯誤類項:①用戶對軟件目標級特性不明確;②編程人員對需求規格說明理解不正確;③編程人員對程序控制流程理解存在偏差;④編程人員的不良編程習慣導致編碼有錯或按鍵錯等。這些錯誤有些往往通過黑盒測試是無法發現的,在借助自動化工具的同時,采用功能覆蓋,及擴充性測試是滿足軟件測試充分性的有效途徑。
在依據程序外部特性的情況下,尤其是嵌入式或復雜指揮流程軟件系統情況下,如何保證軟件測試的充分性是黑盒測試的一個難題。根據軟件需求規格說明中明確規定的軟件系統功能,明確軟件系統完成功能的準則,是軟件測試充分性的保障,并具有指導作用,其作用為,①明確軟件測試輸入集的類型劃分;②明確軟件測試輸出集結果及出處;③明確軟件測試環境搭建的要求;④明確軟件測試問題的屬性。任何一個軟件系統首先必須驗證它能夠正確運行,其次還必須確認系統正確地滿足了用戶的需求,這需要黑盒測試。在黑盒測試中,最重要的是要考核軟件系統能否按照軟件需求規格說明等文檔完成其功能。在不同的測試級別中,功能測試的要求與工具也不盡相同。我們這里以第三方測試為例,軟件測試的功能要求通常為:①按照相關文檔完成設計功能;②對控制流程的正確性、合理性等進行驗證。根據不同的測試目的,不同的機構或相同的測試機構都可能出現不同的測試方法,可能是測試不同區域或是對同一區域的不同層次的測試。如果僅根據這兩項要求進行功能覆蓋性測試,則無法充分地考核軟件的質量,經常出現的問題是:①由于測試環境硬件的約束,黑盒測試的輸入集無法達到充分性測試的要求:如復雜環境下,但由于硬件裝備的限制,無法達到或界定復雜環境,則對于該條件下完成的功能,就存在測試不充分性。②由于軟件需求規格說明中軟件功能的不明確,導致軟件功能存在模糊性,致使軟件測試出現丟、漏等功能用例的設計與執行。③由于軟件需求規格說明中沒有對非法輸入集的功能限制要求,所以根據功能覆蓋測試,則軟件系統的安全性則受到威脅,軟件質量也得不到保障。④對于復雜指揮流程型軟件而言,其每一層軟件系統都會依據各自模塊需求規格說明進行設計,其功能覆蓋測試需要其它模塊及裝備的配合,若想做到充分性測試,其輸入集則是非常龐大的,對于受時間、經費、人力、物力等都方面因素限制的軟件測試,則是無法做到的,這就降低了軟件測試覆蓋的充分性。雖然基于功能覆蓋的充分性測試是非常重要的,但對于軟件質量的保證是不充分的,這就需要在功能覆蓋的充分性測試的基礎上,結合強度、性能及安全性等擴充性測試。
計算機軟件是基于計算機系統的一個重要組成部分,軟件開發完畢后應與系統中其它成分集成在一起,此時需要進行一系列系統集成和確認測試。系統測試應該由若干個不同測試組成,目的是充分運行系統,驗證系統各部件是否都能政黨工作并完成所賦予的任務。下面簡單討論在黑盒測試中,為了使軟件測試充,在基于功能覆蓋的充分性測試基礎上,結合強度、性能及安全性的測試,提高軟件測試的覆蓋度與充分性。
4.1 強度測試 在黑盒測試情況下,基于程序外部特性,強度測試是考核軟件質量的有效手段之一,強度測試是要檢查在系統運行環境不正常乃至發生故障的情況下,系統可以運行到何種程度的測試。例如:⑴把輸入數據速率提高一個數量級,確定輸入功能將如何響應;⑵設計需要占用最大存儲量或其它資源的測試用例進行測試;⑶設計出在虛擬存儲管理機制中引起"顛簸"的測試用例進行測試;⑷設計出會對磁盤常駐內存的數據過度訪問的測試用例進行測試。強度測試的重點就在于由針對性的進行軟件功能的考核,例如:①分布式系統的軟件配置項負載測試:對分布式系統的軟件配置項,通過模擬用戶活動的方式測試其對于用戶請求的響應時間,請求執行時間、負載能力等要素,實現某些真實操作環境下難以實現的并發操作。②性能的強度測試:在提供要求處理的信息量超過設計允許的最大值、數據傳輸能力的飽和、存儲范圍 (如緩沖區、表格區和臨時信息區)超過額定大小的能力情況下,進行計算傳輸數據功能是否正常。③降級能力強度測試:在有可能硬件失效而在設計上又允許降級運行的系統,對每種可能的降級方式都加以驗證。在降級的測試環境下,驗證軟件對硬件失效處理的正確性,包括回到正常運行方式的能力。④長時間連續運行測試:強度測試的時間長度,根據軟件的安全關鍵程度和系統的使命要求而定,不同的軟件系統其工作時間的要求不同,往往一些存儲空間不足或分系統之間不協調的問題就會暴露出來。
4.2 性能測試 性能測試是要檢查系統是否滿足在需求說明書中規定的性能。這種測試常常與強度測試結合進行,需要事先對被測軟件提出性能指標,如傳輸連接的最長時限、傳輸的錯誤率、計算的精度、記錄的精度、響應的時限和恢復時限等。特別是對于實時系統或嵌入式系統。性能測試有時與強度測試相結合,經常需要其他軟硬件的配套支持。對于實時和嵌入式系統,軟件部分即使滿足功能要求,也未必能夠滿足性能要求,雖然從單元測試起,每一測試步驟都包含性能測試,但只有當系統真正集成之后,在真實環境中才能全面、可靠地測試運行性能系統性能測試是為了完成這一任務,基于流程的測試雖然可以覆蓋到每個單元的功能,但是對于計算判斷類的小單元,則未必測試完成。在實施黑盒測試時又分為客戶端的測試和服務器端的性能測試。客戶端的測試主要關注應用的業務邏輯,用戶界面,功能測試等;服務器端的測試主要關注服務器的性能,衡量系統的響應時間、事務處理速度和其他時間敏感的需求。在應用系統最終被交付之前保證這兩方面的測試沒有缺陷。
4.3 安全性測試 無論進行哪種或哪一級別的軟件測試,都需要從軟件的整體去考慮軟件系統在應用過程中的安全性問題,安全性測試檢查系統對非法侵入的防范能力。安全性測試期間,測試人員假扮非法入侵者,采用各種辦法試圖突破防線。例如,①想方設法截取或破譯口令;②專門定做軟件破壞系統的保護機制;③故意導致系統失敗,企圖趁恢復之機非法進入;④試圖通過瀏覽非保密數據,推導所需信息等等。理論上講,只要有足夠的時間和資源,沒有不可進入的系統。因此系統安全設計的準則是,使非法侵入的代價超過被保護信息的價值。此時非法侵入者已無利可圖。對于復雜指揮流程型軟件而言,軟件的復雜程度越高,所潛在的安全隱患則越高,不同的編程人員對于安全防范的編程方式及策略略有不同,針對不同的安全防護模式,要有針對性地補充測試。在軟件設計開發過程中,往往用戶在軟件需求規格說明中對于非法越界或高強度等操作沒有明確說明,這時編程人員的經驗則直接影響著軟件安全性能,及軟件所應具備的安全防護功能。如果,依據軟件需求規格說明中沒有明確針對安全使用的說明及要求,則按照功能覆蓋的充分性測試會遺漏掉軟件系統中的部分程序。增加安全性測試有助于黑盒充分性測試。
本文針對黑盒測試中軟件測試覆蓋度充分性進行了分析,根據實際操作應用,總結并提出了針對復雜指揮流程型軟件的高度充分性測試。對于黑盒測試的充分性,不同級別的軟件在采取“功能 +性能 +安全”的測試策略時,還應增加其它類型的擴展性測試方法。
[1] 虞 翊,吳芳美.黑箱條件下的軟件測試充分性與揭錯能力分析[J].計算機工程,2001,(6):75
[2] 阿蒙工作室.軟件測試綜合資料庫 http://www.vchome.net 2003年9月5日
[3] 李春霞.黑盒測試方法探析[J].甘肅高師學報,2009,14(2):31
(2010-05-13 收稿)(陳 遷 編輯)
T P311.1
A
1008-6633(2010)04-503-03