在談論軟體測試分類的時候,分類的結果五花八門。因為大家將各個維度劃分的內容都集中到一起了,再加上各自不同的見解與補充,就有各種衝突存在。
軟體測試基本定為4類測試(最多5類,自動化或者兼容性單獨提出來):功能測試、性能測試、安全測試、特性測試。大家化繁為簡,轉為自己理解的分類,避免死記硬背帶來的理解不深入,遺漏測試範圍。測試4類劃分如下:
牛鷺學院對軟體測試分類進行梳理,詳見下文。
經典定義:
軟體測試(Software Testing),在規定的條件下對程序進行操作,以發現程序錯誤,衡量軟體質量,並對其是否能滿足設計要求進行評估的過程。
標準定義
軟體測試是使用人工或自動的手段來運行或測定某個軟體系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。
測試目的
軟體測試的目的是發現問題,發現至今未發現的問題。檢查系統是否滿足需求。
Grenford J.Myers觀點
(1)測試是程序的執行過程,目的在於發現錯誤;
(2)一個好的測試用例在於能發現至今未發現的錯誤;
(3)一個成功的測試是發現了至今未發現的錯誤的測試;
測試的對象
程序、數據、文檔。
軟體錯誤佔比
據業界著名的統計公司的統計表明,屬於需求分析和軟體設計錯誤的約佔64%,屬於程序編寫錯誤的僅佔36%。
其他基礎知識
RAD(Rap Application Development,快速應用開發)模型是軟體開發過程中的一個重要模型,由於其模型構圖形似字母V,所以又稱軟體測試的V模型,V模型大體可以劃分為以下幾個不同的階段步驟:需求分析、概要設計、詳細設計、軟體編碼、單元測試、集成測試、系統測試、驗收測試。
測試級別:
單元測試、集成測試、接口測試、系統測試、驗收測試
測試方法:
動態測試、靜態測試;黑盒測試、白盒測試、灰盒測試。
測試類型:
安裝測試、兼容性測試、冒煙測試、回歸測試、驗收測試、 alpha測試、beta測試、功能測試和非功能測試、持續測試、破壞性測試、軟體性能測試、可用性測試、可達性測試、安全測試、開發測試、A/B測試、並發測試、一致性測試
綜合整理分類:
按階段劃分
√ 單元測試(Unit Testing)
單元測試是對軟體組成單元進行測試。其目的是檢驗軟體基本組成單位的正確性。測試的對象是軟體設計的最小單位:模塊。又稱為模塊測試
√ 集成測試(Integration Testing)
集成測試也稱聯合測試、組裝測試,將程序模塊採用適當的集成策略組裝起來,對系統的接口及集成後的功能進行正確性檢測的測試工作。主要目的是檢查軟體單位之間的接口是否正確。
√ 系統測試(System Testing)
將軟體系統看成是一個系統的測試。包括對功能、性能以及軟體所運行的軟硬體環境進行測試。時間大部分在系統測試執行階段。
√ 驗收測試(Acceptance Testing)
驗收測試是部署軟體之前的最後一個測試操作。它是技術測試的最後一個階段,也稱為交付測試。驗收測試的目的是確保軟體準備就緒,按照項目合同、任務書、雙方約定的驗收依據文檔,向軟體購買都展示該軟體系統滿足原始需求。
按是否查看代碼劃分
√ 黑盒測試
黑盒測試也稱功能測試,測試中把被測的軟體當成一個黑盒子,不關心盒子的內部結構是什麼,只關心軟體的輸入數據與輸出數據。
√ 白盒測試
白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基於代碼的測試。白盒指的打開盒子,去研究裡面的原始碼和程序結果。
√ 灰盒測試
灰盒測試,是介於白盒測試與黑盒測試之間的一種測試,灰盒測試多用於集成測試階段,不僅關注輸出、輸入的正確性,同時也關注程序內部的情況。
按是否執行程序劃分
√ 靜態測試
靜態方法是指不運行被測程序本身,僅通過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性。對需求規格說明書、軟體設計說明書、源程序做結構分析、流程圖分析、符號執行來找錯。分析如下:
√ 動態測試
動態測試方法是指通過運行被測程序,檢查運行結果與預期結果的差異,並分析運行效率、正確性和健壯性等性能。這種方法由三部分組成:構造測試用例、執行程序、分析程序的輸出結果。
按是否查看代碼劃分
√ 手工測試
手工測試就是由人去一個一個的輸入用例,然後觀察結果,和機器測試相對應,屬於比較原始但是必須的一個步驟。總結優缺點:
√ 自動化測試
就是在預設條件下運行系統或應用程式,評估運行結果,預先條件應包括正常條件和異常條件。簡單說自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。
自動化測試比如功能測試自動化、性能測試自動化、安全測試自動化。
通常所說的自動化是指功能測試自動化。
其他匯總
√ 冒煙測試
就是開發人員在個人版本的軟體上執行目前的冒煙測試項目,確定新的程序代碼不出故障。
冒煙測試目的是確認軟體基本功能正常,冒煙測試的執行者是版本編譯人員。
現基本執行對象為測試人員,在正規測試一個新版本之前,投入較少的人力和時間驗證基本功能,通過則測試準入。
√ 隨機測試
隨機測試主要是根據測試者的經驗對軟體進行功能和性能抽查。
根據測試說明書執行用例測試的重要補充手段,是保證測試覆蓋完整性的有效方式和過程。
隨機測試主要是對被測軟體的一些重要功能進行複測,也包括測試那些當前的測試用例沒有覆蓋到的部分。
√ 安全測試
安全測試是在IT軟體產品的生命周期中,特別是產品開發基本完成到發布階段,對產品進行檢驗以驗證產品符合安全需求定義和產品質量標準的過程 。
√ 探索性測試
探索性測試可以說是一種測試思維技術。它沒有很多實際的測試方法、技術和工具,但是卻是所有測試人員都應該掌握的一種測試思維方式。探索性強調測試人員的主觀能動性,拋棄繁雜的測試計劃和測試用例設計過程,強調在碰到問題時及時改變測試策略。
探索性測試自動化暫時無法代替。
√ 回歸測試
回歸測試是指修改了舊代碼後,重新進行測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤。自動回歸測試將大幅降低系統測試、維護升級等階段的成本。
在整個軟體測試過程中佔有很大的工作量比重,軟體開發的各個階段都會進行多次回歸測試。通過選擇正確的回歸測試策略來改進回歸測試的效率和有效性是很有意義的。
√ α測試
α測試是由一個用戶在開發環境下進行的測試,也可以是公司內部的用戶在模擬實際操作環境下進行的測試。α測試的目的是評價軟體產品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。
大型通用軟體,在正式發布前,通常需要執行Alpha和Beta測試。α測試不能由程式設計師或測試員完成。
√ β測試
Beta測試是一種驗收測試。Beta測試由軟體的最終用戶們在一個或多個場所進行。
alpha測試與Beta測試的區別:
測試種類過多,導致測試及非測試人員老是談不到一個點,希望此文對大家梳理分類有所幫助。
如前言所說,我認為測試分4類(5類)足以覆蓋:功能測試、安全測試、性能測試、特性測試、自動化測試。
獲取更多課程資訊、技術乾貨、學員筆記,關注牛鷺學院官方公眾號:牛鷺軟體測試訓練營