在實際項目測試過程中,選擇並確定測試模型只是我們實施測試的第一步。除此之外,還要弄清楚整個測試過程中需要做哪些類型的測試,並根據不同的測試類型進行相應的測試,比如我們耳熟能詳的功能測試、性能測試等,這樣我們的測試工作才能有效進行。那麼軟體測試按照什麼分類?又是怎麼分類的呢?簡單來講,軟體測試可以按照開發階段、是否查看代碼、是否運行、是否手工操作四個方向分類的。
軟體測試分類
1、按照開發階段分類
(1)單元測試
單元測試也可以叫做模塊測試——對軟體的組成單位進行測試,目的是為了檢驗軟體基本組成單位的正確性。測試的對象是軟體測試的最小單位:模塊。單元測試一般都是開發人員或者專業的白盒測試人員(這些需要對代碼有很深的研究)來測試的。
(2)集成測試
單元測試是一個模塊內部的測試,當有多個單獨的模塊測試完成後,我們需要把這些模塊放到一起進行整體的測試,這個測試叫做集成測試。集成測試也稱聯調測試、組裝測試,即將程序模塊採用適當的集成策略組裝起來,對系統的接口及集成後的功能進行正確性檢測的測試工作。集成測試主要關注的是關聯處比較複雜,容易發生錯誤的模塊。集成測試是在模塊之間進行測試(至少兩個),將2個或者2個以上的模塊進行組裝。
(3)系統測試
系統測試指的是在真實或模擬系統運行的環境下,驗證完整的程序系統是否可以正確的運行,並滿足用戶的功能需求,這裡完整的程序系統可以理解為把整個軟體系統看作一個整體,包括軟體和硬體。舉個例子,當下公司正在開發一個新的支付系統,要求測試團隊對它做系統測試。那我們的測試目的,就是要把各種功能模塊全部搭建並運行起來,對它進行整體的功能測試、安全測試、性能測試等,以驗證它的功能,安全性,性能等各方面表現是否滿足用戶需求。
(4)驗收測試
驗收測試是技術測試的最後一個階段,也稱為交付測試。驗收測試是部署軟體之前的最後一個測試階段。驗收測試的目的是確保軟體準備就緒,向軟體購買者展示該軟體系統能夠滿足用戶的需求,一般是以用戶為主的測試。驗收測試的常用策略有兩種,正式驗收和非正式驗收。
2、按照是否查看代碼分類
(1)黑盒測試
我們不需要去關心被測試軟體裡面的結構及實現邏輯如何,只需要關注測試軟體的輸入數據是什麼,以及輸出結果是否符合預期就可以了,這樣的測試就叫做黑盒測試。黑盒測試又稱為數據驅動測試,它只檢查程序是否能接收輸入數據並產生正確的輸出信息。
(2)功能測試
功能測試主要是檢查實際功能是否符合用戶的需求,因此測試的大部分工作也是圍繞軟體的功能進行的。功能測試又可以細分為界面測試、邏輯功能測試、易用性測試、安裝測試以及兼容性測試等,每種測試的測試目的及複雜程度又有所不同。
(3)性能測試
性能測試拆開來看就是性能與測試。軟體的性能包括很多方面,主要是時間性能和空間性能。性能測試是通過自動化的測試工具來模擬多種正常的,不正常的,或者是極限情況下,針對系統的各項性能指標進行的測試,以驗證軟體性能是否符合要求。
(4)白盒測試
白盒測試與黑盒測試正好相反,就是不關注外面只關註裡面,也就是說盒子是透明的,我們可以清楚的看到盒子內部的東西以及內部的運作邏輯,針對內部邏輯進行的測試。
(5)灰盒測試
灰盒測試是介於白盒測試與黑盒測試之間的一種測試,它既關注內部也關注外部的驗證。
3、按照是否運行分類
(1)動態測試
動態測試是指通過運行被測程序,輸入相應的測試數據來驗證運行結果與預期結果的是否一致。目前動態測試也是企業實施項目測試的主要方式。根據動態測試在軟體開發過程中所處的階段和作用,我們可以將其劃分為以下幾個步驟:單元測試、系統測試、集成測試和驗收測試。
(2)靜態測試
靜態測試就是不實際運行被測軟體,只是靜態地檢查程序代碼、界面或文檔中可能存在的錯誤的過程。測試內容主要是代碼測試、界面測試和文檔測試三個方面
4、按照是否手工操作分類
(1)手工測試
手工測試,指的用手一個一個去執行編寫好的測試用例。通過手動操作鍵盤滑鼠來輸入一些內容,例如測試登錄功能時,要根據用例手動輸入用戶名/密碼,點擊按鈕等,執行完功能之後,再查看返回結果,驗證其是否符合預期的結果。
(2)自動化測試
自動化測試的目的是提高測試效率,把以人為驅動的測試行為轉化為機器執行的一種過程。使用工具或代碼的方式來實現手工操作。
這一關我們按照是否運行軟體將測試分為了靜態測試和動態測試,又基於是否手工操作將測試分成了手工測試和自動化測試,除此之外,還有冒煙測試,回歸測試以及安全測試等等。通過學習我們可以知道,每一種測試都有自己的特點和適用場景,我們通過這樣的系統學習理解每種測試的方式和意義,做到心中有數,這對我們後續的測試技術學習以及實際測試工作有著深遠的指導作用。