常見的軟件測試方法和分類


黑盒測試(Black Box)

  測試內容:黑盒測試是把測試對象看做一個黑盒子,利用黑盒測試法進行動態測試時,需要測試軟件產品已經實現的功能是否符合功能設計要求,不需測試軟件產品的內部結構和處理過程。
  黑盒測試注重於測試軟件的功能性需求,也即黑盒測試使軟件工程師派生出執行程序所有功能需求的輸入條件。黑盒測試並不是白盒測試的替代品,而是用於輔助白盒測試發現其他類型的錯誤。

黑盒測試具體說明鏈接:what's the 黑盒測試

 

白盒測試(White Box)

  測試內容:設計者可以看到軟件系統的內部結構,並且使用軟件的內部知識來指導測試數據及方法的選擇。
  白盒測試通常被認為是單元測試與集成測試,期中有六種測試方法:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。

白盒測試具體說明鏈接:what's the 白盒測試

  
灰盒測試(Gray Box)

  測試內容:介於黑盒和白盒之間,是一種綜合測試的方法,他將白盒測試和黑盒測試結合在一起,構成一種無縫測試技術。
  灰盒測試是基於程序運行時的外部表現又結合程序內部邏輯結構來設計測試用例,執行程序並采集程序路徑執行信息和外部用戶接口結果的測試技術。灰盒測試法旨在驗證軟件滿足外部指標以及軟件的所有通道或路徑都進行了檢驗。

灰盒測試具體說明鏈接:what's the 灰盒測試


總結

  實際工作中,對系統的了解越多越好。目前大多數的測試人員都是做黑盒測試,很少有做白盒測試的。 因為白盒測試對軟件測試人員的要求非常高,需要有很多編程經驗。做.NET程序的白盒測試你要能看得懂.NET代碼。做JAVA程序的測試,需要你能看懂JAVA的代碼。 如果你都能看懂了,你還會做測試么

 

按測試是手動還是自動上分類

手動測試(Manual Test)  

  測試內容:測試人員用鼠標去手動測試 (測試GUI),用鼠標各種點點點,手工測試更能容易發現軟件的Bug。

自動化測試(Automation Test)

  測試內容:用程序測試程序 (測試API),由測試人員根據手工測試的Case來決定自動化測試的Case,再編寫程序或者腳本來替代手工做自動化測試

總結

  對於項目來說, 手動測試和自動化測試同等重要,都是保障軟件質量的方法。 目前大部分的項目組都是手動測試和自動化測試相結合。因為很多測試無法做成自動化,很多復雜的業務邏輯也很難自動化, 所以自動化測試無法取代手動測試。
  對於軟件測試人員個人發展來說, 做自動化測試是個挑戰,也是測試人員發展的一個方向,  需要測試人員學習大量的開發知識(開發的知識真是學無止境啊)。 從長遠角度來看,自動化測試肯定是越來越吃香的。而手動測試比較適合剛工作不久的人,手動測試最大的缺點就是技術含量低,單調乏味,容易廢人。
  總的來說,手工測試勝在測試業務邏輯,而自動化測試勝在測試底層架構。
  如果被測試的程序可測試性比較好, 很有必要做成自動化測試。 能做自動化的盡量做成自動化, 比如下面這些情形是可以做自動化的:

 

按測試的目的分類

功能測試
  測試內容:測試的范圍從小到大,從內到外, 從程序開發人員(單元測試)到測試人員,到一般用戶Alpha/Beta測試

  • Unit Test 單元測試:在最低的功能/參數上驗證程序的准確性,比如測試一個函數的正確性(開發人員做的)
  • Functional Test 功能測試:驗證模塊的功能  (測試人員做的)
  • Integration Test 集成測試:驗證幾個互相有依賴關系的模塊的功能 (測試人員做的)
  • Scenario Test  場景測試:驗證幾個模塊是否能完成一個用戶場景 (測試人員做的)
  • System Test  系統測試:對於整個系統功能的測試 (測試人員做的)
  • Alpha 測試:軟件測試人員在真實用戶環境中對軟件進行全面的測試 (測試人員做的)
  • Beta 測試:真實的用戶在真實的用戶環境中進行的測試, 也叫公測   (最終用戶做的)

