一、引言
隨著軟體市場的成熟,人們對軟體作用的期望值也越來越高,我國的軟體企業已越來越意識到軟體測驗的重要性,逐漸加大軟體測驗在整個軟體開發的系統工程中的比重,
軟體測驗并非傳統意義上產品交付前單一的“找錯”程序,而是貫穿于軟體程序的始終,是一個科學的質量控制程序,而對于任何工程產品都可以使用以下兩種方法之一進行測驗,即黑盒測驗與白盒測驗,
二、黑盒測驗在軟體測驗中的作用
黑盒測驗也稱為功能測驗、行為測驗或資料驅動測驗,在測驗時,把程式看作一個不能打開的黑盒,測驗人員完全不考慮程式內部的邏輯結構和內部特性,只依據程式的需求規格說明書,檢查程式的功能是否符合它的功能說明,因此黑盒測驗是基本測驗,例如:我們用C#撰寫“計算器”應用程式,我們如果輸入7并按sqrt鍵,就會得到結果2.645751311,使用黑盒子測驗方式,不管“求平方根”要經歷多少復雜運算,只關心他的運行結果,
黑盒測驗方法主要有等價類劃分、邊值分析、因――果圖、錯誤推測等,主要用于軟體確認測驗,“黑盒”法著眼于程式外部結構、不考慮內部邏輯結構、針對軟體界面和軟體功能進行測驗,“黑盒”法是窮舉輸入測驗,只有把所有可能的輸入都作為測驗情況使用,才能以這種方法查出程式中所有的錯誤,實際上測驗情況有無窮多個,人們不僅要測驗所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測驗,黑盒測驗的主要缺陷是難于衡量系統的完整性,而白盒測驗正好可以彌補這個缺陷,
“黑盒”表示看不見盒子里頭的東西,意味著黑盒測驗不關心軟體內部設計和程式實作,只關心外部表現,即通過觀察輸入與輸出即可知道測驗的結論,任何人都可以依據軟體需求來執行黑盒測驗,黑盒測驗注重于測驗軟體的功能性需求,著眼于程式外部結構,不考慮內部邏輯結構,主要針對軟體界面和軟體功能進行測驗,多應用于測驗程序的后期,它是一種根據軟體需求,設計檔案,模擬客戶場景隨系統進行的實際測驗.這種測驗技術涵蓋了測驗的方方面面,它主要是為發現以下幾類錯誤:是否出現功能錯誤或遺漏;在介面上能否進行正確的輸入與輸出;是否存在資料結構錯誤或外部資料庫訪問錯誤;性能上是否能夠滿足要求;是否有初始化或終止性錯誤,
所以黑盒測驗實際上是檢查以下幾點是否滿足要求:
1、c正確性 (Correctness):計算結果,命名等方面,
2、d可用性 (Usability):是否可以滿足軟體的需求說明,
3、e邊界條件 (Boundary Condition):輸入部分的邊界值,就是使用等價類劃分,試試最大最小和非法資料等等,
4、f性能 (Performance):程式的性能取決于兩個因素:運行速度的快慢和需要消耗的系統資源,如果在測驗程序中發現性能問題,修復起來是非常艱難的,因為這常常意味著程式的演算法不好,結構不好,或者設計有問題,因此在產品開發的開始階段,就要考慮到軟體的性能問題,
5、g壓力測驗 (Stress): 多用戶情況可以考慮使用壓力測驗工具,建議將壓力和性能測驗結合起來進行,如果有負載平衡的話還要在服務器端打開監測工具 , 查看服務器 CPU 使用率,記憶體占用情況,如果有必要可以模擬大量資料輸入,對硬碟的影響等等資訊,
6、h錯誤恢復 (Error Recovery):錯誤處理,頁面資料驗證,包括突然間斷電,輸入錯誤資料等,
7、i安全性測驗 (Security):特別是一些商務網站,或者跟錢有關,或者和公司秘密有關的 web 更是需要這方面的測驗,
8、j 兼容性 (Compatibility):不同瀏覽器,不同應用程式版本在實作功能時的表現,
應用黑盒測驗技術,能夠設計出滿足下述標準的測驗用例集:
(1)所設計出的測驗用例能夠減少為達到合理測驗所需要設計的測驗用例總數;
(2)所設計出的測驗用例能夠告訴我們,是否存在某些型別的錯誤,而不僅僅指出與特定測驗相關的錯誤是否存在,
三、白盒測驗在軟體測驗中的作用
白盒測驗也稱結構測驗或邏輯驅動測驗,是一種以理解軟體內部結構和程式運行方式為基礎的軟體測驗技術,通常需要跟蹤一個輸入經過了哪些處理,這些處理方式是否正確,這種方法是把測驗物件看作一個打開的盒子,它允許測驗人員利用程式內部的邏輯結構及有關資訊,設計或選擇測驗用例,對程式所有邏輯路徑進行測驗,
白盒測驗關注的是被測物件的內部狀況,需要跟蹤源代碼的運行,通過檢查軟體內部的邏輯結構,對軟體中的邏輯路徑進行覆寫測驗;在程式不同地方設立檢查點,檢查程式的狀態,以確定實際運行狀態與預期狀態是否一致,白盒測驗者必須理解軟體內部設計與程式實作,并且能夠撰寫測驗驅動程式,一般由開發人員兼任測驗人員的角色,在很多測驗人員,尤其是初級測驗人員認為,白盒測驗是只有非常了解程式代碼的高級測驗人員才能做的測驗,熟悉代碼結構和功能實作的程序當然對測驗有很大的幫助,但有些白盒測驗是不需要測驗人員懂得每一行程式代碼的,假如我們有如下程式:

