四、軟件測試方法/技術 軟件測試分類(按測試方法區分): 以測試過程中程序執行狀態為依據可分為:靜態測試(Static Testing,ST)和動態測試(Dynamic Testing,DT),(測試執行階段采用的方法); 以具體實現算法細節和系統內部結構的相關情況為根據可分:黑盒測試、白盒測試和灰盒測試三類,(測試用例設計階段采用的方法); 從程序執行的方式來分類,可分為:人工測試(Manual Testing,MT)和自動化測試(Automatic Testing,AT); 1.動態測試 動態測試需要在開發/測試環境或實際運行環境中運行軟件,并使用測試用例去查找軟件缺陷; 動態測試包括功能確認與接口測試、覆蓋率分析、性能分析、內存分析等; 2.靜態測試 靜態測試不實際運行軟件,主要是對軟件的編程格式、結構等方面進行評估; 靜態測試包括代碼檢查、程序結構分析、代碼質量度量等。它可以由人工進行,也可以借助軟件工具自動進行; 3.黑盒測試 (1)什么是黑盒測試: 把系統看成一個不透明的黑匣,在完全不考慮系統內部結構和處理過程的情況下驗證系統是否達到用戶需求; 不考慮系統或者組件的內部細節,只關注在選擇的輸入和相應的執行條件下所產生的輸出結果; 又稱功能測試或數據驅動測試,是針對軟件的功能需求/實現進行測試; 通過測試來檢測每個功能是否符合需求,不考慮程序內部的邏輯結構; (2)黑盒測試方法:等價類劃分、邊界值、決策表、錯誤推測、場景法等; 4.白盒測試 (1)什么是白盒測試: 白盒測試也稱結構測試或邏輯驅動測試; 必須知道軟件內部工作過程,通過測試來檢測軟件內部是否按照需求、設計正常運行; 通過邏輯覆蓋、路徑覆蓋等方式選擇測試用例,可以用測試覆蓋率評價測試用例; (2)白盒測試的主要方法(對應于程序的一些主要結構:語句、分支、邏輯路徑、變量): 語句覆蓋方法; 分支覆蓋方法; 邏輯覆蓋方法; 5.灰盒測試 (1)是介于白盒測試與黑盒測試之間的一種測試,灰盒測試多用于集成測試階段,不僅關注輸出、輸入的正確性,同時也關注程序內部的情況。 灰盒測試不像白盒那樣詳細、完整,但又比黑盒測試更關注程序的內部邏輯,常常是通過一些表征性的現象、事件、標志來判斷內部的運行狀態。 6.人工測試 (1)傳統的測試方法: 由測試人員手工編寫測試用例; 缺點在于測試工作量大,重復多,回歸測試難以實現; (2)手工完成測試的全部過程無法保證測試的科學性與嚴密性; 修改的缺陷越多,回歸測試越困難; 沒有人能向決策層提供精確的數據以度量當前的工作進度及工作效率; 反復測試帶來的倦怠情緒及其他人為因素使得測試標準前后不一; 測試花費的時間越長,測試的嚴格性也就越低; 7.自動化測試 (1)利用軟件測試工具自動實現全部或部分測試工作:管理、設計、執行和報告; 自動測試節省大量的測試開銷,并能夠完成一些手工測試無法實現的測試; (2)適合自動化的測試操作: 測試用例的生成(包括測試輸入,標準輸出,測試操作指令等); 測試的執行與控制(包括單機與網絡多機分布運行;夜間及假日運行); 測試對象、范圍、版本等的控制; 測試結果與預期輸出的對比; 不吻合的測試結果的分析、記錄、分類、和通報; 測試的統計,報表的產生; (3)自動測試將測試人員從反復、煩雜的測試執行中解放出來,用更多的時間進行測試設計和結果分析; 軟件測試不可能完全自動化; 不能完成所有手工測試任務; 無創造性且靈活性差,不能改進測試的有效性; 過程中可能會遇到許多意想不到的問題,特別是當軟件不穩定時; 測試腳本的維護高; |
|