2-2軟體測試階段
按照測試手段分類
根據可見度:黑盒測試、白盒測試
根據狀態:靜態測試、動態測試
根據測試執行的方式:手工測試、自動化測試
1、黑盒測試
其實就是在測試中把被測的系統或軟體看成一個不能開啟的盒子,在完全不考慮程式內部結構和內部特性的情況下,通過相關暴露出來的介面來對程式進行測試。
黑盒測試只檢查程式的功能是否能夠按照需求規格說明的規定來正常使用、程式是否能適當的接受輸入資料併產生正確的輸出資訊。
黑盒測試著眼於程式的外部結構,不考慮內部邏輯,一般來說是針對軟體外面的介面或者是可見的功能來進行測試。
做黑盒測試更多的是從使用者的視角,通過不同的資料和事件驅動系統,並通過輸出結果進行判斷。
(1)黑盒測試的優缺點
優點:1)容易實施,不需要關注內部的實現。
2)更貼近使用者的使用角度。做測試驗證的場景和系統中實際使用的場景更加的接近。
缺點:1)測試覆蓋率較低,一般只能覆蓋到程式碼量的不到40%。(因為系統黑盒不可見;很多邏輯分支不清楚)
2)針對黑盒的自動化測試,複用率較低,維護成本較高。(因為黑盒測試關注的是功能,而軟體產品在研發迭代過程中最經常變化的就是功能;特別是介面UI類的產品或者網際網路產品會有頻繁的變化,所以針對功能做的自動化測試的測試用例重複率是較低的,而且因為經常變話,所以指令碼的維護代價相對較大)
(2)黑盒測試主要測試什麼
1)是否有不正確或者遺漏的功能(軟體的實現上)
2)在介面上,輸入能否正確的接受?能否輸出正確的結果?
3)是否有資料結構錯誤或外部資訊(例如資料檔案)訪問錯誤
4)效能上是否能夠滿足要求(功能和效能的區別:功能是一個有哪些用途;效能是在具體事情操作上表現的怎麼樣)
系統的效能是黑盒測試的重要方面。
一般來說,系統測試階段更多使用黑盒測試(並不代表其他階段不使用)。
(3)黑盒測試的主要設計方法
等價類劃分:針對程式有很多的輸入條件,等價類劃分就是把所有的輸入中等價的歸為一類,最後會形成若干典型的代表性輸入。通過這些典型資料進行測試用例設計。
邊界值分析法:特殊的等價類劃分,關注邊界條件(開區間閉區間等)。開發人員在編寫程式時候,邊界值是很容易出現失誤的地方。
錯誤推測法:根據經驗或者直覺判斷程式中可能出現錯誤的地方,從而針對性設計用例(比如介面輸入考慮特殊字元,處理檔案考慮檔案不存在、超大等)。
因果圖法:拿到程式需求規格說明書,針對每一種輸入和輸出看成原因和結果,對輸入和輸出設定特定的識別符號。最終根據規格的語義說明,形成一個判定表,根據判定表設計測試用例。
正交實驗法:通過正交性從一組資料中篩選出典型的具有代表性的資料的設計方法。主要用於篩選輸入資料。
狀態遷移圖法:通過梳理軟體功能點的狀態遷移關係來設計測試用例。比如軟體有一個審批的功能,提交審批、待審批、拒絕、通過、退回、審批通過等,畫出變遷的關係圖來設計測試用例。
流程分析法:梳理程式的邏輯執行路徑來設計測試用例。
2.白盒測試
測試人員對內部結構非常瞭解,邏輯結構對測試人員是可見的。隨意白盒測試又稱為結構化測試、透明盒測試。
白盒測試是針對程式的邏輯結構來設計測試用例的,用邏輯的覆蓋率來衡量測試的完整性。
(1)主要的邏輯單位
語句覆蓋:測試用例執行以後會保證程式的每條語句至少執行一次。
判定覆蓋:保證每個分支至少執行一次。
條件覆蓋:覆蓋到條件表示式,所有的表示式都至少計算一次。
路徑覆蓋:程式當中每一條可能的路徑至少執行一次。(分支是路徑的一部分)
(2)白盒測試的優缺點
優點:
1)迫使測試人員去仔細思考軟體的實現,理解原理(需要對系統有深入的瞭解)
2)可以檢測程式碼中每條分支和路徑
3)揭示隱藏在程式碼中的錯誤。
4)對程式碼的測試比較徹底
缺點
1)昂貴。要做到較高的覆蓋率,工作量非常大。
2)無法檢測程式碼中遺漏的路徑和資料敏感性錯誤(程式碼中本來就少寫了一些路徑,語句有問題等)
3)不能直接驗證需求的正確性
(3)白盒測試的主要測試方法
程式碼檢測法:主要是檢查程式碼和設計的一致性
靜態結構分析:分析原始碼的系統結構、資料結構、內部的控制邏輯設計測試用例
靜態質量度量法:標準質量模型作為基礎,構造質量度量模型用於評估軟體。
邏輯覆蓋法:上面介紹的覆蓋法,語句、條件、條件組合、分支、判定、路徑、條件和判定的組合覆蓋法。
基本路徑測試法:程式控制流圖基礎上,通過分析控制構造的圈複雜度,匯出基本可執行路經集合設計測試用例。控制流圖是描述程式控制流的一種方法。
3.灰盒測試
4.靜態測試
程式不被執行,直接看文件或者程式碼,可以人工也可以自動化工具來發現程式的不足
靜態測試的方法
互審:程式設計師之間相互檢查程式碼(不正式)
走查:組成一個小組,集體看程式或者文件
會議:召開正式會議,紀要。(正式)
5.動態測試
黑盒測試裡的一些方法主要是動態測試
白盒測試中一般都是靜態測試
6.手工測試
眾包測試、探索是測試。
7.自動化測試
單元測試,結構測試 效能測試等