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

軟體測試分類和方法

    --寫在最前面--軟體測試的方法,會隨著軟體測試技術的不斷髮展,越來越多樣化,單一性更強(針對性更強);我們在測試工作中,應該著重選擇合適的軟測方法來完成任務。


一、測試分類

  1. β(Beta)測試,指的是(一個或多個)使用者驗收測試,通常是在UAT環境完成,測試過程中應該避免開發和測試人員來測。
  2. α(Alpha)測試,指的是一個使用者在開發環境下進行測試。
  3. 相容性測試,也稱作軟體的可移植性,一般對現如今流行的軟體/硬體平臺都應該做適配,供不同使用者使用該軟體/硬體。
  4. UI測試,也就是使用者介面測試,這型別的測試一般需多站在使用者的角度去考慮,講究介面風格的完美搭配以及合理性。包括相應的使用者友好性、人性化、易操作性等等。
  5. 冒煙測試,一般是需要測試人員與開發人員進行相應的協調進行;比如介面的冒煙測試,在測試過程中,對請求引數的相關要求就需要與開發進行溝通。此過程大體是:

引數-->> 介面內部邏輯-->> -->>輸出引數

:測試過程中主要關注這三個方面測試,引數相關的用例、內部邏輯的導向正確性、輸出引數是否與API文件相符、安全方面的測試....)

    6. 隨機測試,這個很考驗一個測試人員的測試經驗與測試手段,這型別的測試主要是對軟體功能與效能的一種抽查,想要一針見血的查出問題,還是需要一種嚴謹的測試思維,以及測試經驗。

    隨機測試還包括對一些用例所沒有覆蓋的部分進行測試,還有軟體更新和新增的功能進行測試。重點還包括對一些特殊情況點、特殊的使用環境、併發性進行檢查,結合迴歸測試一起進行。

二、測試方法

  • 黑盒測試,又稱為功能測試、資料驅動測試,它根據軟體的規格進行測試,不考慮其內部原理。大體測試原理為:

輸入各類資料 -->> -->>檢視相應的結果

  • 白盒測試,又稱為結構測試或者邏輯驅動測試,需要測試軟體產品的內部結構以及處理過程,而並非功能測試。

        白盒測試的覆蓋標準包括:邏輯覆蓋、迴圈覆蓋和基本路徑覆蓋測試。其中邏輯覆蓋又包含有語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。測試主要方法有邏輯驅動、基路測試等,還可以藉助相關工具來進行測試,如Jtest、C++ Test等。

  • 自動化

        其中包含有自動化測試、迴歸測試、驗收測試。

  1. 自動化測試,通常會藉助相應的工具,編寫測試指令碼進行測試;通常在GUI、效能等測試以及功能測試中用的較多。而常用的自動化工具包括UFT(QTP)、Testcomplete、autorunner和TAR等。(除了UFT,其它的我也沒了解過。)
  2. 迴歸測試,顯然迴歸測試屬於對修改更新之後的軟體進行復測,驗證功能修改正確以及新功能符合需求。鼓勵迴歸測試使用自動化測試?
  3. 驗收測試,指的是系統開發生命週期方法論的一個階段,它主要是確定產品能夠滿足合同或者使用者的需求。

        驗收測試一般分為三種策略:正式驗收、非正式驗收、α測試、β測試。

  • 靜態測試,指的是不執行被測程式本身,通過驗證/分析/檢查源程式的文法、結構、過程、介面等來檢查程式的正確性
  靜態方法通過程式靜態特性的分析,找出欠缺和可疑之處,例如不匹配的引數、不適當的迴圈巢狀和分支巢狀、不允許的遞迴、未使用過的變數、空指標的引用和可疑的計算等。靜態測試結果可用於進一步的查錯,併為測試用例選取提供指導。常用的工具:Logiscope、PRQA。

  • 動態測試,則是通過執行軟體來檢驗它的動態行為和執行結果的正確性。