非功能測試
  測試內容:一個軟件除了基本功能之外,還有很多功能之外的特性,這些叫“Quality of Service requirement”服務質量需求。沒有軟件的功能,這些特性都無從表現出來,因此,我們要在軟件開發的適當階段-基本功能完成后做這些測試。

  • Stress test 壓力測試:驗證軟件在超過負載設計的情況下仍能返回正確的結果,沒有崩潰
  • Load test 負載測試:測試軟件在負載情況下能否正常工作
  • Performance test性能測試:測試軟件的效能,是否提供滿意的服務質量
  • Accessibility test:軟件輔助功能測試-測試軟件是否向殘疾用戶提供足夠的輔助功能
  • Localization/Globalization:本地化/全球化測試
  • Compatibility Test:兼容性測試
  • Configuration Test:配置測試-測試軟件在各種配置下能否正常工作
  • Usability Test:可用性測試 –測試軟件是否好用
  • Security Test:軟件安全性測試

性能測試
  性能測試要求測試人員熟練性能測試工具,比如QTP, LoadRunner, Jmeter。  Visual Studio也提供了很多性能測試的工具. 要求測試人員對低層協議非常理解和編寫腳本
  性能測試非常有技術含量, 很有發展前途, 是軟件測試人員的一個職業發展方向。
  性能測試推薦看一本書:《軟件性能測試過程詳解與案例剖析》

安全性測試
  安全性測試的內容很廣, 非常有難度啊。 我只接觸過XSS(跨站腳本攻擊)和SQL注入攻擊。
  安全性測試非常有技術含量, 我認為也是軟件測試人員的一個職業發展方向

 

按階段分類

單元測試

  是指對軟件中的最小可測試單元進行檢查和驗證。樁模塊(stud)是指模擬被測模塊所調用的模塊,驅動模塊(driver)是指模擬被測模塊的上級模塊,驅動模塊用來接收測試數據,啟動被測模塊並輸出結果。

集成測試

  是單元測試的下一階段,是指將通過測試的單元模塊組裝成系統或子系統,再進行測試,重點測試不同模塊的接口部門。集成測試就是用來檢查各個單元模塊結合到一起能否協同配合,正常運行。

系統測試

  指的是將整個軟件系統看做一個整體進行測試,包括對功能、性能,以及軟件所運行的軟硬件環境進行測試。系統測試的主要依據是《系統需求規格說明書》文檔。

驗收測試

  指的是在系統測試的后期,以用戶測試為主,或有測試人員等質量保障人員共同參與的測試,它也是軟件正式交給用戶使用的最后一道工序。 驗收測試又分為a測試和beta測試,其中a測試指的是由用戶、 測試人員、開發人員等共同參與的內部測試,而beta測試指的是內測后的公測,即完全交給最終用戶測試。

 
        

按測試的時機和作用分類

  在開發軟件的過程中,不少測試起着“烽火台”的作用,它們告訴我們軟件開發的流程是否暢通。

  • Smoke Test:“冒煙”–如果測試不通過,則不能進行下一步工作
  • Build Verification Test(BVT):驗證構建是否通過基本測試。
  • Acceptance Test:驗收測試,為了全面考核某功能/特性而做的測試

BVT測試是一種Smoke Test, 指Build生成好之后,自動運行的自動化測試腳本來檢查這個Build的基本功能。 如果BVT測試失敗了,需要開發人員馬上修改,重新生成Build

 

按測試測策略分類

  • Regression Test 回歸測試:對一個新的版本,重新運行以往的測試用例,看看新版本和已知的版本相比是否有退化 (regression)
  • Ad hoc Test 探索性測試:隨機進行的,探索性的測試。
  • Sanity Test:粗略的測試, 只需要執行部分的測試用例(比如很多Web網頁,確定比較重要以及常用的URL鏈接是活着的,能正常打開返回數據)

Regression Test 回歸測試

對軟件測試人員來說就是重復測試,所以回歸測試最好是自動化的,否則測試人員就要一遍又一遍地重復測試: 

  • 開發人員做些小改動,就需要測試人員做回歸測試。確保現有的功能沒有被破壞
  • Bug Fix 也需要回歸測試,確保新的代碼修復了Fix, 也確保現有的功能沒有被破壞
  • 項目后期,需要做一個完整回歸測試,確保所有的功能都是好的

Ad hoc Test 探索性測試
  平常我最喜歡做隨機測試了, 拋開test case.  自己按照自己的思路,隨便點點。 如果測試GUI,Ad hoc能發現大量的bug。這個主要是基於測試人員對軟件系統的了解以及測試人員自己個人的測試經驗積累,差不多行成了一種習慣性的操作

 

其他測試類型

回歸測試

  是指對軟件的新的版本測試時,重復執行上一個版本測試時的用例。是指對軟件的新的版本測試時,重復執行上一個版本測試時的用例。

冒煙測試

  是指在對一個新版本進行大規模的測試之前,先驗證一下軟件的基本功能是否實現,是否具備可測性。

隨機測試

  是指測試中所有的輸入數據都是隨機生成的,其目的是模擬用戶的真實操作,並發現一些邊緣性的錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM