前言前端
測試小夥伴在談論軟件測試分類,五花八門的分類,眼花繚亂。由於將各個維度劃分的內容都整到一塊了,在加上各自不一樣的看法與補充,各類衝突......Findyou我通過多年測試總結基本定爲4類測試(最多5類,自動化或者兼容性單獨提出來):功能測試、性能測試、安全測試、特性測試、。化繁爲簡,轉爲本身理解的分類,避免死記硬揹帶來的理解不深刻,遺漏測試範圍。個人測試4類劃分以下:功能測試:關注功能正常(包含兼容性測試),除了下面分類都測;性能測試:關注(好比前端性能、後端性能);安全測試:關注傳輸、存儲等安全;特性測試:特性指平臺差別(即部分兼容性測試),如PC端鼠標,鍵盤操做特性(Tab鍵等);如手機觸屏操做,橫豎屏,中斷恢復(來電)等。本文主要對現有軟件分類進行梳理,請見文。
A.1 經典定義
軟件測試(Software Testing),在規定的條件下對程序進行操做,以發現程序錯誤,衡量軟件質量,並對其是否能知足設計要求進行評估的過程。程序員
A.2 標準定義(IEEE)
軟件測試是使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在於檢驗它是否知足規定的需求或弄清預期結果與實際結果之間的差異。後端
A.3 測試目的
軟件測試的目的是發現問題,發現至今未發現的問題。檢查系統是否知足需求。安全
A.4 測試的對象
程序、數據、文檔。數據結構
A.5 軟件錯誤佔比
據業界著名的統計公司的統計代表,屬於需求分析和軟件設計錯誤的約佔64%,屬於程序編寫錯誤的僅佔36%。前端性能
A.6 其餘基礎知識
V模型
RAD(Rap Application Development,快速應用開發)模型是軟件開發過程當中的一個重要模型,因爲其模型構圖形似字母V,因此又稱軟件測試的V模型,V模型大致能夠劃分爲如下幾個不一樣的階段步驟:需求分析、概要設計、詳細設計、軟件編碼、單元測試、集成測試、系統測試、驗收測試。工具
B.1 wikipedia
測試級別:單元測試、集成測試、接口測試、系統測試、驗收測試
測試方法:動態測試、靜態測試;黑盒測試、白盒測試、灰盒測試。
測試類型:一共19種,不列舉了。post如感興趣,請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.二、按是否查看代碼劃分 //重要
∑ 黑盒測試(Black-box Testing)
黑盒測試也稱功能測試,測試中把被測的軟件當成一個黑盒子,不關心盒子的內部結構是什麼,只關心軟件的輸入數據與輸出數據。
∑ 白盒測試(White-box Testing)
白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基於代碼的測試。白盒指的打開盒子,去研究裏面的源代碼和程序結果。
∑ 灰盒測試(Gray-Box Testing)
灰盒測試,是介於白盒測試與黑盒測試之間的一種測試,灰盒測試多用於集成測試階段,不只關注輸出、輸入的正確性,同時也關注程序內部的狀況。
B.2.三、按是否執行程序劃分
£ 靜態測試(Static testing)
靜態方法是指不運行被測程序自己,僅經過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性。對需求規格說明書、軟件設計說明書、源程序作結構分析、流程圖分析、符號執行來找錯。阿旺分析以下
檢查項:代碼風格和規則審覈;程序設計和結構的審覈;業務邏輯的審覈;走查、審查與技術複審手冊。
靜態質量:度量所依據的標準是ISO9126。在該標準中,軟件的質量用如下幾個方面來衡量,即功能性(Functionality)、可靠性(Reliability)、可用性(Usability)、有效性(Efficiency)、可維護性(Maintainability)、可移植性(Portability)。
£ 動態測試(Dynamic testing)
動態測試方法是指經過運行被測程序,檢查運行結果與預期結果的差別,並分析運行效率、正確性和健壯性等性能。這種方法由三部分組成:構造測試用例、執行程序、分析程序的輸出結果。
B.2.四、按是否查看代碼劃分 //重要
∂ 手工測試(Manual testing)
手工測試就是由人去一個一個的輸入用例,而後觀察結果,和機器測試相對應,屬於比較原始可是必須的一個步驟。阿旺總結優缺點:
優勢:自動化沒法替代探索性測試、發散思惟類無既定結果的測試。
缺點:執行效率慢,量大易錯。
∂ 自動化測試(Automation Testing)
就是在預設條件下運行系統或應用程序,評估運行結果,預先條件應包括正常條件和異常條件。簡單說自動化測試是把以人爲驅動的測試行爲轉化爲機器執行的一種過程。
自動化測試好比功能測試自動化、性能測試自動化、安全測試自動化。
一般所說的自動化是指功能測試自動化。
Findyou看AI技術的興起發展,相似可預見工做都有可能會被僞AI代替。
B.2.五、其餘彙總
€ 冒煙測試(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
總結:
測試種類過多,致使測試及非測試人員總是談不到一個點,對此不做評論,但願此文對你們梳理分類有幫助,記住標記重要的部分。
如前言所說,我認爲測試分4類(5類)足以覆蓋:功能測試、安全測試、性能測試、特性測試、自動化測試。
參考:
[1]維基百科 https://en.wikipedia.org/wiki/Software_testing
[2]百度百科
http://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95
http://baike.baidu.com/item/%E9%AA%8C%E6%94%B6%E6%B5%8B%E8%AF%95
http://baike.baidu.com/item/%E7%99%BD%E7%9B%92%E6%B5%8B%E8%AF%95
http://baike.baidu.com/item/%E7%81%B0%E7%9B%92%E6%B5%8B%E8%AF%95
http://baike.baidu.com/item/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95
http://baike.baidu.com/item/%E9%9A%8F%E6%9C%BA%E6%B5%8B%E8%AF%95
http://baike.baidu.com/item/%E6%8E%A2%E7%B4%A2%E6%80%A7%E6%B5%8B%E8%AF%95
http://baike.baidu.com/item/%E5%9B%9E%E5%BD%92%E6%B5%8B%E8%AF%95
轉載說明
本文爲原創文章,如需轉載,請在開篇顯著位置註明做者Findyou和出處(這最早發在我本身玩的訂閱號)。