內容簡介
本書共分為三篇: 軟體測試的原理與方法、技術和實踐。本書首先系統地介紹軟體測試相關概念,從不同的視角來探討軟體測試的本質及其內涵; 全面而又系統地講解了軟體測試所需的基本方法,按照SWEBOK 3.0對方法進行了重新分類和組織,能夠滿足不同套用系統的測試需求; 並且簡要地介紹了軟體測試規範、軟體測試過程及其改進等內容,有利於讀者提綱挈領地掌握軟體測試的知識全貌。本書的第2篇介紹了軟體測試各個層次(單元測試、集成測試、系統測試和驗收測試)的測試技術及其工具,系統、務實而有效,和業界的實踐保持高度一致,學以致用; 而且還介紹了軟體國際化和本地化的測試、軟體測試自動化的原理和框架,可使讀者有效地提高動手能力。為了更好地將測試方法和技術套用於實際項目中,本書的第3篇從軟體測試需求分析
目錄
第1篇軟體測試的原理與方法
第1章引論
1.1軟體測試的必要性
1.1.1迪士尼並不總是帶來笑聲
1.1.2一個缺陷造成了數億美元損失
1.1.3火星探測飛船墜毀
1.1.4更多的悲劇
1.2為什麼要進行軟體測試
1.3什麼是軟體測試
1.3.1軟體測試學科的形成
1.3.2正反兩方面的爭辯
1.3.3軟體測試的定義
1.3.4軟體測試的其他觀點
1.4測試和開發的關係
1.5測試和質量保證的關係
1.6測試驅動開發的思想
小結
思考題
第2章軟體測試的基本概念
2.1軟體缺陷
2.1.1軟體質量的內涵
2.1.2軟體缺陷的定義
2.1.3軟體缺陷的產生
2.1.4軟體缺陷的構成
2.1.5修復軟體缺陷的代價
2.2軟體測試的分類
2.3靜態測試和動態測試
2.3.1產品評審
2.3.2靜態分析
2.3.3驗證和確認
2.4主動測試和被動測試
2.5黑盒測試和白盒測試
2.6軟體測試級別
2.7軟體測試計畫和測試用例
2.7.1測試計畫
2.7.2測試用例
2.8專業測試人員的責任和要求
2.8.1專業軟體測試人員的責任
2.8.2對專業測試人員的要求
2.8.3優秀測試工程師應具備的素質
小結
思考題
第3章軟體測試方法
3.1基於直覺和經驗的方法
3.1.1Adhoc測試方法和ALAC測試
3.1.2錯誤推測法
3.2基於輸入域的方法
3.2.1等價類劃分法
3.2.2邊界值分析法
3.3基於組合及其最佳化的方法
3.3.1判定表方法
3.3.2因果圖法
3.3.3Pairwise方法
3.3.4正交試驗法
3.4基於邏輯覆蓋的方法
3.4.1判定覆蓋
3.4.2條件覆蓋
3.4.3判定條件覆蓋
3.4.4條件組合覆蓋
3.4.5基本路徑覆蓋
3.5基於缺陷模式的測試
3.5.1常見的缺陷模式
3.5.2DPBT的測試過程
3.6基於模型的測試
3.6.1功能圖法
3.6.2模糊測試方法
3.7形式化測試方法
3.7.1形式化方法
3.7.2形式化驗證
3.7.3擴展有限狀態機方法
小結
思考題
第4章軟體測試流程和規範
4.1傳統的軟體測試過程
4.1.1W模型
4.1.2TMap NEXT
4.2敏捷測試過程
4.2.1敏捷測試的特徵
4.2.2敏捷測試流程
4.2.3基於腳本測試和探索式測試
4.3軟體測試學派
4.4基於風險的測試策略
4.5測試過程改進
4.5.1TMMi
4.5.2TPI NEXT
4.5.3CTP
4.5.4STEP
4.6軟體測試規範
小結
思考題
第2篇軟體測試的技術
第5章單元測試與集成測試
5.1單元測試的目標和任務
5.1.1為何要進行單元測試
5.1.2單元測試的目標和要求
5.1.3單元測試的任務
5.2靜態測試
5.2.1編碼的標準和規範
5.2.2代碼評審
5.3動態測試
5.3.1驅動程式和樁程式
5.3.2類測試
5.4代碼評審案例分析
5.4.1空指針保護
5.4.2格式化數字錯誤
5.4.3字元串或數組越界錯誤
5.4.4資源不合理使用
5.4.5不當使用synchronized導致系統性能下降
5.5分層單元測試
5.5.1Action層的單元測試
5.5.2數據訪問層的單元測試
5.5.3Servlet的單元測試
5.6單元測試工具
5.6.1JUnit介紹
5.6.2Eclipse中JUnit套用舉例
5.6.3JUnit + Ant 構建自動的單元測試
5.6.4代碼的靜態檢測工具
5.6.5SourceMonitor 檢測代碼複雜度
5.6.6開源的單元測試工具
5.6.7商業的單元測試工具
5.7系統集成的模式與方法
5.7.1集成測試的模式
5.7.2自頂向下和自底向上集成方法
5.7.3混合策略
5.7.4持續集成
小結
思考題
第6章系統測試
6.1系統級功能測試
6.1.1功能測試要求
6.1.2Web伺服器的功能測試
6.1.3一套Web功能測試工具
6.1.4AutoIT及其客戶端測試工具
6.1.5嵌入式測試工具
6.2回歸測試
6.2.1目的
6.2.2策略及其方法
6.3性能測試
6.3.1系統性能指標和測試類型
6.3.2系統負載及其模式
6.3.3性能測試的基本過程
6.3.4性能測試結果分析
6.3.5JMeter及系統性能測試工具
6.3.6Web性能測試
6.3.7用JProfiler完成套用伺服器的性能測試
6.3.8壓力測試
6.3.9容量測試
6.4安全性測試
6.4.1安全性測試的範圍與方法
6.4.2Web安全性測試
6.4.3安全性測試工具
6.5容錯性測試
6.5.1容錯性測試的要點
6.5.2資料庫並發控制測試
6.6兼容性測試
6.6.1軟體兼容性測試
6.6.2數據共享兼容性測試
6.6.3硬體兼容性測試
6.7可靠性測試
小結
思考題
第7章驗收測試
7.1驗收測試過程
7.2產品規格說明書的驗證
7.2.1產品規格說明書的評審
7.2.2產品規格說明書的驗證
7.2.3文檔的測試
7.3用戶界面和可用性測試
7.4安裝測試和可恢復性測試
小結
思考題
第8章軟體本地化測試
8.1什麼是軟體本地化
8.1.1軟體本地化與國際化
8.1.2字元集問題
8.1.3軟體國際化標準
8.1.4軟體本地化基本步驟
8.1.5軟體本地化測試
8.2翻譯驗證
8.3本地化測試的技術問題
8.3.1數據格式
8.3.2頁面顯示和布局
8.3.3配置和兼容性問題
8.4本地化的功能測試
小結
思考題
第9章測試自動化及其框架
9.1測試自動化的內涵
9.1.1手工測試的局限性
9.1.2什麼是測試自動化
9.1.3軟體測試自動化的優勢
9.2測試自動化實現的原理
9.2.1代碼分析
9.2.2對象識別
9.2.3腳本技術
9.2.4自動比較技術
9.2.5測試自動化系統的構成
9.3測試自動化的實施
9.3.1測試工具的分類
9.3.2測試工具的選擇
9.3.3測試自動化普遍存在的問題
9.3.4自動化測試的引入和套用
9.4功能測試工具特性要求
9.5性能測試工具特性要求
9.6測試自動化的框架
小結
思考題
第3篇軟體測試項目實踐
第10章測試需求分析與測試計畫
10.1測試的目標和準則
10.2測試需求分析
10.2.1測試需求分析的基本方法
10.2.2測試需求分析的技術
10.2.3功能測試範圍分析
10.2.4非功能性的系統測試需求
10.3測試項目的估算與進度安排
10.3.1測試工作量估算
10.3.2工作分解結構表方法
10.3.3資源的安排
10.3.4測試里程碑和進度表
10.4測試風險和測試策略
10.4.1測試風險管理計畫
10.4.2測試策略的確定
10.5測試計畫的內容與編制
10.5.1測試計畫內容
10.5.2測試項目的計畫過程
10.5.3制定有效的測試計畫
小結
思考題
第11章設計和維護測試用例
11.1測試用例構成及其設計
11.1.1測試用例的重要性
11.1.2測試用例設計書寫標準
11.1.3測試用例設計考慮因素
11.1.4測試用例設計的基本原則
11.2測試用例的組織和跟蹤
11.2.1測試用例的屬性
11.2.2測試套件及其構成方法
11.2.3跟蹤測試用例
11.2.4維護測試用例
11.2.5測試用例的覆蓋率
小結
思考題
第12章部署測試環境
12.1測試環境的重要性
12.2測試環境要素
12.2.1硬體
12.2.2網路環境
12.2.3軟體
12.2.4數據準備
12.3虛擬機的套用
12.3.1虛擬機軟體
12.3.2VMware的虛擬機解決方案
12.3.3輔助工具
12.4如何建立項目的測試環境
12.5自動部署測試環境
12.6測試環境的維護和管理
小結
思考題
第13章測試執行、缺陷報告與跟蹤
13.1軟體測試執行與跟蹤
13.1.1測試執行過程的要點
13.1.2測試項目進度的管理方法
13.1.3測試過程管理工具
13.2軟體缺陷的描述
13.2.1軟體缺陷的生命周期
13.2.2嚴重性和優先權
13.2.3缺陷的其他屬性
13.2.4完整的缺陷信息
13.2.5缺陷描述的基本要求
13.2.6缺陷報告示例
13.3軟體缺陷相關的信息
13.3.1軟體缺陷的圖片信息
13.3.2使用WinDbg記錄軟體缺陷信息
13.3.3使用SoftICE記錄軟體缺陷信息
13.3.4分離和再現軟體缺陷
13.4軟體缺陷跟蹤和分析
13.4.1軟體缺陷處理技巧
13.4.2缺陷趨勢分析
13.4.3缺陷分布分析
13.4.4缺陷跟蹤方法
13.5軟體缺陷跟蹤系統
小結
思考題
第14章軟體測試和質量分析報告
14.1軟體產品的質量度量
14.1.1軟體度量及其過程
14.1.2軟體質量的度量
14.1.3質量度量的統計方法
14.2評估系統測試的覆蓋程度
14.2.1對軟體需求的估算
14.2.2基於需求的測試覆蓋評估
14.2.3基於代碼的測試覆蓋評估
14.3基於缺陷分析的產品質量評估
14.3.1缺陷評測的基線
14.3.2經典的種子公式
14.3.3基於缺陷清除率的估算方法
14.3.4軟體產品性能評估
14.4測試報告的具體內容
小結
思考題
參考文獻
附錄A軟體測試英文術語及中文解釋
附錄B測試計畫模板
附錄C測試用例設計模板
附錄D軟體缺陷模板
附錄E測試報告模板
附錄FJava Code Inspection Checklist