本書詳細地闡述了軟件測試領域的基本理論、基本技術及專門測試領域的測試技術。從軟件測試的數(shù)學基礎入手,介紹了和軟件測試相關的基礎知識;然后全面深入地介紹了靜態(tài)測試技術和動態(tài)測試技術;在了解這些基礎技術的基礎上,本書從單元測試、集成測試、系統(tǒng)測試及驗收測試4個層面分析了如何進行測試的計劃、用例分析和設計等過程;本書還會涉及GUI測試、Web系統(tǒng)測試、數(shù)據(jù)庫測試、嵌入式系統(tǒng)測試、負載壓力測試及游戲測試。
計算機軟件已經(jīng)應用到人們生活的各個領域。一方面,隨著軟件的普及,人們對軟件質量的要求越來越高; 另一方面,由于軟件系統(tǒng)變得越來越龐大而復雜,如何提高軟件質量是廣大技術人員所關注的,這使得軟件開發(fā)人員和軟件測試人員面臨著巨大挑戰(zhàn)。所以,保證軟件質量是軟件工程領域一直在深入研究的課題之一。
軟件測試技術本身是不斷發(fā)展的。目前,提高軟件質量的方法就是在提高軟件測試人員技術水平的同時規(guī)范并優(yōu)化軟件開發(fā)過程的管理。但軟件測試在國內仍然處于發(fā)展的初期,在測試標準、測試計劃的制訂,測試方法的使用和推廣,測試的組織和管理等方面處于不斷發(fā)展完善階段,處在一個“百家爭鳴”的時期。在軟件測試行業(yè)表面“蒸蒸日上”的現(xiàn)象背后,同時也存在著軟件質量危機。
基于這種情況,國內許多高校的計算機、軟件工程及其相關專業(yè)紛紛開設“軟件測試”課程以培養(yǎng)更多的軟件測試人才。目前,市場上的軟件測試的精品教材少,尤其對軟件測試技術介紹全面、深入的教材更少。為了適應當前教學和軟件測試技術人員的需要,編者查閱了大量國內外有關軟件測試方面的著作和文獻,并結合自己多年的從業(yè)和教學經(jīng)驗編寫了本書。
本書的特點是對測試技術介紹全面,不但闡述了所有基本的軟件測試技術,而且介紹了許多高級主題和專門應用系統(tǒng)的測試技術,并附有許多測試案例。
本書共分14章,第1章從討論軟件測試的數(shù)學基礎入手,闡述了軟件測試的發(fā)展史、軟件測試的定義及基本原則等方面的基礎知識,也分析了人工智能技術在測試領域的應用和發(fā)展; 第2章介紹了靜態(tài)測試技術; 第3章全面地分析了動態(tài)測試技術,包括黑盒測試技術和白盒測試技術等; 第4~7章分別介紹了單元測試、集成測試、系統(tǒng)測試及驗收測試技術; 第8章介紹了負載壓力測試; 第9章詳細闡述了App移動應用測試; 第10章詳細分析了微服務架構應用測試; 第11章介紹了嵌入式系統(tǒng)測試; 第12章介紹了游戲測試; 第13章全面分析了軟件測試管理; 第14章介紹了軟件測試工具,分析了自動化測試和手工測試的優(yōu)點與缺點等方面的內容。
本書由杜慶峰編著,在編寫的過程中韓永琦、張雙俐、殷康麟、邱娟等為本書做了插圖繪制、案例程序的調試和相關校對工作,在此一并致謝。
本書在編寫過程中參閱了大量國內外同行的著作及文獻,汲取了軟件測試領域的最新知識。在此,對這些作者表示深深的感謝。
由于編者的水平有限、時間倉促,書中難免存在疏漏之處,希望大家批評指正。
編者2020年6月
杜慶峰,教授,博導,同濟大學軟件學院
研究領域
1.軟件工程(軟件過程控制及度量、軟件測試技術、軟件項目管理、軟件成本估算及分析與設計建摸)
2.非線性矢量海量數(shù)據(jù)解析與壓縮建摸及其算法
3.大規(guī)模時態(tài)地理信息系統(tǒng)(GIS)數(shù)據(jù)存取與管理
4.大規(guī)模海量數(shù)據(jù)分布式并行處理,云計算
工作經(jīng)驗
1991年7月---2003年11月:
2003年至今,同濟大學軟件學院,中國軟件測試認證委員會資深專家、專家組組長,中國軟件行業(yè)協(xié)會軟件過程改進分會專家,同濟大學第二屆教學質量督導專家,國家自然科學基金委員會評議專家,同濟大學教學名師.
1994年11月~2003年3月在上海華騰軟件公司工作.
1993年10~1994年11月在安徽大潮軟件技術公司從事軟件開發(fā)及管理.
1988年7月~1993年10月在安徽省測繪局工作.
2013年12~2014年7月在美國圣地亞哥州立大學高級研究訪問學者.
從事的主要項目有:
1)主持國家自然科學基金項目《SVG格式的時態(tài)GIS數(shù)據(jù)動態(tài)解析模型及增量存取機制研究》.
2)參與國家自然科學基金青年科學基金項目《基于熵的成本估算關鍵數(shù)據(jù)集合的發(fā)現(xiàn)方法》(第二).
目錄
第1章軟件測試基礎知識
1.1軟件測試和軟件質量
1.1.1什么是軟件測試
1.1.2軟件質量的定義
1.1.3軟件測試和軟件質量保證的區(qū)別
1.1.4進行多少測試才終止
1.2為什么需要軟件測試
1.2.1導致軟件缺陷的原因
1.2.2軟件測試在軟件開發(fā)、維護和使用中的角色
1.2.3軟件測試心理學
1.3軟件測試的目的
1.4軟件測試的原則
1.4.1所有的軟件測試都應追溯到用戶需求
1.4.2盡早地和不斷地進行軟件測試
1.4.3不可能完全地測試
1.4.4增量測試,由小到大
1.4.5避免測試自己的程序
1.4.6設計完善的測試用例
1.4.7注意測試中的群集現(xiàn)象
1.4.8確認缺陷的有效性
1.4.9合理安排測試計劃
1.4.10進行回歸測試
1.4.11測試結果的統(tǒng)計、分析及可視化
1.4.12及時更新測試
1.5軟件測試級別和模型
1.5.1軟件測試級別
1.5.2軟件測試生命周期
1.5.3開發(fā)和測試模型
1.6軟件測試的類型
1.6.1功能性測試
1.6.2非功能性測試
1.6.3軟件結構性測試
1.6.4變更相關的測試(再測試和回歸測試)
1.7軟件測試的基本過程
1.8人工智能與軟件測試
練習
第2章靜態(tài)測試技術
2.1靜態(tài)測試技術概要
2.2評審技術概述
2.2.1評審的定義和類型
2.2.2評審過程
2.2.3責任和角色
2.3代碼檢查
2.3.1代碼檢查類型
2.3.2代碼檢查內容
2.3.3編碼規(guī)范
2.3.4代碼缺陷檢查表
2.4正規(guī)技術評審
2.4.1定義
2.4.2技術評審的目的
2.4.3評審小組成員
2.4.4技術評審活動過程
2.4.5技術評審注意事項
2.5面向對象分析和設計的靜態(tài)測試
2.5.1面向對象的需求及分析規(guī)約的靜態(tài)測試
2.5.2面向對象設計規(guī)約的靜態(tài)測試
練習
第3章動態(tài)測試技術
3.1黑盒測試技術
3.1.1邊界值分析法
3.1.2等價類測試法
3.1.3錯誤推測法
3.1.4因果圖法
3.1.5決策表測試法
3.1.6場景法
3.1.7正交實驗法
3.1.8黑盒測試方法選擇的策略
3.2白盒測試技術
3.2.1白盒測試的概念
3.2.2程序結構分析
3.2.3邏輯覆蓋測試法
3.2.4程序插裝
3.2.5其他白盒測試方法簡介
3.2.6白盒測試方法選擇的策略
練習
第4章單元測試
4.1單元測試概述
4.2單元測試環(huán)境及過程
4.2.1單元測試環(huán)境
4.2.2單元測試過程
4.3單元測試策略
4.3.1傳統(tǒng)結構化開發(fā)單元測試策略
4.3.2面向對象開發(fā)單元測試策略
4.4單元測試的分析和用例設計
4.4.1一般單元測試分析
4.4.2面向對象的單元測試分析
4.4.3單元測試用例設計
4.5單元測試實例
練習
第5章集成測試
5.1集成測試概述
5.2集成測試環(huán)境及過程
5.3集成測試方法
5.3.1一般的集成測試方法
5.3.2面向對象的集成測試方法
5.4集成測試的分析和用例設計
5.5集成測試實例
練習
第6章系統(tǒng)測試
6.1系統(tǒng)測試概述
6.2系統(tǒng)測試環(huán)境及過程
6.3系統(tǒng)測試類型
6.4系統(tǒng)測試的分析和用例設計
6.5系統(tǒng)測試實例
練習
第7章驗收測試
7.1驗收測試概述
7.2驗收測試過程
7.3驗收測試實例
練習
第8章負載壓力測試
8.1負載壓力測試基礎
8.2負載壓力測試的策略
8.3負載壓力測試的解決方案和實施
8.4負載壓力測試結果分析
8.5系統(tǒng)性能調優(yōu)
練習
第9章App移動應用測試
9.1移動操作系統(tǒng)介紹
9.2App啟動執(zhí)行過程
9.3App項目開發(fā)流程
9.4App測試自動化及測試準備
9.4.1App測試自動化
9.4.2App測試準備
9.5App功能測試
9.5.1UI測試
9.5.2業(yè)務功能測試
9.5.3其他功能測試
9.5.4用戶體驗測試
9.6App非功能測試
9.6.1安裝、卸載測試
9.6.2安全測試
9.6.3性能測試
9.6.4兼容性測試
9.7App專項測試
9.7.1相關特定操作測試
9.7.2弱網(wǎng)測試
9.7.3網(wǎng)絡超時測試
9.7.4操作類型測試
9.7.5交叉事件測試
9.7.6第三方推送測試
9.7.7消息推送測試
練習
第10章微服務架構應用測試
10.1微服務與測試
10.1.1微服務的由來
10.1.2微服務與傳統(tǒng)開發(fā)方式
10.1.3微服務架構對測試人員意味著什么
10.2微服務對軟件測試的挑戰(zhàn)
10.2.1總體的測試策略
10.2.2傳統(tǒng)測試方法面臨的挑戰(zhàn)
10.3微服務架構的單元測試
10.3.1定義單元測試邊界
10.3.2單元測試的流程
10.3.3監(jiān)控單元測試覆蓋率
10.4微服務架構的集成測試
10.5微服務架構的組件測試
10.6微服務架構的契約測試
10.6.1契約測試的由來
10.6.2契約測試的實施
10.7微服務架構的端到端測試
10.7.1端到端測試的實施方法
10.7.2端到端測試的優(yōu)化
10.8微服務架構的云端測試和性能測試
10.8.1微服務的云端測試
10.8.2微服務的性能測試
10.9微服務架構的測試流水線
10.9.1什么是CI/CD
10.9.2自動測試流水線
10.10DevOps與測試
10.10.1DevOps的出現(xiàn)
10.10.2DevOps在技術領域的實踐
10.10.3DevOps使用的主流工具
10.10.4從DevOps到TestOps
練習
第11章嵌入式系統(tǒng)測試
11.1嵌入式系統(tǒng)介紹及測試基礎
11.1.1嵌入式系統(tǒng)與嵌入式操作系統(tǒng)
11.1.2嵌入式測試方法概要
11.2嵌入式測試策略
11.3嵌入式測試環(huán)境的創(chuàng)建與實施
11.3.1模擬階段
11.3.2原型階段
11.3.3臨近生產階段
11.3.4開發(fā)后階段
11.4嵌入式測試的工具
練習
第12章游戲測試
12.1游戲測試基本概念
12.1.1游戲開發(fā)
12.1.2游戲測試與開發(fā)過程的關系
12.2游戲測試的主要內容
12.3游戲測試的實施
12.3.1游戲策劃與測試計劃
12.3.2游戲測試用例設計
12.3.3游戲性能測試
12.3.4用例執(zhí)行和測試報告
練習
第13章軟件測試管理
13.1測試計劃的制訂與估算
13.2測試的組織
13.2.1組織結構選擇因素
13.2.2結合實際選擇組織方案
13.2.3測試組織的獨立性
13.2.4測試人員
13.3測試過程監(jiān)控
13.3.1測試初始期
13.3.2測試實施期
13.3.3測試結束期
13.4測試文檔
13.5軟件配置管理
13.5.1配置管理簡介
13.5.2測試配置管理
13.5.3軟件配置管理工具
13.6測試與風險
13.6.1項目風險
13.6.2軟件測試風險
13.7缺陷管理
13.7.1軟件缺陷的屬性描述
13.7.2軟件缺陷管理流程
13.7.3軟件缺陷度量
13.7.4缺陷跟蹤管理系統(tǒng)
練習
第14章軟件測試工具
14.1測試工具的類型
14.1.1測試管理工具
14.1.2靜態(tài)測試工具
14.1.3功能測試執(zhí)行工具
14.1.4覆蓋工具(結構性測試工具)
14.1.5性能和壓力測試工具
14.1.6其他工具
14.1.7測試工具的選擇
14.2測試自動化與手工測試
14.2.1手動測試的不足
14.2.2自動測試的優(yōu)點
14.2.3自動測試的局限性
練習
附錄A軟件測試的數(shù)學理論
附錄B軟件測試中英文術語對照表
附錄C部分正交實驗表
參考文獻