1. 程式人生 > >軟體測試方法分類

軟體測試方法分類

相信接觸過測試的同學都聽說過,黑盒測試、白盒測試、功能測試、效能測試、安全測試、單元測試、整合測試、介面測試等等。但是這樣記憶起來就比較混亂,如果進行劃分類別,那麼就會比較清晰,也比較好理解,便於大家記憶。

1.就從軟體內部結構和具體實現來劃分,軟體測試可以分為:

  白盒測試、黑盒測試、灰盒測試

  (1)白盒測試:又稱結構測試或邏輯測試,是按照程式內部邏輯結構和編碼結構,通過測試來檢測產品內部動作是否按照設計規格說明書的規定正常進行,檢驗程式中的每條通路是否都能按預定要求正確工作。 這一方法是把測試物件看作一個開啟的盒子,測試人員依據程式內部邏輯結構相關資訊,設計或選擇測試用例並完成測試的一種測試方法。這種型別的測試需要從程式碼語句發現內部程式碼在演算法,溢位,路徑,條件等等中的缺點或者錯誤,進而加以修正。

  常見的白盒測試的方法有:語句覆蓋,條件覆蓋,判定覆蓋,條件組合覆蓋,基本路徑覆蓋等等。

  白盒測試的目的:
  ①保證程式中所有關鍵路徑的測試,防止由於沒有執行的路徑在實際投入執行後執行到意外情況
  ②衡量測試完整性
  ③程式內部所有的邏輯值真、假兩個分支的覆蓋
  ④檢查記憶體洩漏
  ⑤異常處理的分支語句的執行
  ⑥解決實驗條件下很難搭建真實測試環境的問題
  ⑦檢查程式碼符合一定的編碼規範,減少由於編碼不規範而引入的錯誤
  通過在不同點檢查程式的狀態,確定實際的狀態是否與預期的狀態一致。

  (2)黑盒測試:又稱為功能測試,不考慮程式內部結構和邏輯結構,主要是用來測試系統的功能是否滿足需求規格說明書,它是站在使用軟體或程式的角度,從輸入資料與輸出資料的對應關係出發進行的測試。

     常見黑盒測試的方法:等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、正交試驗法、判定表驅動法、功能圖法

  黑盒測試目的:

  ①檢查程式功能是否按照需求規格說明書的要求正常使用,測試每個功能是否有遺漏,測試效能特性是否滿足要求。

  ②測試人機互動是否錯誤,檢測資料結構或外部資料庫訪問是否錯誤,程式是否能適當的輸入資料而產生正確的輸出結果,保持外部資訊(如資料庫或檔案)的完整性。

  ③檢測程式初始化和終止方面的錯誤。

  (3)灰盒測試:介於白盒測試和黑盒測試之間,不僅關注輸出、輸入的正確性,同時也關注程式內部的情況。灰盒測試不像白盒那樣詳細、完整,但又比黑盒測試更關注程式的內部邏輯,常常是通過一些表徵性              的現象、事件、標誌來判斷內部的執行狀態。

  灰盒測試相對於其他黑白盒有什麼特點:
  ①灰盒測試比白盒測試效率高,從程式的整體出發,而非細節.
  ②灰盒測試健壯性好,相對於白盒測試降低了程式程式碼改變而導致用例失效的風險。
  ③灰盒測試更細緻。灰盒測試要求測試人員關注程式的程式碼邏輯,根據程式碼邏輯擴充用例,更加細緻
2.根據軟體測試的階段來劃分:

  單元測試—>整合測試—>系統測試—>驗收測試

  (1)單元測試:單元測試是用來對一個模組、一個函式或者一個類來進行正確性檢驗的測試工作,是指對軟體中的最小可測試單元進行檢查和驗證。對於單元測試中單元的含義,一般來說,要根據實際情況去判定其具體含義。

  (2)整合測試:也叫組裝測試或聯合測試。在單元測試的基礎上,將所有模組按照設計要求(如根據結構圖)組裝成為子系統或系統,進行整合測試。一些模組雖然能夠單獨地工作,但並不能保證連線起來也能正常的工作,在全域性上很可能暴露出來。一般由開發小組採用白盒加黑盒的方式來測試,既驗證“設計”,又驗證“需求”。 旨在檢驗軟體單元之間的介面關係,以期望通過測試發現各軟體單元介面之間存在的問題,最終把經過測試的單元組成符合設計要求的軟體。

  (3)系統測試:為判斷系統是否符合要求而對整合的軟、硬體系統進行的測試活動、它是將已經整合好的軟體系統,作為基於整個計算機系統的一個元素,與計算機硬體、外設、某些支援軟體、人員、資料等其他系統元素結合在一起,在實際執行環境下,對計算機系統進行一系列的組裝測試和確認測試。

  (4)驗收測試:以使用者為主的測試,在軟體產品完成了單元測試、整合測試和系統測試之後,產品釋出之前所進行的軟體測試活動。它是技術測試的最後一個階段,也稱為交付測試。驗收測試的目的是確保軟體準備就緒,並且可以讓終端使用者將其用於執行軟體的既定功能和任務。驗收測試是向未來的使用者表明系統能夠像預定要求那樣工作。經整合測試後,已經按照設計把所有的模組組裝成一個完整的軟體系統,介面錯誤也已經基本排除了,接著就應該進一步驗證軟體的有效性,這就是驗收測試的任務,即軟體的功能和效能如同使用者所合理期待的那樣。

3.效能測試又可以分為壓力測試與負載測試

  效能測試:效能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項效能指標進行測試。

  (1)壓力測試:逐步增加系統負載,測試系統性能的變化,並最終確定在什麼負載下系統性能處於失效狀態,並以此來獲得系統能提供的最大服務級別。

  (2)負載測試:模擬實際軟體系統所承受負載調教的系統負荷,通過不斷載入(例如增加模擬使用者的數量)或其他載入方式來觀察不同負載下系統響應時間和資料吞吐量、系統佔用的資源(如CPU、記憶體等),來檢驗系統的行為和特性。

  相同點:都屬於效能測試,負載測試強調系統正常工作情況下的效能指標;壓力測試的目的是發現在什麼條件下系統的效能變得不可接受,發現應用程式效能下降的拐點。

4.其他測試

  (1)迴歸測試:迴歸測試是指修改了舊程式碼後,重新進行測試以確認修改沒有引入新的錯誤或導致其他程式碼產生錯誤。自動迴歸測試將大幅降低系統測試、維護升級等階段的成本。

  (2)冒煙測試:完成一個新版本的開發後,對該版本的基本功能進行測試,保證基本功能和流程可以走通如果通不過,那麼需要開發重新開發,如果通過測試,才會進行下一步的測試(功能測試,整合測試,系統測試等等),優點是節省測試時間,防止build失敗,缺點是覆蓋率較低。