1. 程式人生 > >軟件測試分類總結

軟件測試分類總結

子程序 最小 基本功 覆蓋 存在 靜態 測試用例設計 轉化 引入

在這之前,如果你問我,軟件測試的分類有哪些,我可能會回答的語無倫次。最近溫習了一下軟件測試分類的知識,覺得有必要總結一下。

從不同的角度可以將軟件測試分為六種分類方式:項目流程階段劃分、源代碼可見程度劃分、軟件測試點劃分、軟件測試工作自動化程度劃分、是否運行程序劃分、其他測試。

1.根據項目流程階段劃分為:單元測試、集成測試、系統測試、驗收測試

單元測試:單元測試是測試過程中的最小粒度,是對程序中的單個子程序或具有獨立功能的代碼段進行測試,包含入口和出口的參數,輸入和輸出信息,錯誤處理信息,部分邊界數值測試。

集成測試:集成測試是單元測試的基礎上,將通過單元模塊組裝成系統或子系統,再進行測試,重點是檢查模塊之間的接口是否正確。

系統測試:系統測試是測試發現問題的主要階段,針對整個產品系統的進行測試,驗證系統是否滿足需求規格說明書的定義,以及軟件系統的正確性和性能等是否滿足要求。

驗收測試:驗收測試是部署軟件之前的最後一個測試操作。驗收測試的目的是確保軟件準備就緒,向軟件購買者展示該軟件系統滿足其用戶的需求。

2.根據源代碼可見程度劃分:黑盒測試、白盒測試、灰盒測試

黑盒測試:黑盒測試是把測試對象看做一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的 功能說明。

白盒測試:白盒測試是把測試對象看做一個打開的盒子,它著重於程序的內部結構及算法,對程序所有邏輯路徑進行測試。通過在不同點檢查程序的狀態,確定實際狀態是否與預期的狀態一致,通常不關心功能與性能指標。

灰盒測試:灰盒測試介於白盒測試與黑合測試之間。灰盒測試關註輸出對於輸入的正確性,同時也關註內部表現,但這種關註不象白盒那樣詳細、完整,只是通過一些表征性的現象、事件、標誌來判斷內部的運行狀態,有時候輸出是正確的,但內部其實已經錯誤了,這種情況非常多,如果每次都通過白盒測試來操作,效率會很低,因此需要采取這樣的一種灰盒測試的方法。

3.根據軟件的不同測試點劃分:功能測試、性能測試

功能測試:功能測試檢查實際的功能是否符合用戶的需求。測試的大部分工作也是圍繞軟件的功能進行,設計軟件的目的也就是滿足客戶對其功能的需求。如果偏離的這個目的任何測試工作都是沒有意義的。
功能測試又可以細分為很多種:業務邏輯功能測試、界面測試、易用性測試、安裝測試、兼容性測試、安全性測試等。

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

性能測試又可以細分為很多種負載測試、壓力測試、容量測試、並發測試、配置測試、可靠性測試、失敗測試等。

4.根據軟件測試工作的自動化程度劃分:手工測試、自動化測試

手工測試:手工測試就是由人去一個一個的去執行測試用例,通過鍵盤鼠標等輸入一些參數,查看返回結果是否符合預期結果。手工測試並不非專業術語,手工測試通常是指我們在系統測試階段所進行的功能測試,為了更明顯的與自動化測試進行區分,所以這裏使用了手工測試。

自動化測試:自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。通常,在設計了測試用例並通過評審之後,由測試人員根據測試用例中描述的規程一步步執行測試,得到實際結果與期望結果的比較。在此過程中,為了節省人力、時間或硬件資源,提高測試效率,便引入了自動化測試的概念。

自動化測試又可分為:功能自動化測試與性能自動化測試。我們一般所說的自動化測試就是指功能自動化測試,通過相關的測試技術,通過編碼的方式用一段程序來測試一個軟件的功能,這樣就可以重復執行程序來進行重復的測試。如果一個軟件一小部分發生改變,我們只要修改一部分自動化測試代碼,就可以重復的對整個軟件進行功能測試;從而大大的提高了測試效率。性能自動化測試,當然,除了早期階段,現在的性能測試工作都是通過性能測試工具輔助完成的。通過工具可以模擬成千上萬的用戶向系統發送請求,用來驗證系統的處理能力。

5.根據是否運行程序劃分:靜態測試、動態測試

靜態測試:靜態測試是指不運行被測試的軟件,而只是靜態的檢查程序代碼、界面或者文檔中可能存在的錯誤過程。

動態測試:動態測試是指實際運行被測試的軟件,輸入相應的測試數據,檢查實際輸出結果是否和預期結果相一致的過程。

6.其他測試:回歸測試、冒煙測試、隨機測試、探索性測試

回歸測試:回歸測試是指修改了舊代碼後,重新進行測試以確認修改後沒有引入新的錯誤或導致其他代碼產生錯誤。回歸測試一般是在進行軟件的第二輪測試開始的,驗證第一輪中發現的問題是否得到修復。當然,回歸也是一個循環的過程,如果回歸的問題通不過,則需要開發人員修改後再次進行回歸,直到通過為止。

冒煙測試:是指在對一個新版本進行系統大規模的測試之前,先驗證一下軟件的基本功能是否實現,是否具備可測性。引入到軟件測試中,就是指測試小組在正規測試一個新版本之前,先投入較少的人力和時間驗證一個軟件的主要功能,如果主要功能都沒有實現,則打回開發組重新開發。避免由於打包失誤、功能嚴重缺失、硬件部件損壞導致軟件運行失敗等嚴重問題而引起大量測試人員從事沒有意義的測試勞動,從而節省大量的時間成本和人力、物力成本。

隨機測試:是指測試中的所有輸入數據都是隨機產生的。其目的是模擬用戶的真實操作,並發現一些邊緣性的錯誤。隨機測試可以發現一些隱蔽的錯誤,但是也有很多缺點,比如測試往往不太真實,無法統計代碼覆蓋率和需求覆蓋率,發現的問題難以重現。一般是放在測試的最後執行。其實隨機測試更專業的升級版叫探索性測試。

探索性測試:探索性測試可以說是一種測試思維技術。它沒有很多實際的測試方法、技術和工具,但是卻是所有測試人員都應該掌握的一種測試思維方式。探索性強調測試人員的主觀能動性,拋棄繁雜的測試計劃和測試用例設計過程,強調在碰到問題時及時改變測試策略。

軟件測試分類總結