1. 程式人生 > >【軟體測試基礎】軟體測試的分類

【軟體測試基礎】軟體測試的分類

1.按測試手段來分類

  • 物件的可見度:黑盒測試、白盒測試
  • 狀態:靜態測試、動態測試
  • 執行方式:手工測試和自動化測試

 

2.黑盒測試

  • 在測試中,完全不考慮程式內部結構和內部特性的情況下,通過相關暴露出來的介面,來對程式進行測試。
  • 只檢查程式的功能是否能按照需求規格說明的規定正常使用。
  • 程式是否能適當地接收輸入資料,併產生正確的輸出資訊。
  • 著眼於程式的外部結構,不考慮內部的邏輯。
  • 一般來說,針對軟體外部的介面或者可見的功能來進行測試。
  • 是從使用者的視角,通過不同的資料和事件來驅動系統。並通過輸出結果來進行判斷。

 

黑盒測試的優缺點:

優點

  • 容易實施,不需要關注內部的實現
  • 更貼近使用者的使用角度

 

缺點:

  • 測試覆蓋率較低,一般只能覆蓋到程式碼量的不到40%。
  • 針對黑盒的自動化測試,複用率較低,維護成本較高。(針對功能不適合做自動化測試,因為功能經常會變,特別是網際網路產品)

 

黑盒測試主要測試什麼?

  • 是否有不正確或遺漏的功能?
  • 在介面上,輸入是否能正確的接受?能否輸出正確的結果?
  • 是否有資料結構錯誤或外部資訊(例如資料檔案)訪問錯誤?
  • 效能上是否能夠滿足要求?

 

黑盒測試的主要設計方法:

  • 等價類劃分法:所有輸入中等價的劃分為一類,從而形成若干典型的,代表性的輸入。
  • 邊界值分析法:開區間、閉區間,邊界的值。因為開發人員在處理邊界值時,容易出現問題。
  • 錯誤推測法:基於經驗或直覺來判斷程式中可能出現錯誤的地方,從而有針對性地設計測試用例。比如介面輸入時,考慮特殊字元的處理;處理檔案時,考慮檔案不存在、檔案超大這些特殊的情況。
  • 因果圖法:根據需求規格說明書,針對每種輸入和輸出,在因果圖中,會把輸入和輸出看作原因和結果,對輸入和輸出賦以特定的識別符號,然後將這些情況叫做因果圖。根據規格語義的說明,形成一個判定表。根據判定表,來編寫測試用例。
  • 正交試驗分析法:通過正交性,從一組資料中篩選出典型的、代表性資料的設計方法。主要用於篩選輸入資料,然後再來設計測試用例。
  • 狀態遷移圖法:通過梳理軟體功能點裡的狀態遷移關係,來設計測試用例。所謂狀態遷移,比如軟體有一個審批的功能,提交審批到待審批狀態,到審批後通過或退回這些狀態。通過狀態畫出之間關係變遷的一個關係圖。
  • 流程分析法:梳理程式的邏輯執行的路徑來設計測試用例。

 

3.白盒測試

白盒測試:測試人員對於內部結構是非常瞭解的。邏輯結構對測試人員是透明的。所以白盒測試又稱為結構化測試和透明盒測試。白盒測試是針對程式的邏輯結構來設計測試用例。用邏輯的覆蓋率來測試程式的完整性。

 

主要的邏輯單位:

語句、條件、條件組合、分支、路徑

不同的邏輯單位有不同的覆蓋方法。

  • 語句覆蓋:測試用例設計出來,執行以後會保證每條語句至少執行一次。
  • 判定覆蓋:每條分支至少執行一次,也稱分支覆蓋。
  • 條件覆蓋:覆蓋到條件的表示式,所有的表示式都至少計算一次。
  • 條件組合覆蓋:覆蓋所有不同條件的組合情況。
  • 路徑覆蓋:每一條可能的路徑至少執行一次。

 

白盒測試的優缺點:

優點

  • 迫使測試人員去仔細思考軟體的實現,理解原理。
  • 可以檢測程式碼中的每條分支和路徑。
  • 提示隱藏在程式碼中的錯誤。
  • 對程式碼的測試比較徹底。

 

缺點

  • 昂貴。因為白盒測試需要做到較高的覆蓋率,所以成本高。
  • 無法檢測程式碼中遺漏的路徑和資料敏感性錯誤。
  • 不能直接驗證需求的正確性。

 

白盒測試的主要測試方法

程式碼檢測法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法

  • 程式碼檢測法:包括桌面檢查、程式碼審查和走查,主要檢查程式碼和設計的一致性,對程式碼本身進行檢查。
  • 靜態結構分析法:測試者通過使用測試工具,來分析原始碼的系統結構、資料結構、內部的控制邏輯。通過這樣的內部結構的分析,來設計測試用例。
  • 靜態質量度量法:根據標準的質量模型,比如ISO的質量標準,來作為基礎,然後來構造質量的度量模型,用於評估軟體的各個方面的要素。
  • 邏輯覆蓋法:語句覆蓋、條件覆蓋、條件組合覆蓋、分支覆蓋、判定覆蓋、路徑覆蓋、條件和判定的組合覆蓋,這6種邏輯覆蓋的方法來對程式碼進行邏輯覆蓋。
  • 基本路徑測試法:在程式控制流圖的基礎上,通過分析控制構造的圈複雜度,匯出基本可執行路徑的集合,進而設計測試用例的方法。程式控制流圖,描述程式控制流的一種圖示的方法。

 

4.灰盒測試

介於黑盒、白盒測試之間的一種測試,關注輸出對於輸入的正確性,同時也關注內部表現。更多的是在系統元件這一層評價系統的設計符合需求的情況。

 

5.靜態測試

定義:靜態測試是指無須執行被測程式,而是通過評審軟體文件或程式碼,度量程式靜態複雜度,檢查軟體是否符合變成標準,藉以發現編寫的程式的不足之處,減少錯誤出現的概率。

  • 方式:互審、走查、會議
  • 互審:程式設計師相互檢查對方的程式碼
  • 走查:一個小組集體來走查程式或文件
  • 會議:召開一個正式的會議,並有相應的記錄、紀要、相應結果的文件。

從互審到會議,是從不正式到正式這樣一個區別。

 

6.動態測試

定義:動態測試是指通過執行被測程式,檢查執行結果與預期結果的差異,並分析執行效率、正確性和健壯性等。

 

7.手工測試

定義:有專門的測試人員從使用者視角來驗證軟體是否滿足設計要求的行為。更適用針對深度的測試和強調主觀判斷的測試。

眾包測試、探索式測試都是用手工測試來做的。

 

8.自動化測試

定義:使用單獨的測試工具軟體控制測試的自動化執行以及對預期和結果進行自動檢查。

強調使用第三方的測試工具來控制我們測試自動地執行,還要對預期和結果進行一個檢查。

單元測試、介面測試、 效能測試等

 

9.手工測試vs自動化測試

手工測試

  • 易發現缺陷
  • 容易實施
  • 創造性、靈活性
  • 覆蓋量化難
  • 重複測試效率低
  • 不一致性、可靠性低
  • 人力資源依賴

 

自動化測試

  • 高效率、速度快
  • 高複用性
  • 覆蓋率容易度量
  • 準確、可靠
  • 不知疲勞
  • 機械、發現缺陷率低
  • 一次性投入較大

轉自:https://www.cnblogs.com/sophia194910/p/6424968.html