軟件測試是軟件工程中的一個非常重要的環節,是開發項目整體的一部分,是伴随軟件工程的誕生而誕生的,但軟件測試不是萬能的,不可能發現全部缺陷。其中,黑盒測試和白盒測試是兩種不同類型的軟件測試策略,它們具有同樣強大的功能,白盒測試和黑盒測試往往不是決然分開的,一般在白盒測試中交叉使用黑盒測試的方法,在黑盒測試中交叉使用白盒測試的方法。軟件測試最新自學教程
一、黑盒(功能性)測試和白盒(結構性)測試(1)黑盒測試:黑盒測試又稱功能性測試、數據驅動測試、基于規格說明的測試。它在己知軟件所應具有的功能的基礎上,檢查程序功能能否按需求規格說明書的規定正常使用,功能是否有遺漏,性能等特性要求是否滿足。
在進行黑盒測試時隻需參照規格說明檢查軟件,不要求考察代碼,從用戶視角來對軟件進行測試。黑盒測試的目的在于檢測軟件功能是否正确和完整,檢測是否有人機交互和數據訪問錯誤,檢測軟件行為和性能是否滿足需求以及檢測軟件初始化和終比過程是否有錯誤。 黑盒測試要遵循以下的步驟:首先需要先根據規格說明書來生成測試用例,然後執行測試并分析覆蓋标準,最後再根據所得結果來作出結論。
黑盒測試方法主要有等價類劃分、邊值分析、因――果圖、錯誤推測等,主要用于軟件确認測試。“黑盒”法着眼于程序外部結構、不考慮内部邏輯結構、針對軟件界面和軟件功能進行測試。“黑盒”法是窮舉輸入測試,隻有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。黑盒測試的主要缺陷是難于衡量系統的完整性,而白盒測試正好可以彌補這個缺陷。
“黑盒”表示看不見盒子裡頭的東西,意味着黑盒測試不關心軟件内部設計和程序實現,隻關心外部表現,即通過觀察輸入與輸出即可知道測試的結論。任何人都可以依據軟件需求來執行黑盒測試。黑盒測試注重于測試軟件的功能性需求,着眼于程序外部結構,不考慮内部邏輯結構,主要針對軟件界面和軟件功能進行測試,多應用于測試過程的後期。它是一種根據軟件需求,設計文檔,模拟客戶場景随系統進行的實際測試.這種測試技術涵蓋了測試的方方面面,它主要是為發現以下幾類錯誤:是否出現功能錯誤或遺漏;在接口上能否進行正确的輸入與輸出;是否存在數據結構錯誤或外部數據庫訪問錯誤;性能上是否能夠滿足要求;是否有初始化或終止性錯誤。
所以黑盒測試實際上是檢查以下幾點是否滿足要求:
a、c正确性 (Correctness):計算結果,命名等方面。
b、d 可用性 (Usability):是否可以滿足軟件的需求說明。
c、e 邊界條件 (Boundary Condition):輸入部分的邊界值,就是使用等價類劃分,試試最大最小和非法數據等等。
d、f 性能 (Performance):程序的性能取決于兩個因素:運行速度的快慢和需要消耗的系統資源。如果在測試過程中發現性能問題,修複起來是非常艱難的,因為這常常意味着程序的算法不好,結構不好,或者設計有問題。因此在産品開發的開始階段,就要考慮到軟件的性能問題。
e、g 壓力測試 (Stress): 多用戶情況可以考慮使用壓力測試工具,建議将壓力和性能測試結合起來進行。如果有負載平衡的話還要在服務器端打開監測工具 , 查看服務器 CPU 使用率,内存占用情況,如果有必要可以模拟大量數據輸入,對硬盤的影響等等信息。
f、h 錯誤恢複 (Error Recovery):錯誤處理,頁面數據驗證,包括突然間斷電,輸入錯誤數據等。
g、i 安全性測試 (Security):特别是一些商務網站,或者跟錢有關,或者和公司秘密有關的 web 更是需要這方面的測試。
h、j 兼容性 (Compatibility):不同浏覽器,不同應用程序版本在實現功能時的表現。 應用黑盒測試技術,能夠設計出滿足下述标準的測試用例集: a.所設計出的測試用例能夠減少為達到合理測試所需要設計的測試用例總數; b.所設計出的測試用例能夠告訴我們,是否存在某些類型的錯誤,而不僅僅指出與特定測試相關的錯誤是否存在。
(2)白盒測試:白盒測試也稱結構測試或邏輯驅動測試,是一種以理解軟件内部結構和程序運行方式為基礎的軟件測試技術,通常需要跟蹤一個輸入經過了哪些處理,這些處理方式是否正确。這種方法是把測試對象看作一個打開的盒子,它允許測試人員利用程序内部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。
白盒測試關注的是被測對象的内部狀況,需要跟蹤源代碼的運行。通過檢查軟件内部的邏輯結構,對軟件中的邏輯路徑進行覆蓋測試;在程序不同地方設立檢查點,檢查程序的狀态,以确定實際運行狀态與預期狀态是否一緻。白盒測試者必須理解軟件内部設計與程序實現,并且能夠編寫測試驅動程序,一般由開發人員兼任測試人員的角色。在很多測試人員,尤其是初級測試人員認為,白盒測試是隻有非常了解程序代碼的高級測試人員才能做的測試。熟悉代碼結構和功能實現的過程當然對測試有很大的幫助,但有些白盒測試是不需要測試人員懂得每一行程序代碼的。
對于上面的程序,設計兩個測試用例則可以滿足條件覆蓋的要求。 測試用例的輸入為: { a=5、b=15、c=15} { a=2、b=15、c=15} 上面的兩個測試用例雖然能夠滿足條件覆蓋的要求,但是也不能對判斷條件進行檢查,例如把第二個條件b>15錯誤的寫成b<15,、上面的測試用例同樣滿足了分支覆蓋。
軟件的白盒測試是對軟件的過程性細節做細緻的檢查。通過在不同點檢查程序狀态,确定實際狀态是否與預期的狀态一緻。白盒測試主要是想對程序模塊進行如下檢查: a、對程序模塊的所有獨立的執行路徑至少測試一遍。 b、對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測一遍。 c、在循環的邊界和運行的界限内執行循環體。 d、測試内部數據結構的有效性,等等。 白盒測試的主要方法有語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋等,它是深入到代碼一級的測試,使用這種技術發現問題最早,而且效果也是最好的。該技術主要的特征是測試對象進入了代碼内部,根據開發人員對代碼和程序的熟悉程度,對有需要的部分進行軟件編碼,開發人員根據自己對代碼的理解和接觸來進行軟件測試。
二、白盒測試與黑盒測試的關系
白盒測試和黑盒測試都是非常重要的環節,不存在技術含量誰高誰低的問題,隻是兩者的偏重不同,使用的技術也不同。黑盒測試人員偏重于業務方面,而白盒測試人員側重于實現方式;黑盒測試注重整體,而白盒測試則更注重局部。白盒測試是對過程的測試,黑盒測試是對結果的測試。
三、測試用例實際上測試情況有很多個,不僅要測試所有有限的輸入,而且還要對那些不合法但可能的輸入進行測試。這樣看來,完全測試是不可能的,所以我們要進行有針對性的測試,通過制定測試案例指導測試的實施,保證軟件測試有組織、按步驟,以及有計劃地進行。測試行為必須能夠加以量化,才能真正保證軟件質量,而測試用例就是将測試行為具體量化的方法之一。其中邏輯覆蓋技術是白盒測試的典型技術,而等價劃分、邊界分析、因果圖等技術則是黑盒測試的較典型的技術。
四、結束語黑盒測試和白盒測試是兩種不同的測試方法。在整個的測試過程中兩種方法都會用到,但以經驗來看,在一個項目中測試工程師還是以黑盒測試為主,白盒測試為輔。因為你首先要用黑盒測試來驗證結果是否正确,或者說目标是否正确,如果結果正确,然後再用白盒測試來驗證,這個正确的結果是不是由于正确的過程産生的。如果結果不正确,那麼用白盒測試來找到過程中錯誤的地方。隻有先做好黑盒測試,然後用白盒測試驗證,這個測試才能說做的完整了。軟件測試最新自學教程
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!