軟件測試專欄 | ||
---|---|---|
上一篇 | 主目錄 | 下一篇 |
【前言】
本系列文章僅供學習,請勿轉載。如有侵權請聯繫刪除。
介紹幾個典型的軟件缺陷案例,缺陷有關的術語:錯誤、缺陷、故障和失效;軟件缺陷產生的原因;軟件工程實踐來減少軟中的缺陷;軟件缺陷分類
1 基本概念
術語 | 說明 |
---|---|
缺陷(bug) | 軟件未達到產品說明書表明的功能、出現了說明書不會出現的錯誤、功能超出說明書範圍、未達到說明書未指出但應達到的功能、用戶認爲不好(不易使用,運行緩慢,難以理解)。注意:缺陷導致軟件故障 |
故障 | 軟件運行過程中出現的不希望/不可接受的內部狀態,喪失了在規定限度內執行所需功能的能力,故障是動態 的且可能導致失效,故障是軟件缺陷的內在表現 。 |
失效 | 在運行過程 中出現的不希望的外部行爲結果。失效是是軟件缺陷的外在表現 。 |
錯誤 | 發生錯誤的原因:客戶未完全描述意圖,沒有充分理解需求,編碼錯誤。錯誤是人爲過程,對軟件來說是外部行爲 |
測試&測試用例&測試過程 | 測試用例是一組輸入,測試過程包括測試計劃、測試用例開發、運行測試用例和評估測試結果,測試以處理以上的各種軟件缺陷。重點是怎麼設計測試用例 |
軟件缺陷產生的原因
最大原因:產品說明書,即需求
。其次:設計
軟件缺陷的分類:
- 輸入/輸出缺陷:接受錯誤的輸入、不接受正確的輸入、參數有錯或遺漏;輸出格式有錯,結果有錯
- 數據缺陷:錯誤的初始化、存儲/訪問、標誌/索引、數據引用、類型、數據範圍、變量
- 計算缺陷:錯誤的算法、遺漏計算、不正確的操作數、精度錯誤
- 接口缺陷:不正確的中斷處理、不兼容的類型、參數不匹配,調用錯誤的過程
- 邏輯缺陷:重複、遺漏、循環迭代
2 測試的分類
測試時不適用窮盡性測試,不現實而且依然會存在錯誤。
類別 | 說明 | 方法 | 優缺點 |
---|---|---|---|
功能性測試 | 黑盒,依據規格說明書 ,程序看作函數:f程序P(輸入)=功能結果。 |
邊界值、健壯性、最壞情況、特殊值、輸入等價類、輸出等價類、基於決策表的測試 | 優點:1.與實現無關,實現變化測試用例依然可用。2.確定功能後,測試用例開發與實現並行,減少時間。缺點:1.測試用例之間冗餘。2.存在未測試的漏洞。 |
結構性測試 | 白盒,根據程序實現 來設計測試用例,對邏輯路徑進行測試,檢查程序的狀態與預期是否一致。 |
路徑測試(DD-路徑、基路徑測試)、數據流測試(定義-使用、基於程序片) | 優點:1.對特定程序部分測試,檢查每條分支路徑。2.揭示隱藏在代碼中的錯誤,較徹底和充分。 缺點:1.工作量大,成本高,通常只用於單元測試。2.無法檢測遺漏路徑和數據敏感性錯誤。3.不能驗證規格說明書的正確性。4.無法對規格說明中未實現的部分測試 |
功能性測試和結構性測試的比較:
- 功能性測試使用
規格說明
來設計測試用例,結構性測試使用程序源代碼(程序實現)
來設計測試用例。如果只有結構性測試,那麼無法認識到規格說明書描述的功能是否被實現;如果只有功能性測試,那麼無法認識到程序中實現的在規格說明書中沒有被描述的功能行爲。因此,明智的組合
會帶來功能性測試的置信,以及結構性測試的度量。
【注】更大的測試用例集就一定越好嗎?
錯誤。測試集T1覆蓋了程序的70%,而測試集T2只覆蓋了程序的40%,但是T2涉及到的是用戶最經常使用的,而T1覆蓋的用戶很少使用或幾乎不用。
軟件測試的4個階段:
- 單元測試:模塊測試,最小單位的測試
- 集成測試:綜合測試,揭示接口規約中不夠完整或錯誤的地方
- 系統測試:發現軟件與需求不一致的地方
- 驗收測試:受客戶控制,客戶設計測試用例,生產中實際數據進行的測試
軟件測試的模型:
- V模型:
- W模型:
- X模型:
- H模型: