一、按是否查看程序內部結構劃分:
(1)黑盒測試(black-box testing):只關心輸入和輸出的結果(主要測試軟件的功能和需求說明是否相符)—— 黑盒測試一般用於功能測試,不可視化。像用戶同樣看待產品就行了。優缺點:不考慮內部的實現;更貼近用戶的角度。覆蓋率較低;複用率較低;維護成本較高。
關注:是否有不正確或遺漏的功能?輸入和輸出是否知足預期要求;是否有數據結構錯誤或外部信息訪問錯誤;性能上是否知足要求?
(2)白盒測試(white-box testing):去研究軟件裏面的源代碼和程序結構(主要是測試代碼的)—— 白盒測試一般用於單元測試,可視化
缺點:1昂貴 2沒法堅持代碼中遺漏的路徑和數據敏感性錯誤 3不能直接驗證需求的正確性。優勢:檢測內部代碼的實現;更容易檢測代碼內部的邏輯。
(3)灰盒測試(gray-box testing):介於黑白盒二者之間的一種測試,在白盒測試交叉使用黑盒測試方法,在黑盒測試交叉使用白盒測試方法—— 灰盒測試一般用於網頁測試
總結:測試是從用戶需求的角度去對軟件質量進行檢測,具體使用黑盒,白盒,灰盒,不須要明確的區分,應該多角度去設計測試用例,
多角度測試軟件,找出bug,纔是一個測試工程師具有的思想。在測試過程當中,涉及軟件的功能測試,建議先考慮使用黑盒測試,而後統計相應的覆蓋率,涉及到軟件的性能測試,
再設計黑盒測試加上適當的白盒測試用例做爲補充來測試軟件的性能,以保證軟件測試的完整性。
二、按照是否使用自動化測試工具劃分:
(1)手工測試(手工測試(Manual Testing)就是由人去一個一個的輸入用例,而後觀察結果和機器測試相對應屬於比較原始可是必須的一個步驟。
(補充:手工測試只是功能測試的一種方式。兩者的區別主要是劃分規則的不一樣手工測試是根據是否使用自動化測試
工具劃分的而功能測試是根據質量模型的六大特徵劃分的。)
它是依靠人來查找缺陷。通常採用黑盒測試方法(等價類劃法,邊界值劃分法,決策表法、錯誤推測法,因果圖法,場景法、正式試驗法)
(2)自動化測試(自動化測試(Automated Testing)是把以人爲驅動的測試行爲轉化爲機器執行的一種過程,強調使用第三方工具。
一般在設計了測試用例並經過評審以後由測試人員根據測試用例中描述的規程一步步執行測試獲得實際結果和指望結果的比較,
在此過程當中,爲了節省人力、時間或者硬件資源,提升測試效率從而引進了自動化測試的概念)注意:通常用於接口測試,UI測試、性能測試等
三、按是否運行程序劃分:
(1)靜態測試(結構分析)(static testing):是指不實際運行被測軟件,而只是靜態地檢查程序代碼、界面或文檔可能存在的錯誤的過程。
靜態測試包括:互審(技術評審)-走查(桌面走查,代碼走查,代碼審查)-靜態分析
a 對於代碼測試,主要是測試代碼是否符合相應的標準和規範。
b 對於界面測試,主要測試軟件的實際界面與需求中的說明是否相符。
c 對於文檔測試,主要測試用戶手冊和需求說明是否真正符合用戶的實際需求。
(2)動態測試(結構化測試)(dynamic testing),是指實際運行被測程序,輸入相應的測試數據,檢查輸出結果和預期結果是否相符的過程
四、按階段劃分:
(1)單元測試(unit testing),是指對軟件中的最小可測試單元進行檢查和驗證。即由測試人員設計測試用例,開發人員編寫測試代碼,測試人員執行測試用例。
樁模塊(stud)是指模擬被測模塊所調用的模塊,驅動模塊(driver)是指模擬被測模塊的上級模塊,驅動模塊用來接收測試數據,啓動被測模塊並輸出結果。
(2)集成測試(integration testing),是單元測試的下一階段,是指將經過測試的單元模塊組裝成系統或子系統,再進行測試,重點測試不一樣模塊的接口。
集成測試就是用來檢查各個單元模塊結合到一塊兒可否協同配合,正常運行。測試對象是已經進行過單元測試的各個模塊組合起來測試
(3)確認測試(integration testing),是集成測試的下一階段,是指已經按照設計把全部的模塊組裝成一個完整的軟件系統,接口錯誤也已經基本排除了,
接着就應該進一步驗證軟件的有效性,這就是確認測試的任務,即軟件的功能和性能如同用戶所合理期待的那樣。
(4)系統測試(system testing),指的是將整個軟件系統看作一個總體進行測試,包括對功能、性能,以及軟件所運行的軟硬件環境進行測試。【業務角度】
將系統或程序與初始目標進行比較。
系統測試的主要依據是《系統需求規格說明書》文檔。
(5)驗收測試(acceptance testing),指的是在系統測試的後期,以用戶測試爲主,或有測試人員等質量保障人員共同參與的測試,它也是軟件正式交給用戶使用的最後一道工序。也稱交付測試。
(β測試,也叫Beta測試。是軟件的多個用戶在一個或多個用戶的實際使用環境下進行的測試。開發者一般不在測試現場,Beta測試不能由程序員或測試員完成。
a測試,又叫Alpha測試。是由一個用戶在開發環境下進行的測試,也能夠是公司內部的用戶在模擬實際操做環境下進行的受控測試,Alpha測試不能由該系統的程序員或測試員完成。)
細分:用戶驗收測試【包含Beta和Alpha測試,用戶角度】、運行驗收測試【運維角度】、合同和規範驗收測試
五、按測試策略劃分:這幾種測試出如今軟件測試的週期中,既不算具體明確的測試階段,也不是具體的測試方法
【1】迴歸測試 是指對軟件的新的版本測試時,重複執行上一個版本測試時的用例。重心在關鍵模塊和重點功能組件上。
【2】冒煙測試 是指在對一個新版本進行大規模的測試以前,先驗證一下軟件的基本功能是否實現,是否具有可測性。
【3】隨機測試 是指測試中的全部輸入數據都是隨機生成的,其目的是模擬用戶的真實操做,並發現 一些邊緣性的錯誤。
【4】探索式測試 是一種測試思惟技術,強調主觀能動性,拋開用例和測試方法。
【5】安全測試 是在產品開發基本完成至發佈階段,對產品進行檢驗。
六、按實施組織劃分:
開發商測試:軟件開發,軟件測試,產品銷售都屬於同一個公司
外包測試:把一套成套的產品交給專業的組織進行測試。服務模式:現場測試;安全離岸外包;設立聯合研發中心。
七、按測試範圍劃分:
本地化測試:特定目標區域設置,重點測試 基本功能測試,安裝/卸載測試,當地區域的軟硬件兼容測試
全球化測試:保證軟件在全世界不一樣地域都能正常運行
國際化測試:修改代碼支持多語言
多語言測試:測試軟件在不一樣語言系統下GUI顯示的正確性
8、常見的測試方法:
功能測試 界面測試
性能測試 配置測試
壓力測試 文檔測試
負載測試 兼容性測試
易用性測試 安全性測試
安裝測試 恢復測試
白盒測試經常使用工具備:logiscope、Jtest、Junit。html
什麼是軟件測試?程序員
使用人工或自動的手段來運行或測量軟件系統的過程【測試手段能夠是人工或自動】,
以檢驗軟件系統是否知足規定的要求,並找出與預期結果之間的差別。
軟件測試的目的?
加強對質量的信心——發現bug——爲決策者提供信息——預防bug
軟件測試所遵循的原則?
1測試由第三方來構造
2窮盡測試是不可能的,應設定及時終止的條件
3測試應該儘早進行
4缺陷具有羣集特性
5測試的殺蟲劑悖論
6測試應追溯需求
7必須肯定預期結果
8必須完全檢查每一個測試結果
9其餘值得注意的規律和經驗
正確認識軟件測試的4個方面:數據庫
一、軟件質量不是靠軟件測試出來的編程
二、軟件測試並不開發容易安全
三、軟件測試須要開發人員和測試人員共同努力網絡
四、軟件測試並非一個階段,須要貫穿於整個軟件開發階段數據結構
軟件測試工程師必備技能:併發
一、測試專業技能運維
二、軟件編程技能工具
三、網絡、數據庫、操做系統、中間件等知識
軟件測試工程師必備素質:
一、正確高效的溝通能力
二、超強的責任心
三、耐心、細心、信心
四、要堅持原則
五、團隊合做精神