軟件測試方法種類繁多,記憶起來混亂, 若是把軟件測試方法進行分類, 就會清晰不少。 我參考一些書籍和網上的資料, 把經常使用的軟件測試方法列出來, 讓你們對軟件測試行業有個整體的見解。編程
測試名稱安全 |
測試內容架構 |
Black box黑盒測試函數 |
把軟件系統看成一個「黑箱」,沒法瞭解或使用系統的內部結構及知識。從軟件的行爲,而不是內部結構出發來設計測試.工具 |
White box白盒測試性能 |
設計者能夠看到軟件系統的內部結構,而且使用軟件的內部知識來指導測試數據及方法的選擇。單元測試 |
Gray box. 灰盒測試學習 |
介於黑盒和白盒之間測試 |
總結: 實際工做中,對系統的瞭解越多越好。目前大多數的測試人員都是作黑盒測試,不多有作白盒測試的。 由於白盒測試對軟件測試人員的要求很是高,須要有不少編程經驗。作.NET程序的白盒測試你要能看得懂.NET代碼。作JAVA程序的測試,須要你能看懂JAVA的代碼。 若是你都能看懂了,你還會作測試麼ui
測試名稱 |
測試內容 |
Manual Test 手動測試 |
測試人員用鼠標去手動測試 (測試GUI) |
Automation 自動化測試 |
用程序測試程序 (測試API) |
對於項目來講, 手動測試和自動化測試同等重要,都是保障軟件質量的方法。 目前大部分的項目組都是手動測試和自動化測試相結合。由於不少測試沒法作成自動化,不少複雜的業務邏輯也很難自動化, 因此自動化測試沒法取代手動測試。
對於軟件測試人員我的發展來講, 作自動化測試是個挑戰,也是測試人員發展的一個方向, 須要測試人員學習大量的開發知識(開發的知識真是學無止境啊)。 從長遠角度來看,自動化測試確定是愈來愈吃香的。
而手動測試比較適合剛工做不久的人。
總的來講,手工測試勝在測試業務邏輯,而自動化測試勝在測試底層架構。
若是被測試的程序可測試性比較好, 頗有必要作成自動化測試。 能作自動化的儘可能作成自動化, 下面這些情形是能夠作自動化的
1. 測試存儲過程。 例如用C#去測試存儲過程
2. 測試Web servies. 例如: 用SoupUI工具,或者C#,Java 去測試Web servies。
3. 界面和業務邏輯分離的系統,好比,MVC,MVP架構, 或者WPF 程序。 能夠用測試腳本去測試這些程序的API。
功能測試
測試的範圍從小到大,從內到外, 從程序開發人員(單元測試)到測試人員,到通常用戶Alpha/Beta測試
測試名稱 |
測試內容 |
Unit Test 單元測試 |
在最低的功能/參數上驗證程序的準確性,好比測試一個函數的正確性(開發人員作的) |
Functional Test 功能測試 |
驗證模塊的功能 (測試人員作的) |
Integration Test 集成測試 |
驗證幾個互相有依賴關係的模塊的功能 (測試人員作的) |
Scenario Test 場景測試 |
驗證幾個模塊是否能完成一個用戶場景 (測試人員作的) |
System Test 系統測試 |
對於整個系統功能的測試 (測試人員作的) |
Alpha 測試 |
軟件測試人員在真實用戶環境中對軟件進行全面的測試 (測試人員作的) |
Beta 測試 |
真實的用戶在真實的用戶環境中進行的測試, 也叫公測 (最終用戶作的) |
非功能測試
一個軟件除了基本功能以外,還有不少功能以外的特性,這些叫「Quality of Service requirement」服務質量需求。沒有軟件的功能,這些特性都無從表現出來,所以,咱們要在軟件開發的適當階段-基本功能完成後作這些測試。
測試名稱 |
測試內容 |
Stress test 壓力測試 |
驗證軟件在超過負載設計的狀況下仍能返回正確的結果,沒有崩潰 |
Load test 負載測試 |
測試軟件在負載狀況下可否正常工做 |
Performance test性能測試 |
測試軟件的效能,是否提供滿意的服務質量 |
Accessibility test |
軟件輔助功能測試-測試軟件是否向殘疾用戶提供足夠的輔助功能 |
Localization/Globalization |
本地化/全球化測試 |
Compatibility Test |
兼容性測試 |
Configuration Test |
配置測試-測試軟件在各類配置下可否正常工做 |
Usability Test |
可用性測試 –測試軟件是否好用 |
Security Test |
軟件安全性測試 |
性能測試
性能測試要求測試人員熟練性能測試工具,好比QTP, LoadRunner, Jmeter。 Visual Studio也提供了不少性能測試的工具. 要求測試人員對低層協議很是理解和編寫腳本
性能測試很是有技術含量, 頗有發展前途, 是軟件測試人員的一個職業發展方向。
安全性測試
安全性測試的內容很廣, 很是有難度啊。 我只接觸過XSS(跨站腳本攻擊)和SQL注入攻擊。
安全性測試很是有技術含量, 我認爲也是軟件測試人員的一個職業發展方向
按測試的時機和做用分類
在開發軟件的過程當中,很多測試起着「烽火臺」的做用,它們告訴咱們軟件開發的流程是否暢通。
測試名稱 |
測試內容 |
Smoke Test |
「冒煙」–若是測試不經過,則不能進行下一步工做 |
Build Verification Test(BVT) |
驗證構建是否經過基本測試。 |
Acceptance Test |
驗收測試,爲了全面考覈某功能/特性而作的測試 |
BVT測試是一種Smoke Test, 指Build生成好以後,自動運行的自動化測試腳原本檢查這個Build的基本功能。 若是BVT測試失敗了,須要開發人員立刻修改,從新生成Build
按測試測策略分類。
測試名稱 |
測試內容 |
Regression Test 迴歸測試 |
對一個新的版本,從新運行以往的測試用例,看看新版本和已知的版本相比是否有退化 (regression) |
Ad hoc Test 探索性測試 |
隨機進行的,探索性的測試。 |
Santiy Test |
粗略的測試, 只須要執行部分的測試用例 |
Regression Test 迴歸測試:
對軟件測試人員來講就是重複測試,因此迴歸測試最好是自動化的, 不然測試人員就要一遍又一遍地重複測試,
1. 開發人員作些小改動,就須要測試人員作迴歸測試。確保現有的功能沒有被破壞
2. Bug Fix 也須要回歸測試,確保新的代碼修復了Fix, 也確保現有的功能沒有被破壞
3. 項目後期,須要作一個完整迴歸測試, 確保全部的功能都是好的
Ad hoc Test 探索性測試:
日常我最喜歡作隨機測試了, 拋開test case. 本身按照本身的思路,隨便點點。 若是測試GUI,Ad hoc能發現大量的bug.