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