【轉】軟件測試分類、概念

轉自:https://www.cnblogs.com/findyou/p/6480411.html

作者:Findyou

 

前言

測試小夥伴在談論軟件測試分類,五花八門的分類,眼花繚亂。因爲將各個維度劃分的內容都整到一塊了,在加上各自不同的見解與補充,各種衝突......

Findyou我經過多年測試總結基本定爲4類測試(最多5類,自動化或者兼容性單獨提出來):功能測試、性能測試、安全測試、特性測試、。化繁爲簡,轉爲自己理解的分類,避免死記硬揹帶來的理解不深入,遺漏測試範圍。我的測試4類劃分如下:

功能測試:關注功能正常(包含兼容性測試),除了下面分類都測;

性能測試:關注(比如前端性能、後端性能);

安全測試:關注傳輸、存儲等安全;

特性測試:特性指平臺差異(即部分兼容性測試),如PC端鼠標,鍵盤操作特性(Tab鍵等);如手機觸屏操作,橫豎屏,中斷恢復(來電)等。

本文主要對現有軟件分類進行梳理,請見文。 

一、軟件測試概念

A.1 經典定義

     軟件測試(Software Testing),在規定的條件下對程序進行操作,以發現程序錯誤,衡量軟件質量,並對其是否能滿足設計要求進行評估的過程。

A.2 標準定義(IEEE)

    軟件測試是使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。

A.3 測試目的

    軟件測試的目的是發現問題,發現至今未發現的問題。檢查系統是否滿足需求。

Grenford J.Myers觀點(1)測試是程序的執行過程,目的在於發現錯誤;
(2)一個好的測試用例在於能發現至今未發現的錯誤;
(3)一個成功的測試是發現了至今未發現的錯誤的測試;

 

A.4 測試的對象

程序、數據、文檔。

A.5 軟件錯誤佔比

據業界著名的統計公司的統計表明,屬於需求分析和軟件設計錯誤的約佔64%,屬於程序編寫錯誤的僅佔36%。

A.6 其他基礎知識

  • V模型

RAD(Rap Application Development,快速應用開發)模型是軟件開發過程中的一個重要模型,由於其模型構圖形似字母V,所以又稱軟件測試的V模型,V模型大體可以劃分爲以下幾個不同的階段步驟:需求分析、概要設計、詳細設計、軟件編碼、單元測試、集成測試、系統測試、驗收測試。

 

二、軟件測試分類

B.1 wikipedia

測試級別:單元測試、集成測試、接口測試、系統測試、驗收測試
測試方法:動態測試、靜態測試;黑盒測試、白盒測試、灰盒測試。
測試類型:一共19種,不列舉了。

如感興趣,請Find見You傳送門 https://en.wikipedia.org/wiki/Software_testing

 

B.2 綜合整理分類

 B.2.1 按階段劃分   //重要


√ 單元測試(Unit Testing)

單元測試是對軟件組成單元進行測試。其目的是檢驗軟件基本組成單位的正確性。測試的對象是軟件設計的最小單位:模塊。Findyou又稱爲模塊測試

  • 測試階段:編碼後

  • 測試對象:最小模塊

  • 測試人員:白盒測試工程師或開發工程師

  • 測試依據:代碼和註釋+詳細設計文檔

  • 測試方法:白盒測試

  • 測試內容:模塊接口測試、局部數據結構測試、路徑測試、錯誤處理測試、邊界測試

 

√ 集成測試(Integration Testing)

集成測試也稱聯合測試、組裝測試,將程序模塊採用適當的集成策略組裝起來,對系統的接口及集成後的功能進行正確性檢測的測試工作。阿旺主要目的是檢查軟件單位之間的接口是否正確。

  • 測試階段:一般單元測試之後進行

  • 測試對象:模塊間的接口

  • 測試人員:白盒測試工程師或開發工程師

  • 測試依據:單元測試的模塊+概要設計文檔

  • 測試方法:黑盒測試與白盒測試相結合

  • 測試內容:模塊之間數據傳輸、模塊之間功能衝突、模塊組裝功能正確性、全局數據結構、單模塊缺陷對系統的影響

 

√ 系統測試(System Testing)

將軟件系統看成是一個系統的測試。包括對功能、性能以及軟件所運行的軟硬件環境進行測試。時間大部分在系統測試執行階段

  • 測試階段:集成測試通過之後

  • 測試對象:整個系統(軟、硬件)

  • 測試人員:黑盒測試工程師

  • 測試依據:需求規格說明文檔

  • 測試方法:黑盒測試

  • 測試內容:功能、界面、可靠性、易用性、性能、兼容性、安全性等

 

√ 驗收測試(Acceptance Testing)

驗收測試是部署軟件之前的最後一個測試操作。它是技術測試的最後一個階段,也稱爲交付測試。阿旺總結驗收測試的目的是確保軟件準備就緒,按照項目合同、任務書、雙方約定的驗收依據文檔,向軟件購買都展示該軟件系統滿足原始需求。

  • 測試階段:系統測試通過之後

  • 測試對象:整個系統(包括軟硬件)。

  • 測試人員:主要是最終用戶或者需求方。

  • 測試依據:用戶需求、驗收標準

  • 測試方法:黑盒測試

  • 測試內容:同系統測試(功能...各類文檔等)

 

B.2.2、按是否查看代碼劃分  //重要


