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