動態測試步驟
單元測試
整合測試
系統測試
驗收測試
迴歸測試

  1. 單元測試,通常由開發進行測試,將程式碼直接編寫為單元測試,對小功能或程式碼塊進行測試。
  2. 整合測試,指的是整個系統各個部件聯合測試,檢測模組之間連線上是否會有衝突。這型別的測試尤其與客戶伺服器和分散式系統有關。一般整合測試以前,需要單元測試完成之後進行。
  3. 系統測試,是基於系統整體的需求說明書的黑盒類測試,應覆蓋系統涉及的所有部件。系統測試不僅包括需要測試的產品系統的軟體,還要包含軟體所依賴的硬體、外設以及某些資料、某些支援軟體及其介面等。(也就是資源整合在一起之後,整體的測試。)
  4. 驗收測試,也就是客戶或終端使用者的測試;一般是從功能、使用者介面、效能、業務關聯性進行測試。

  • 效能測試,效能這一塊的測試涉及點比較廣,主要是測試系統在進行一些負荷或強迫性的(暴力)操作時,所做出反應以及檢測其承受能力範圍(峰值、零界點)。效能測試一般包括負載測試和壓力測試。

        下面列舉一下另一些效能測試的類別:

  1. 健全測試,指的是一個初始化的測試工作,以決定一個新的軟體版本測試是否足以執行下一步大的測試能力。(理解為軟體能夠正常的執行,及軟體足夠健全)
  2. 衰竭測試,指軟體或環境的修復或更正後的“再測試”。可能很難確定需要多少遍再次測試。
  3. 負載測試,也就是需要驗證出一個系統(特別是web端)在高負荷下的反應,比如電商系統,在活動期間能否經受住大量使用者的訪問以及操作(類似於天貓雙11節這樣的,夠大型吧!!)。
  4. 強迫測試,指的是交替進行負荷和效能測試,如某個操作或輸入大量重複資料這樣,類似對一個數據庫大量的複雜查詢等。
  5. 壓力測試,它是一種基本的質量保證行為,指的是在計算機數量較少或系統資源匱乏的條件下執行測試。通常需要壓力測試的資源包括內部記憶體、CPU可用性、磁碟空間和網路頻寬等。
  6. 恢復測試,是測試一個系統在“災難”中的自適應、自恢復能力(也就是系統的容錯能力)。這類“災難”包括:系統崩潰,硬體損壞或其他災難性問題。

        對於自動恢復,需要驗證重新初始化、檢查點、資料恢復和重新啟動等機制的正確性。對於人工干預的恢復系統,還需評估平均修復時間,保證在接受範圍之內。

  • 安全測試,簡單點描述,就是防止系統被非法入侵,或是能夠防止系統被故意的破壞操作。例如:

設法擷取或破譯系統口令
專門定製軟體破壞系統的保護機制
故意導致系統失敗,企圖趁恢復之際非法進入
試圖通多瀏覽非保密資料,推導所需資訊......等等

  • 相容性測試,也就是需要被測軟體在一些指定的硬體/軟體/作業系統/網路等環境下的效能如何。向上相容向下相容,軟體相容硬體相容。等等......
  • 可用性測試,也就是對“使用者友好性”的測試。
  • 比較測試,我把這個測試理解為競品分析,兩個相似或業務邏輯相似的軟體,可以通過對比來找出軟體系統的弱點、優點。
  • 可接受性測試,指的是將測試的版本交付給測試部門大範圍測試以前進行的最基本功能的簡單測試。
  • 邊界條件,也就是邊界值測試,類比黑盒測試。(這裡就不再贅述,在之後的文件中一併總結。)
  • 強力測試,好比壓力/負載測試,指的是驗證軟體的效能在各種極端的環境和系統條件下是否還能正常工作。
  • 等價劃分測試,根據等價類設計測試用例的一種技術。黑盒測試常用方法之一,包括有有效等價類,無效等價類。
  • 判定表,是分析和表達多邏輯條件下執行不同操作的情況的工具;優點:能夠將複雜的問題按照各種可能的情況全部列舉出來,可以設計出相對完整的測試用例集合。
  • 深度測試,指執行一個產品的一個特性的所有細節,但是不測所有特性。
  • 基於設計測試,是根據軟體的構架或詳細設計引出測試用例的一種方法。
  • 文件測試,其關注點包括:開發檔案、使用者檔案、管理檔案,如下所示:

文件測試

開發文件                                    

可行性研究報告、軟體需求說明書、資料要求說明書、概要設計說明書、詳細設計說明書、資料庫設計說明書、模組開發卷宗
使用者檔案 使用者手冊、操作手冊
管理檔案 專案開發計劃、測試計劃、測試分析報告、開發進度月報、專案開發總結等

  • 介面測試,定義為系統元件間介面的一種測試。(在這裡也不再細述介面測試的含義了。)
  • 逆向測試,也就是測試系統會執行一些非需求定義之內的操作,這樣也是不滿足軟體需求的。


************************************************************************************************************

這篇就先自我總結這麼多,以後慢慢更新和優化這些基礎的知識。