軟件測試方法種類繁多遂跟,記憶起來混亂负溪, 如果把軟件測試方法進(jìn)行分類, 就會清晰很多透揣。 我參考一些書籍和網(wǎng)上的資料, 把常用的軟件測試方法列出來川抡, 讓大家對軟件測試行業(yè)有個總體的看法辐真。
從測試設(shè)計方法分類
測試名稱? ? ? 測試內(nèi)容
Black box? ? ?黑盒測試把軟件系統(tǒng)當(dāng)作一個“黑箱”,無法了解或使用系統(tǒng)的內(nèi)部結(jié)構(gòu)及識崖堤。? ? ? ? ? ? ? ? ? ? ? ? ?從軟件的行為侍咱,而不是內(nèi)部結(jié)構(gòu)出發(fā)來設(shè)計測試.
White box? ? ?白盒測試設(shè)計者可以看到軟件系統(tǒng)的內(nèi)部結(jié)構(gòu),并且使用軟件的內(nèi)部知識來指? ? ? ? ? ? ? ? ? ? ? ?導(dǎo)測試數(shù)據(jù)及方法的選擇密幔。
Gray box.? ? ? 灰盒測試介于黑盒和白盒之間
總結(jié):?? 實際工作中楔脯,對系統(tǒng)的了解越多越好。目前大多數(shù)的測試人員都是做黑盒測試胯甩,很少有做白盒測試的淤年。 因為白盒測試對軟件測試人員的要求非常高,需要有很多編程經(jīng)驗蜡豹。做.NET程序的白盒測試你要能看得懂.NET代碼麸粮。做JAVA程序的測試,需要你能看懂JAVA的代碼镜廉。 如果你都能看懂了弄诲,你還會做測試么
從測試是手動還是自動上分類
測試名稱? ? ? ? ?測試內(nèi)容
Manual Test? ? ?手動測試測試人員用鼠標(biāo)去手動測試 (測試GUI)
Automation? ? ? 自動化測試用程序測試程序 (測試API)
對于項目來說, 手動測試和自動化測試同等重要娇唯,都是保障軟件質(zhì)量的方法齐遵。 目前大部分的項目組都是手動測試和自動化測試相結(jié)合。因為很多測試無法做成自動化塔插,很多復(fù)雜的業(yè)務(wù)邏輯也很難自動化梗摇, 所以自動化測試無法取代手動測試。
對于軟件測試人員個人發(fā)展來說想许, 做自動化測試是個挑戰(zhàn)伶授,也是測試人員發(fā)展的一個方向断序,? 需要測試人員學(xué)習(xí)大量的開發(fā)知識(開發(fā)的知識真是學(xué)無止境啊)糜烹。 從長遠(yuǎn)角度來看违诗,自動化測試肯定是越來越吃香的。
而手動測試比較適合剛工作不久的人疮蹦,手動測試最大的缺點就是技術(shù)含量低诸迟,單調(diào)乏味,容易廢人愕乎。
總的來說阵苇,手工測試勝在測試業(yè)務(wù)邏輯,而自動化測試勝在測試底層架構(gòu)感论。
如果被測試的程序可測試性比較好绅项, 很有必要做成自動化測試。 能做自動化的盡量做成自動化笛粘, 下面這些情形是可以做自動化的
1.?? 測試存儲過程趁怔。? 例如用C#去測試存儲過程
2.?? 測試Web servies. 例如: 用SoupUI工具,或者C#,Java 去測試Web servies薪前。
3.?? 界面和業(yè)務(wù)邏輯分離的系統(tǒng)润努,比如,MVC示括,MVP架構(gòu)铺浇, 或者WPF 程序。 可以用測試腳本去測試這些程序的API垛膝。
從測試的目的分類
功能測試
測試的范圍從小到大鳍侣,從內(nèi)到外, 從程序開發(fā)人員(單元測試)到測試人員吼拥,到一般用戶Alpha/Beta測試
測試名稱測試內(nèi)容
Unit Test?單元測試在最低的功能/參數(shù)上驗證程序的準(zhǔn)確性,比如測試一個函數(shù)的正確性(開發(fā)人員做的)
Functional Test?功能測試驗證模塊的功能? (測試人員做的)
Integration Test?集成測試驗證幾個互相有依賴關(guān)系的模塊的功能?(測試人員做的)
Scenario Test?場景測試驗證幾個模塊是否能完成一個用戶場景?(測試人員做的)
System Test?系統(tǒng)測試對于整個系統(tǒng)功能的測試?(測試人員做的)
Alpha 測試軟件測試人員在真實用戶環(huán)境中對軟件進(jìn)行全面的測試?(測試人員做的)
Beta 測試真實的用戶在真實的用戶環(huán)境中進(jìn)行的測試, 也叫公測?? (最終用戶做的)
非功能測試
一個軟件除了基本功能之外倚聚,還有很多功能之外的特性,這些叫“Quality of Service requirement”服務(wù)質(zhì)量需求凿可。沒有軟件的功能惑折,這些特性都無從表現(xiàn)出來,因此枯跑,我們要在軟件開發(fā)的適當(dāng)階段-基本功能完成后做這些測試惨驶。
測試名稱測試內(nèi)容
Stress test 壓力測試驗證軟件在超過負(fù)載設(shè)計的情況下仍能返回正確的結(jié)果,沒有崩潰
Load test 負(fù)載測試測試軟件在負(fù)載情況下能否正常工作
Performance test性能測試測試軟件的效能敛助,是否提供滿意的服務(wù)質(zhì)量
Accessibility test軟件輔助功能測試-測試軟件是否向殘疾用戶提供足夠的輔助功能
Localization/Globalization本地化/全球化測試
Compatibility Test兼容性測試
Configuration Test配置測試-測試軟件在各種配置下能否正常工作
Usability Test可用性測試?–測試軟件是否好用
Security Test軟件安全性測試
性能測試
性能測試要求測試人員熟練性能測試工具粗卜,比如QTP, LoadRunner, Jmeter。? Visual Studio也提供了很多性能測試的工具. 要求測試人員對低層協(xié)議非常理解和編寫腳本
性能測試非常有技術(shù)含量纳击, 很有發(fā)展前途续扔, 是軟件測試人員的一個職業(yè)發(fā)展方向攻臀。
安全性測試
安全性測試的內(nèi)容很廣, 非常有難度啊测砂。 我只接觸過XSS(跨站腳本攻擊)和SQL注入攻擊茵烈。
安全性測試非常有技術(shù)含量百匆, 我認(rèn)為也是軟件測試人員的一個職業(yè)發(fā)展方向
按測試的時機(jī)和作用分類
在開發(fā)軟件的過程中砌些,不少測試起著“烽火臺”的作用,它們告訴我們軟件開發(fā)的流程是否暢通加匈。
測試名稱測試內(nèi)容
Smoke Test“冒煙”–如果測試不通過存璃,則不能進(jìn)行下一步工作
Build Verification Test(BVT)驗證構(gòu)建是否通過基本測試。
Acceptance Test驗收測試雕拼,為了全面考核某功能/特性而做的測試
BVT測試是一種Smoke Test, 指Build生成好之后纵东,自動運行的自動化測試腳本來檢查這個Build的基本功能。 如果BVT測試失敗了啥寇,需要開發(fā)人員馬上修改偎球,重新生成Build
按測試測策略分類。
測試名稱測試內(nèi)容
Regression Test?回歸測試對一個新的版本辑甜,重新運行以往的測試用例衰絮,看看新版本和已知的版本相比是否有退化?(regression)
Ad hoc Test 探索性測試隨機(jī)進(jìn)行的,探索性的測試磷醋。
Sanity Test粗略的測試猫牡, 只需要執(zhí)行部分的測試用例
Regression Test?回歸測試:
對軟件測試人員來說就是重復(fù)測試,所以回歸測試最好是自動化的邓线, 否則測試人員就要一遍又一遍地重復(fù)測試淌友,
1. 開發(fā)人員做些小改動,就需要測試人員做回歸測試骇陈。確闭鹜ィ現(xiàn)有的功能沒有被破壞
2. Bug Fix 也需要回歸測試,確保新的代碼修復(fù)了Fix, 也確蹦愦疲現(xiàn)有的功能沒有被破壞
3. 項目后期器联,需要做一個完整回歸測試, 確保所有的功能都是好的
Ad hoc Test 探索性測試:?
平常我最喜歡做隨機(jī)測試了匪蝙, 拋開test case.? 自己按照自己的思路主籍,隨便點點。 如果測試GUI逛球,Ad hoc能發(fā)現(xiàn)大量的bug.?