一、軟件測試概況
1、測試原則
(1)完全測試是不可能的。不可能找出所有錯誤
(2)測試存在風險。測試不全面
(3)測試只能表明缺陷的存在。不能證明沒有缺陷
(4)產品潛在錯誤書與已發現錯誤數成正比。
(5)讓不同cesium人員參與測試工作中。避免固定測試思維
(6)開發者與測試者分開
(7)設計用例時,包括輸入數據和預期的輸出結果兩部分,且輸入數據包括合法與非法的情況。
(8)集中測試易出錯或錯誤較多的模塊。二八定律
(9)長期保留所有測試用例。進行回歸測試
2、軟件測試模型
指:軟件測試全部過程、活動或人物的結構框架。應闡明的問題:(1)測試時間(2)測試步驟(3)如何對測試進行計划(4)不同階段的測試中應關注的測試對象(5)測試過程中應考慮哪些問題(6)測試需要達到的目標。
V模型、W模型、H模型
3、測試分類
按時間階段:單元測試、集成測試、系統測試、驗收測試
按是否運行程序:靜態測試、動態測試
按是否查看源碼(從設計用例角度):黑盒測試(等價類是種重要黑盒測試技術)、白盒測試(邏輯覆蓋是種重要白盒測試技術)
按質量因素:
(1)功能測試:關注功能實現。以需求規格說明書為依據,檢驗是否實現說明書中所有功能需求。
(2)可靠性測試:關注程序輸出結果的准確性。以需求規格說明書對系統可靠性要求為依據,衡量的是程序在多長時間內一直運行且給出期望值,評測軟件提供准確輸出的能力。
(3)可用性測試:衡量處理服務請求時,程序的可用頻率。以需求規格說明書對系統的可用性為依據,可用性衡量的是程序處理服務請求且在最短時間內從故障中恢復的能力。
(4)性能測試:輸入輸出數據的精度、系統響應時間、更新頻率、數據的轉換和傳送時間、操作方式、或運行運行環境變化時軟件的適應能力、故障處理能力、資源使用率。可細分為負載測試、容量測試、壓力測試。
(5)安全性測試:主要驗證系統的安全性、保密性等措施是否有效地發揮作用,包括用戶管理、訪問空盒子、數據備份與恢復、入侵檢測。
除以上分類測試外,還有
(1)配置測試:檢驗是否多種硬件平台正常運行
(2)兼容性測試:檢驗各軟件是否正確交互和共享信息,主要關注軟件的運行平台和應用系統版本、標准和規范、數據的共享性
(3)安裝測試:為了發現軟件在安裝中存在的錯誤,驗證與安裝手冊的內容是否一致。對應的還有卸載測試
(4)文檔測試:檢驗軟件產品的文檔是否清晰、准確、一致
(5)軟件國際化測試、軟件本地化測試:和本地化相對應。要求軟件支持Unicode,不同時區的設定、顯示和切換,清除些不易改變的設置。本地化是軟件按特性國家、地區的市場需要進行加工、處理,使滿足特定市場用戶對軟件的要求的過程,本地化重點有:翻譯問題、文化背景問題、數據格式問題等
(6)α測試、β測試:都屬於驗收測試范疇
4、測試用例
1.測試用例編寫
2.測試用例設計
(1)任何情況都必選擇邊界值分析法
(2)必要時用等價類划分法補充些測試用例
(3)用錯誤推測法再追加些測試用例
(4)對照程序邏輯,檢查設計出的用例的邏輯覆蓋度
(5)若程序功能說明中含有輸入條件的組合情況,則可選因果圖法
3.測試用例場景
通過描述用例的路徑來確定的過程,這個流經過程要從用例開始到結束遍歷其中所有的基本流和備選流
二、軟件測試方法與過程
靜態測試
以人工為主,測試者通過閱讀代碼和文檔,分析其正確性、一致性及邏輯結構的正確性,從而找出軟件中的錯誤或缺陷。對自動化工具依賴性較小,發揮人的主觀能動性。
審查和走查是靜態測試常用形式。審查指通過閱讀討論各設計文檔及代碼來檢查其是否有錯。審查可獨自或會議形式進行。走查對象只是代碼,不含文檔。代碼走查以小組形式,測試人員提供用例,參與者模擬計算機,跟蹤程序執行過程,對其邏輯和功能提問,並通過討論發現問題。
靜態測試效率較高,且要求測試者有豐富經驗。
動態測試
兩種流行技術——黑盒測試、白盒測試。
1.黑盒測試
根據設計用例的方法不同,黑盒測試包括等價划分法、邊界值分析法、錯誤推測法、因果圖法等。白盒測試包括邏輯覆蓋測試方法、基本路徑測試等方法。
1.1等價類划分法?把程序的輸入域划分為若干子集,再從每個子集中選少數代表性數據為用例,選取的數據對揭露程序錯誤都是等效的。等價類分為有效等價類(對程序規格說明有意義的、合理的輸入數據所構成的集合)和無效等價類。
划分等價類原則?
(1)若輸入條件規定了取值范圍或個數,則可確定一個有效等價類和兩個無效等價類
(2)若輸入條件規定了輸入值的集合或是規定了“必須如何”的條件,則可確定一個有效等價類和一個無效等價類
(3)若輸入條件是布爾表達式,則可分為一個有效等價類和一個無效等價類
(4)若輸入條件是一組值且程序對不同的值有不同的處理方式,則每個允許的輸入值對應一個有效等價類,不允許的輸入值為一個無效等價類
(5)若規定了輸入數據必須遵守的規則就可以划分出一個有效的等價類(符合規則)和若干個無效的等價類(從各角度違反規則)。設計測試用例步驟?
(1)對每個輸入和外部條件進行等價類划分,畫出等價類表,並為每個等價類進行編號
(2)設計一個測試用例,使其盡可能多覆蓋有效等價類,重復這一步直至所有的有效等價類被覆蓋
(3)為每一個無效等價類設計一個測試用例
1.2邊界值分析法?是一種補充等價類划分法的黑盒測試方法,它是選擇等價類邊界的測試用例。大量的錯誤常發生在輸入和輸出范圍的邊界上不是范圍內部。邊界值:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最長/最短、空/滿等。
設計原則?
(1)若規定了取值范圍,應以范圍的邊界及剛剛超范圍的邊界外的值為測試用例
(2)若規定了值得個數,應以最大、最小個數和稍小於最小和稍大於最大個數作為測試用例
(3)針對每個輸出條件,也使用上面的兩條原則
(4)若程序規格說明書中提到的輸入或輸出范圍是有序集合,應注意選取有序集的第一個和最后一個為測試用例
(5)分析規格說明書,找出其他可能
1.3錯誤推測法?很大程度靠直覺和經驗進行。基本思想?是列舉出程序中可能有的錯誤和易發生錯誤的特殊情況,且根據它們選測試方案。
1.4因果圖法?(若設計階段已用到決策表則可直接使用而不必再畫因果圖)
等價類划分法和邊界值分析法都主要考慮的是輸入條件,沒考慮輸入條件的各組合及各輸入條件間的相互制約關系。考慮描述多種條件的組合,相應地產生多個動作的形式來考慮設計測試用例,這就需要利用因果圖法。因果圖法?是從自然語言書寫的程序規格說明書中尋找因果關系,即輸入條件與輸出和程序狀態的改變,通過因果圖產生判定表。
設計用例步驟?
(1)分析程序規格說明書中的描述中,哪些是原因、結果,原因常是輸入條件或輸入條件的等價類,而結果常是輸出條件
(2)分析程序規格說明書中描述的語義內容,並將其表示成連接各個原因與各個結果的因果圖
(3)由於語法或環境限制,有些原因和結果的組合的情況是不可能出現的,為表明這些特定的情況,在因果圖上使用若干特殊符號標明約束條件
(4)把因果圖轉化為決策表
(5)為決策表中每一列表示的情況設計測試用例
1.5決策表法?是分析和表達多邏輯條件下執行不同操作的情況的工具,可以把復雜邏輯關系和多種條件組合的情況表達得比較明確。決策表組成:條件樁+條件項+動作樁+動作項
決策表建立步驟?
(1)確定規則個數
(2)列出所有條件樁和動作樁
(3)填入條件項
(4)填入動作項,制定初始決策表
(5)簡化、合並相似規則或相同動作
1.6場景法?用例場景是通過描述流經用例的路徑來確定的過程,這個流經過程要從用例開始到結束遍歷其中所有的基本流和備選流
應用場景法進行黑盒測試步驟?
(1)根據規格說明,描述出程序的基本流和各個備選流
(2)根據基本流和各個備選流生成不同的場景
(3)對每一場景生成相應的測試用例
(4)對生成的所有測試用例進行復審,去掉多余的測試用例,對每一測試用例確定測試數據
1.7黑盒測試選擇
經驗之談
(1)任何情況下都必須選擇邊界值分析法,此法設計的測試用例發現程序錯誤能力最強
(2)必要時用等價類划分法補充些測試用例
(3)用錯誤推測法再追加些測試用例
(4)若程序的功能說明中含有輸入條件的組合情況,則可選用因果圖法和決策表法
2.白盒測試
關注軟件內部細節和邏輯結構,利用構件層設計的一部分而描述的控制結構來生成測試用例。
2.1代碼檢查法
變量檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結構檢查。准備?需求描述文檔、程序設計文檔、程序源碼清單、代碼編寫標准和代碼錯誤檢查表。可用工具。
2.2靜態結構分析法
是種對代碼機械性的、程序化的特性進行分析的方法。可用工具。
2.3程序插樁技術
借助往程序種插入操作來實現測試目的的方法。(如輸出語句)
2.4邏輯覆蓋法
2.5基本路徑法
2.6白盒測試方法選擇
(1)先靜態再動態的組合方式,先代碼檢查和靜態結構分析再覆蓋測試
(2)靜態分析結構為先導,通過代碼檢查和動態測試對靜態分析結果做確認
(3)覆蓋測試為白盒測試重點,可用基本路徑法達到語句覆蓋標准,對軟件重點模塊,應用覆蓋標准衡量測試的覆蓋率
(4)單元測試階段以代碼檢查、覆蓋測試為主,集成測試階段要增加靜態結構分析,在系統測試階段根據黑盒測試結果采用相應的白盒測試方法
比較
黑盒測試:不涉及程序結構,用軟件規格說明書生成測試用例,可適用從單元測試到系統驗收測試,某些代碼得不到測試
白盒測試:考察程序邏輯解結構,用程序結構信息生成測試用例,主要適用單元測試和集成測試