文章目錄
第七章 軟件測試
首要任務:設計測試方案。
測試方案包括:測試目的、測試用例。
7.1 軟件測試的概念
概念:
軟件測試是在軟件投入運行前,對軟件需求分析、設計規格說明和編碼的最終複審。
可以這樣說:軟件測試是爲了發現錯誤而執行程序的過程。
或者說,軟件測試是根據軟件開發各階段的規格說明和程序的內部結構而精心設計的一批測試用例(即輸入一些數據而得到其預期的結果),並利用這些測試用例去運行程序,以發現程序錯誤的過程。
7.1.2 軟件測試的目的
直接目的:暴露程序中隱藏的錯誤和缺陷。
(1)測試是爲了發現程序中的錯誤而執行程序的過程。
(2)好的測試方案是極可能發現迄今爲止尚未發現的錯誤的測試方案。
(3)成功的測試是發現了至今爲止尚未發現的錯誤的測試。
7.1.3 軟件測試的原則
(1)事先定義好產品的質量標準
(2)儘早地並不斷地進行軟件測試
(3)程序員或程序設計機構應避免測試自己設計的程序
(4)嚴格執行測試計劃,排除測試的隨意性
(5)所有的測試標準都是建立在用戶的需求之上
(6)測試是一個持續進行的過程,而不是一個階段。
(7)測試是不可能窮盡的,當測試出口條件滿足時,就可以停止測試。
(8)在對程序修改之後要進行迴歸測試。
(9)妥善保存一切測試過程文檔
(10)一定要注意測試過程文檔,如測試計劃、測試用例、出錯統計、最終分析報告
(11)測試是開發的朋友,不是開發的敵人
7.1.4 軟件測試的方法
(1)按照軟件測試的動、靜態來分:
①靜態分析測試方法
不執行被測試軟件,可對需求分析說明書、軟件設計說明書、源程序做結構檢查、流圖分析、符號執行等來找出軟件的錯誤。
②動態執行測試
動態執行測試就是通過運行程序來檢驗程序的動態行爲和運行結果的正確性。
分類
- 結構性測試
- 拍錯性測試
- 功能測試
- 分域測試
(2)按照軟件開發過程的內外分類
① 軟件開發過程中的測試
- 單元測試
- 集成測試
- 系統測試
- 驗收測試
②軟件產品測試
(3)按照測試用例所依據的信息來源
① 以程序爲基礎測試
通過對程序的分析形成測試用例,並以程序被執行的程度來判斷測試是否充分,這就是白盒測試。
② 以需求規約和需求描述爲基礎的測試
就是黑盒測試。
③ 程序和需求相結合的測試
介於白盒測試與黑盒測試之間,灰盒測試。
7.2 軟件測試過程過程模型
(1)V模型
(2)W模型
(3)X模型
(4)H模型
7.3 軟件開發過程的測試步驟
7.3.1 單元測試
單元測試也稱模塊測試,即對模塊進行正確性檢驗的測試,以期儘早發現各模塊內部可能存在的各種錯誤。
內容:
① 模塊接口測試
② 模塊局部數據結構測試
③ 模塊邊界條件測試
④ 模塊獨立執行路徑測試
⑤ 模塊內部錯誤處理測試
7.3.2 集成測試
是在單元測試的基礎上將軟件的多個模塊或者系統前後臺合併之後進行的測試,也可以算是對單元測試修改進行的複審測試。
(1)非增量式集成測試方法
即 一次性集成測試方法
(2)增量式集成測試方法
把下一個要測試的模塊同已經測試好的那些模塊結合起來進行測試。
方式:
① 自頂向下
②自底向上
(3)三明治集成
又稱混合集成,綜合了自頂向下和自底向上策略的特點,將系統分爲3層,中間層爲目標層。
7.3.3 系統測試
是基於一定的計算機硬件環境,對整個軟件進行的一系列測試。
(1)面向軟件性能的系統測試
① 性能測試
② 壓力測試
③ 健壯性測試
(2)面向用戶使用的系統測試
① 面向用戶使用的系統測試
② 安全性測試
③ 兼容性測試
④ 可用性測試
7.3.4 驗收測試
旨在向軟件的購買者展示該軟件系統滿足其用戶的要求。
主要內容:
- 檢查《軟件開發任務書》要求的所有功能是否實現以及軟件質量特性是否達到。
- 檢查軟件系統開發各階段的完檔、評審結論是否齊全規範。
- 驗證軟件系統功能和接口與軟件需求規格說明的一致性。
- 檢查程序和文檔的一致性、交付的軟件產品與《軟件開發任務書》要求的一致性及符合有關標準的情況。
步驟:
- 制訂軟件驗收測試計劃,做好驗收測試的準備。
- 經驗收委員會審定後,實施軟件驗收測試,並建立好完整的驗收測試記錄。
- 編寫軟件驗收測試報告
- 驗收委員會對驗收測試情況進行評審,給出結論。
7.4 軟件測試用例的設計
7.4.1 測試用例的定義
(1)測試用例的定義
測試用例是爲特定的目的而設計的一組測試輸入數據、執行條件和預期的輸出結果。
測試用例是執行的最小實體。
(2)測試用例設計原則
① 測試用例的代表性
② 測試結果的可判定性
③ 測試結果的可再現性
7.4.2 白盒測試法的用例設計
(1)語句覆蓋
(2)判定覆蓋
(3)條件覆蓋
(4)判定/條件覆蓋
(5)條件組合覆蓋
(6)點覆蓋
(7)邊覆蓋
(8)路徑覆蓋
7.4.3 黑盒測試法的用例設計
(1)等價類劃分
① 等價類的概念
② 如何確定等價類
③ 如何設計測試用例
(2)因果圖法
(3)邊界值分析
(4)錯誤推測
7.5 軟件調試
調試又稱糾錯或排錯。
調試與測試的區別:
- 測試是一種檢驗,發現的是故障的表現,並不知道故障的根源。
- 調試是測試發現錯誤後消除錯誤的過程。
7.5.1 調試原則
(1)診斷原則
① 重點仔細分析與錯誤徵兆有關的信息,這是提高調試效率的最有效的策略
② 避免進入死衚衕。
③ 是能把調試工具當作輔助手段來使用。
(2)修改原則
① 修改錯誤前一定要仔細思考。
② 在出現錯誤的地方,很可能還有別的錯誤。
③ 修改錯誤的一個常見失誤是隻修改了這個錯誤的徵兆,而沒有修改錯誤的本質。
7.5.2 軟件調試的步驟
① 從錯誤的外部表現入手,確定程序中出錯的位置。
② 分析有關程序代碼,找出錯誤的內在原因。
③ 修改程序代碼,排除這個錯誤。
④ 重複進行暴露了這個錯誤的原始測試以及某些迴歸測試,以確保該錯誤確實被排除且沒有引入新的錯誤。
⑤ 如果所作的修正無效,則撤銷這次改動,重複上述過程,直到找到一個有效的辦法爲止。
7.5.3 軟件調試的策略
(1)試探法
(2)回溯法
(3)歸納法
(4)演繹法