引言數據庫
這篇文章是我從stackoverflow上翻譯過來的,若是之後遇到好的文章我還會繼續翻譯。編程
問題數據結構
哪一種類型的測試對測試來講最重要的?爲何?ide
回覆一:性能
黑盒測試測試
是從測試對象的外部視角推導出測試用例,這些測試能夠是功能性的,也能夠是非功能性的,儘管一般是功能性的,測試設計者選擇有效的和無效的輸入來驗證正確的輸出。測試者不知道測試對象的內部結構。翻譯
白盒測試設計
使用系統內部結構視角基於內部結構來設計測試用例。它須要編程技能來驗證軟件的全部路徑。測試人員選擇測試用例輸入,經過代碼執行路徑而後肯定適當的輸出。在電氣硬件測試,電路中的每個節點都要被探測和測量;例如電路測試(ICT)對象
我認爲二者都很重要,可是他們一般在開發和測試那裏是分開的。blog
內部結構知識對測試者來講很重要嗎?我聽到一些觀點認爲有測試意識能幫助他們更好的測試,但我也聽過這樣的說法,即時這些知識能夠幫助功能測試,對代碼進行測試,而不是預期的解決方案。
做者回復:
黑盒測試
特色:測試功能
依據:需求規格說明書
舉例:等價類劃分、邊界值測試
優勢:能站在用戶的立場上進行測試
缺點:不能測試程序內部特定部位和程序方法
黑盒測試把程序看做一個不能打開的黑盒子,在徹底不考慮程序內部結構和內部特性的狀況下,針對「軟件界面」和」軟件功能「進行測試,只檢查功能是否符合需求規格說明書能正常使用。所以黑盒測試又叫功能測試或數據驅動測試。
黑盒測試主要是爲了發現如下錯誤:
是否有不正確或者遺漏了的功能;
在接口上,輸入可否正確的接受?可否輸出正確的結果?
是否有數據結構錯誤或外部信息(例如數據庫文件)訪問錯誤?
性能上是否可以知足要求?
是否有初始化或終止性錯誤?
黑盒的測試用例技術設計有三種:邊界值分析、等價類劃分、錯誤推測法。
白盒測試
特色:測試程序接口和結構
依據:軟件程序設計
舉例:邏輯覆蓋
優勢:對程序內部進行特定部位進行覆蓋測試
缺點:沒法堅持程序外部特徵
白盒測試是對軟件的過程性細節作細緻的檢查。這種方法是把測試對象看做一個打開的盒子,他容許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序全部邏輯路徑進行測試。經過在不一樣點檢查程序狀態,肯定實際狀態是否與預期的狀態一致。所以白盒測試又稱爲」結構測試「或」邏輯驅動測試「。白盒測試是按照程序內部的結構來測試程序,經過測試檢驗產品內部動做是否按照設計規格說明書的要求正常進行,檢驗程序中的每條通道是否都按照規定正常工做。
白盒測試主要是想對程序模塊進行如下檢查:
對程序模塊的全部獨立的執行路徑至少測試一遍;
對全部的邏輯斷定,取」真「與」假「的兩種狀況都能至少測一遍;
在循環的邊界和運行的界限內執行循環體;
測試內部數據結構的有效性,等等;
靜態白盒測試 :即代碼審查,正式審查和檢驗設計和程序代碼;
動態白盒測試 利用查看代碼功能和實現方式獲得的信息來設計和執行測試,也叫結構測試;
白盒的測試用例技術包括邏輯覆蓋和基本路徑測試:
邏輯覆蓋:是以程序內在邏輯結構爲基礎的測試用例設計技術,這一方法要求測試人員對程序的邏輯結構有清楚的瞭解。
基本路徑測試:在程序控制流程圖的基礎上,經過分析控制構造的環路複雜性,導出基本可執行路徑集合,從而設計測試用例。
黑盒測試和白盒測試是兩種不一樣的測試方法,他們都有自個的優缺點,只有在實戰中靈活運用才能達到最佳的測試效果。