軟體測試方法種類繁多,記憶起來也非常混亂, 如果把軟體測試方法進行多個次元的分類, 就會清晰很多。

軟體測試的分類-按開發階段分類
單元測試
又稱子產品測試,針對軟體設計中的最小機關-程式子產品,進行正确性檢查的測試工作。單元測試需要從程式内部結構出發設計測試用例。多個子產品可以平行地獨立進行單元測試。
單元定義:C中指一個函數,Java中指一個類,在圖形化的軟體中,單元一般指一個視窗,1個菜單。
內建測試
又叫組裝測試,通常在單元測試的基礎上,将所有程式子產品進行有序的、遞增的測試。重點測試不同子產品的接口部分。
系統測試
指的是将整個軟體系統看為一個整體進行測試,包括對功能、性能、以及軟體所運作的軟硬體環境進行測試。
系統測試在系統內建完畢後進行測試,前期主要測試系統的功能是否滿足需求,後期主要測試系統運作的性能是否滿足需求,以及系統在不同的軟硬體環境中的相容性等。
軟體測試的分類-驗收測試的分類
α測試
· Alpha 是内測版本,即現在所說的CB。
· 此版本表示該軟體僅僅是一個初步完成品, 通常隻在軟體開發者内部交流, 也有很少一部分釋出給專業測試人員。
· 一般而言, 該版本軟體的bug 較多, 普通使用者最好不要安裝。
β測試
· Beta是公測版本,是對所有使用者開放的測試版本。
· 該版本相對于α 版已有了很大的改進,消除了嚴重的錯誤, 但還是存在着一些缺陷,需要經過大規模的釋出測試來進一步消除。
· 這一版本通常由軟體公司免費釋出, 使用者可從相關的站點下載下傳。
· 通過一些專業愛好者的測試, 将結果回報給開發者, 開發者們再進行有針對性的修改。
· 該版本也不适合一般使用者安裝。
γ測試
Gamma版本,指的是軟體版本正式發行的候選版。該版本已經相當成熟了, 與即将發行的正式版相差無幾, 成為正式釋出的候選版本。
軟體正式版本推出之前的幾個版本, 需要有人測試一下, 看看是不是有問題。在開發該軟體的公司内部由該公司内部人員測試的稱為: Alpha 測試, Alpha 測試主要看有沒有功能缺失或系統錯誤, Alpha 測試完後一般不會有大問題了。然後把軟體拿給使用者測試,稱為: beta 測試, 主要是看使用者對軟體外觀、使用友善等的反應。這麼多的測試版一方面為了最終産品盡可能地滿足使用者的需要, 另一方面也盡量減少了軟體中的bug。然後做過一些修改, 成為正式釋出的候選版本時, 叫做gamma( 現在叫做RC - Release Candidate) 。
簡單來說,阿爾法測試主要是測試人員在開發環境下的測試,貝塔測試是在實際環境中的測試,或者公司内部人員在模拟真實環境中的測試。
軟體測試的分類-按照是否檢視源代碼
黑盒測試
又稱資料驅動測試,完全不考慮程式内部結構和内部特性,注重于測試軟體的功能需求,隻關心軟體的輸入資料和輸出資料。
白盒測試
· 指的是把盒子打開,去研究裡面的源代碼和程式結構。
· 在軟體公司,往往采用黑盒測試&白盒測試相結合的方式。
· 軟體的整體功能和性能進行黑盒測試
· 軟體的源代碼采用白盒測試
灰盒測試
灰盒測試,是介于白盒測試與黑盒測試之間的一種測試,灰盒測試多用于內建測試階段,不僅關注輸出、輸入的正确性,同時也關注程式内部的情況。灰盒測試不像白盒那樣詳細、完整,但又比黑盒測試更關注程式的内部邏輯,常常是通過一些表征性的現象、事件、标志來判斷内部的運作狀态。
軟體測試的分類-黑盒測試分類
功能測試
是黑盒測試的一方面,它檢查實際軟體的功能是否符合使用者的需求。
· 邏輯功能測試(functiontesting)
· 界面測試(UItesting)
· 易用性測試(usability testing)
· 安裝測試(installationtesting)
性能測試
是軟體測試的高端領域,性能測試工程師的待遇和白盒測試工程師不相上下,通常我們所說的進階軟體測試工程師一般就是指性能測試或是白盒測試工程師。
· 時間性能(事務響應時間等)
· 空間性能(系統資源消耗)
· 一般性能測試
· 穩定性測試
· 負載測試:通過負載測試來确定在各種工作負載下,系統各項性能名額的變化情況
· 壓力測試:通過确定一個系統的瓶頸或者剛好不能接受的性能點,來獲得系統能夠提供的最大服務級别
軟體測試的分類-按是否運作分類
靜态測試
指不實際運作被測軟體,而隻是靜态地檢查程式代碼、界面或文檔中可能存在的錯誤過程。
動态測試
是指實際運作被測程式,輸入相應的測試資料,檢查實際輸出結果和預期結果是否相符的過程。
軟體測試的分類-其他
冒煙測試
冒煙測試就是完成一個新版本的開發後,對該版本最基本的功能進行測試,保證基本的功能和流程能走通。如果不通過,則打回開發那邊重新開發;如果通過測試,才會進行下一步的測試(功能測試,內建測試,系統測試等等)。冒煙測試優點是節省測試時間,防止build失敗。缺點是覆寫率還是比較低。
回歸測試
回歸測試我有兩層了解,一是就是當你修複一個bug後,把之前的測試用例再次應用到修複後的版本上進行測試。二是當一個新版本開發好後,而且冒煙測試通過,此時可以先用上一個版本的測試用例對新版本進行測試,看是否有bug。
随機測試
随機測試主要是對被測軟體的一些重要功能進行複測,也包括測試那些目前的測試用例沒有覆寫到的部分。另外,對于軟體更新和新增加的功能要重點測試。重點對一些特殊點情況點、特殊的使用環境、并發性、進行檢查。尤其對以前測試發現的重大Bug,進行再次測試,可以結合回歸測試(Regressivetesting)一起進行。
探索性測試
探索性測試可以說是一種測試思維技術。它沒有很多實際的測試方法、技術和工具,但是卻是所有測試人員都應該掌握的一種測試思維方式。探索性強調測試人員的主觀能動性,抛棄繁雜的測試計劃和測試用例設計過程,強調在碰到問題時及時改變測試政策。
探索性測試強調測試設計和測試執行的同時性,這是相對于傳統軟體測試過程中嚴格的“先設計,後執行”來說的。測試人員通過測試來不斷學習被測系統,同時把學習到的關于軟體系統的更多資訊通過綜合的整理和分析,創造出更多的關于測試的主意。