對軟件的測試,有着不同的測試方法,而一般的,會分為黑盒測試與白盒測試
所謂的黑盒測試,從字面意思理解,好比把一個軟件比作是黑色盒子,我們看不到内部是什麼樣子的,隻能從一邊輸入數據,再從另一邊拿到輸出數據。黑盒測試,我們并不關心軟件内部是怎麼處理的,隻需要從最基本的需求出發,設計一些特别的測試數據,然後輸入,看看軟件的處理,是否滿足功能要求的預期結果。
而白盒測試,恰恰與黑盒測試相反。白盒測試需要分析函數内部的邏輯結構,包括函數的結構、局部數據的定義與引用、函數内部各個控制語句組成的不同路徑等。從技術水平來看,白盒測試是要比黑盒測試要求更高的,需要測試人員對程序的實現語言,架構,邏輯實現有一定的了解,所以白盒測試,一般是由開發人員進行的測試活動。
本文主要讨論下黑盒測試。
(網絡盜圖,侵權删除)
黑盒測試(Black Box Testing)
黑盒測試是什麼
黑盒測試也叫做功能測試,主要關注點是被測的軟件的功能是否實現,而不是内部邏輯的處理情況。
黑盒測試是在軟件測試中使用的最早,也最廣泛的測試方法。在黑盒測試中,被測對象的内部結構,運行情況,這些測試人員都不可見,也并不關心,測試人員對被測試的産品的驗證工作主要是根據規格驗證與規格的一緻性。
就像是取款機,從黑盒測試的角度,我們會插卡,輸入密碼,然後輸入金額,最終取得現金,測試關注這個流程是否正常,金額與實際現金是否匹配等等,而至于取款機内部如何處理,怎麼與銀行間通信,我們是不關心的,這就是黑盒測試方法。
(網絡盜圖,侵權删除)
黑盒測試的目的,時發現如下幾種類型的錯誤:
- 功能錯誤或者功能遺漏;
- 界面錯誤或者UI錯誤;
- 數據結構或者外部數據庫訪問錯誤;
- 性能錯誤;
- 初始化和終止錯誤;
為什麼要做黑盒測試
可能由朋友會有疑惑,既然技術水平更高的開發人員,已經做過了白盒測試,為什麼還要測試人員來做黑盒測試呢?這樣不是即浪費了人力也浪費了時間麼。
其實不然,白盒測試是比較早期的測試活動,進行白盒測試的時候,可能測試對象僅僅是一個模塊,甚至是一個單元、一個循環語句。這時候的測試,确實能夠排除掉語句錯誤,可是一旦模塊進行組合,不同模塊間勢必要進行通信活動,那麼這個整體是否還能正确的穩定的工作呢?不見得啦。
黑盒測試主要用于回答如下的問題:
- 如何測試功能的有效性;
- 怎樣類型的輸入會産生好的測試用例;
- 系統是否對特定的輸入值或類型敏感;
- 如何分隔數據類的邊界;
- 系統能夠承受何種數據率和數據量;
- 特定類型的數據組合會對系統産生何種影響;
(網絡盜圖,侵權删除)
運用黑河測試方法,可以得到标準的測試用例集,可以設計出能夠減少達到合理測試所需的附加測試用例數,能夠設計出能夠告知某些類型錯誤的存在或者不存在,而不僅僅與特定測試相關的錯誤。
一些常用的黑盒測試技術
黑盒測試意味着測試數據的選擇和測試結果的解釋是以軟件的功能屬性為基礎的。黑盒測試不應該由程序的創作人員來執行,因為這樣的測試人員,對程序的内部結構非常了解,在實際測試方法的時候,可能會局限于一些測定的場景或者測試數據。
軟件的功能測試,一定是需要第三方根據需求文檔或者其他文檔說明來進行黑盒測試設計。
盡管黑盒測試是圍繞着用戶的需求文檔來展開的,但是黑盒測試卻不一定需要用戶來參與測試。在絕大多數沒有用戶參與的黑盒測試中,最常見的測試由這幾種:
- 功能性測試
- 容量測試
- 安全性測試
- 負載測試
- 恢複性測試
- 标杆測試
- 穩定性測試
- 可靠性測試
而由用戶參與的測試,主要有外場測試和實驗室測試。
不同用途的功能測試方法,一種是按照順序,依次進行每個程序的特性或功能,另一種途徑是一個模塊一個模塊的進行測試,這種測試一般是每個功能最先被調用的模塊最先測試。
容量測試的目的是檢測軟件在處理海量數據時的局限性。容量測試能夠發現系統效率方面的問題,比如不正确的緩沖區規模,或者對内存空間的占用過大。
負載測試檢測系統在一個很短的時間内處理大量的數據或者執行大量的功能調用的能力。比如雙十一的天貓,春運的12306,就要進行非常大規模的負載測試。
(網絡盜圖,侵權删除)
恢複性測試主要保證系統在崩潰後能夠恢複外部數據的能力。系統能夠完全恢複還是部分恢複這些數據顯得尤為重要,特别是對于需要高可靠性的系統。
标杆測試包含了程序效率的測試。一段程序的有效性很大程度上依賴于硬件環境,因此标杆測試總是考慮軟件與硬件的組合情況。然而,對于大部分軟件工程師,标杆測試主要關注特定的操作的量化數據,有些也會考慮用戶測試,比較不同軟件系統作為标杆測試的有效性。
對于包含了用戶的測試活動,在軟件工程中方法性的考慮是很少的。
一般是在大緻的外場測試和實驗室測試做出測試報告加以區别。
在外場測試中,觀察用戶在他們自己的正常的工作地點使用軟件的情況。除了一般的與可用性方面的特點,外場測試對評價軟件系統的可交互性測試有用,例如系統工作的技術綜合性如何。此外,外場測試是闡述系統到已有過程中的綜合性能的僅有實際手段。
實驗室測試一般用來評價系統的可用性方面的問題。由于實驗室測試的成本比較高,所以這種測試一般是大型的軟件機構才會考慮進行的活動,如IBM,Microsoft這樣的公司。由于實驗室測試給測試人員提供了許多技術可能性,因此其數據手機和分析比外場測試要容易得多。
黑盒測試的優缺點
優點:
- 對于更大的代碼單元來說效率要比白盒測試高;
- 測試人員不需要了解實現的細節,包括特定的框架結構與編程語言;
- 測試人員與編碼人員是相互獨立工作的;
- 從用戶的視角進行測試,所采取的方法和方案容易理解和接受;
- 有助于暴露任何與規格不一緻或者有歧義的問題;
- 測試用例可以在規格完成之後立馬執行;
缺點:
- 能夠被選擇使用的輸入較少,必不可能做到所有的輸入流全部覆蓋,也就是說,測試會進行的不全面;
- 沒有清晰的、簡明的規格或需求說明書,測試用例及方案是很難設計出來的;
- 如果測試人員不被告知開發人員已經執行過的用例,那麼在測試數據上會存在重複,帶來時間和人力的浪費;
- 會有很多程序路徑沒有被測試到;
- 不能直接針對特定的程序代碼,程序可能會非常的複雜;
(網絡盜圖,侵權删除)
黑盒測試不需要考慮程序内部的實現,所以比起白盒測試來說,黑盒測試更容易實現,更容易設計。而且因為更貼合用戶的使用方式,黑盒測試可以最大限度的模拟出用戶會用到的功能及場景。
大部分的測試人員的主要工作,就是進行黑盒測試,也就是對程序或者系統的功能進行測試。這個程序可能功能很簡單,僅需要三兩測試工程師即可進行,也可能功能極其複雜,需要以組為單位,百千餘人的測試團隊進行測試。
充分了解黑盒測試的原理與方法,在實際的工作中,設計測試方案及測試用例就會得心應手,而且在功能的覆蓋率上,也會考慮的很深刻。
,