對于上面的程式,設計兩個測驗用例則可以滿足條件覆寫的要求,
測驗用例的輸入為:
{ a=5、b=15、c=15}
{ a=2、b=15、c=15}
上面的兩個測驗用例雖然能夠滿足條件覆寫的要求,但是也不能對判斷條件進行檢查,例如把第二個條件b>15錯誤的寫成b<15,、上面的測驗用例同樣滿足了分支覆寫,
軟體的白盒測驗是對軟體的程序性細節做細致的檢查,通過在不同點檢查程式狀態,確定實際狀態是否與預期的狀態一致,白盒測驗主要是想對程式模塊進行如下檢查:
1、對程式模塊的所有獨立的執行路徑至少測驗一遍,
2、對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測一遍,
3、在回圈的邊界和運行的界限內執行回圈體,
4、測驗內部資料結構的有效性,等等,
白盒測驗的主要方法有陳述句覆寫、判定覆寫、條件覆寫、判定/條件覆寫、條件組合覆寫、路徑覆寫等,它是深入到代碼一級的測驗,使用這種技術發現問題最早,而且效果也是最好的,該技術主要的特征是測驗物件進入了代碼內部,根據開發人員對代碼和程式的熟悉程度,對有需要的部分進行軟體編碼,開發人員根據自己對代碼的理解和接觸來進行軟體測驗,
四、白盒測驗與黑盒測驗的關系
白盒測驗和黑盒測驗都是非常重要的環節,不存在技術含量誰高誰低的問題,只是兩者的偏重不同,使用的技術也不同,黑盒測驗人員偏重于業務方面,而白盒測驗人員側重于實作方式;黑盒測驗注重整體,而白盒測驗則更注重區域,白盒測驗是對程序的測驗,黑盒測驗是對結果的測驗,
五、測驗用例
實際上測驗情況有很多個,不僅要測驗所有有限的輸入,而且還要對那些不合法但可能的輸入進行測驗,這樣看來,完全測驗是不可能的,所以我們要進行有針對性的測驗,通過制定測驗案例指導測驗的實施,保證軟體測驗有組織、按步驟,以及有計劃地進行,測驗行為必須能夠加以量化,才能真正保證軟體質量,而測驗用例就是將測驗行為具體量化的方法之一,其中邏輯覆寫技術是白盒測驗的典型技術,而等價劃分、邊界分析、因果圖等技術則是黑盒測驗的較典型的技術,
六、結束語
黑盒測驗和白盒測驗是兩種不同的測驗方法,在整個的測驗程序中兩種方法都會用到,但以經驗來看,在一個專案中測驗工程師還是以黑盒測驗為主,白盒測驗為輔,因為你首先要用黑盒測驗來驗證結果是否正確,或者說目標是否正確,如果結果正確,然后再用白盒測驗來驗證,這個正確的結果是不是由于正確的程序產生的,如果結果不正確,那么用白盒測驗來找到程序中錯誤的地方,只有先做好黑盒測驗,然后用白盒測驗驗證,這個測驗才能說做的完整了,
在這里推薦一個軟體測驗交流群,QQ:642830685,群中會不定期的分享軟體測驗資源,面試測驗題以及行業資訊,小伙伴們可以在群中積極交流與互動,還有技術大佬為你解答相關問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250487.html
標籤:其他