∑ 黑盒測試(Black-box Testing)

黑盒測試也稱功能測試,測試中把被測的軟件當成一個黑盒子,不關心盒子的內部結構是什麼,只關心軟件的輸入數據與輸出數據。

 

∑ 白盒測試(White-box Testing)

白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基於代碼的測試。白盒指的打開盒子,去研究裏面的源代碼和程序結果。

 

∑ 灰盒測試(Gray-Box Testing)

灰盒測試,是介於白盒測試與黑盒測試之間的一種測試,灰盒測試多用於集成測試階段,不僅關注輸出、輸入的正確性,同時也關注程序內部的情況。

 

B.2.3、按是否執行程序劃分 


£ 靜態測試(Static testing)

靜態方法是指不運行被測程序本身,僅通過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性。對需求規格說明書、軟件設計說明書、源程序做結構分析、流程圖分析、符號執行來找錯。阿旺分析如下

  • 檢查項:代碼風格和規則審覈;程序設計和結構的審覈;業務邏輯的審覈;走查、審查與技術複審手冊。

  • 靜態質量:度量所依據的標準是ISO9126。在該標準中,軟件的質量用以下幾個方面來衡量,即功能性(Functionality)、可靠性(Reliability)、可用性(Usability)、有效性(Efficiency)、可維護性(Maintainability)、可移植性(Portability)。 

£ 動態測試(Dynamic testing)

動態測試方法是指通過運行被測程序,檢查運行結果與預期結果的差異,並分析運行效率、正確性和健壯性等性能。這種方法由三部分組成:構造測試用例、執行程序、分析程序的輸出結果。

 

B.2.4、按是否查看代碼劃分 //重要


∂ 手工測試(Manual testing)

手工測試就是由人去一個一個的輸入用例,然後觀察結果,和機器測試相對應,屬於比較原始但是必須的一個步驟。阿旺總結優缺點:

  • 優點:自動化無法替代探索性測試、發散思維類無既定結果的測試。

  • 缺點:執行效率慢,量大易錯。

∂ 自動化測試(Automation Testing)

就是在預設條件下運行系統或應用程序,評估運行結果,預先條件應包括正常條件和異常條件。簡單說自動化測試是把以人爲驅動的測試行爲轉化爲機器執行的一種過程。

自動化測試比如功能測試自動化、性能測試自動化、安全測試自動化。

通常所說的自動化是指功能測試自動化。

Findyou看AI技術的興起發展,類似可預見工作都有可能會被僞AI代替。

 

B.2.5、其他彙總


€ 冒煙測試(Smoke Testing) //重要

在《微軟項目求生法則》一書第14章“構建過程”關於冒煙測試,就是開發人員在個人版本的軟件上執行目前的冒煙測試項目,確定新的程序代碼不出故障。

冒煙測試目的是確認軟件基本功能正常,冒煙測試的執行者是版本編譯人員。

現基本執行對象爲測試人員,在正規測試一個新版本之前,投入較少的人力和時間驗證基本功能,通過則測試准入。

 

€ 隨機測試(Ad-hoc Testing)

隨機測試主要是根據測試者的經驗對軟件進行功能和性能抽查。

根據測試說明書執行用例測試的重要補充手段,是保證測試覆蓋完整性的有效方式和過程。

隨機測試主要是對被測軟件的一些重要功能進行復測,也包括測試那些當前的測試用例(TestCase)沒有覆蓋到的部分。

 

€ 安全測試(Security Testing)  //重要

安全測試是在IT軟件產品的生命週期中,特別是產品開發基本完成到發佈階段,對產品進行檢驗以驗證產品符合安全需求定義和產品質量標準的過程 。

Findyou覺現在對安全知識的普及,大家意識都提上來了。比如現在越來越多的不支持HTTP協議,轉用HTTPS等。

 

€ 探索性測試(Exploratory testing)

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

探索性測試自動化暫時無法代替。Findyou也無法被代替。

 

€ 迴歸測試(Regression Testing)

迴歸測試是指修改了舊代碼後,重新進行測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤。自動迴歸測試將大幅降低系統測試、維護升級等階段的成本。

在整個軟件測試過程中佔有很大的工作量比重,軟件開發的各個階段都會進行多次迴歸測試。通過選擇正確的迴歸測試策略來改進迴歸測試的效率和有效性是很有意義的。

 

€ α測試(Alpha Testing)  //重要

α測試是由一個用戶在開發環境下進行的測試,也可以是公司內部的用戶在模擬實際操作環境下進行的測試。α測試的目的是評價軟件產品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。

大型通用軟件,在正式發佈前,通常需要執行Alpha和Beta測試。α測試不能由程序員或測試員完成。

 

€ β測試(Beta Testing)  //重要

Beta測試是一種驗收測試。Beta測試由軟件的最終用戶們在一個或多個客房場所進行。

α測試與Beta測試的區別:Findyou

  • 測試的場所不同:Alpha測試是指把用戶請到開發方的場所來測試,beta測試是指在一個或多個用戶的場所進行的測試。

  • Alpha測試的環境是受開發方控制的,用戶的數量相對比較少,時間比較集中。beta測試的環境是不受開發方控制的,用戶數量相對比較多,時間不集中。

  • alpha測試先於beta測試執行。通用的軟件產品需要較大規模的beta測試,測試周期比較長。sdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章