本書以實驗案例為主線介紹軟件測試的方法、技術(shù)和工具,其內(nèi)容包括22個實驗,覆蓋基本黑盒和白盒測試方法、開發(fā)者測試、自動化功能測試、性能測試、測試與軟件項目管理、測試工具研制等,由淺入深,由實驗案例引發(fā)解題思路的探討,進而展開測試技術(shù)的介紹,最后再將測試技術(shù)應用到案例。 本書中的實驗項目既可作為實驗任務開展,也可作為理論教學的輔助案例。實驗從工程教育專業(yè)認證的角度出發(fā)設定知識和能力培養(yǎng)目標;精心設計實驗步驟,引導思考原理、解決問題并分析不足;設有實驗評價方法,幫助了解實驗要點,檢驗完成成效。 本書可作為高等院校計算機、軟件工程專業(yè)高年級本科生、研究生的實驗教材,也可作為從事軟件測試實踐應用的廣大科技工作者的參考用書。
l 提供豐富的軟件測試實驗項目,包含大量真實測試問題,可作為實驗項目開展,也可作為理論教學的案例輔助。
l 涵蓋測試工具研制等面向研究生的高級實驗。
l 涵蓋服務與微服務測試、移動應用測試、云測試等新測試技術(shù)。
l 按工程認證要求梳理實驗目標、內(nèi)容和評價依據(jù),有效支撐實踐能力培養(yǎng)。
l 先給出實驗問題,再結(jié)合理論分析思路,給出解決方案,支持問題導向的教學。
l 提供案例、代碼等參考實驗資源。
軟件測試是一種實踐性極強的軟件工程方法,案例與實驗教學是測試能力培養(yǎng)的關鍵。本書面向本科及研究生軟件測試實踐教學,包含22個精心設計的軟件測試實驗問題及其解決方案。實驗內(nèi)容涵蓋基本測試方法應用、依托工具實施常見測試、測試管理、測試工具研制等方面;同時,引入服務與微服務測試、移動應用測試、云測試等前沿性內(nèi)容。這些實驗旨在加深學生對軟件測試基本理論和方法的理解,將概念、方法、技術(shù)轉(zhuǎn)換為測試技能,提升解決軟件工程領域復雜工程問題的能力。
書中實驗體系包括由淺入深的六大主要部分。第一部分為基本測試方法,包括一組黑盒和白盒軟件測試實驗項目,旨在加深學生對軟件測試基本理論和方法的理解。這一部分的實驗突出基本原理和方法,可不借助工具開展,主要訓練測試分析、設計能力,構(gòu)建面向軟件質(zhì)量問題的測試思維。
第二部分為開發(fā)者測試,旨在培養(yǎng)開發(fā)者在不同環(huán)境下開展單元測試、集成測試的能力,包括面向相對簡單的函數(shù)和類實施單元測試、集成測試,以及面向更復雜、綜合性更強的服務與微服務實施單元測試。
第三部分為自動化功能測試,旨在訓練編寫測試腳本實施自動化測試的能力,該項能力也是軟件研發(fā)單位測試開發(fā)崗位經(jīng)常需求的能力。
第四部分為性能測試,包括開發(fā)者視角的性能剖析以及系統(tǒng)測試者視角的并發(fā)性能測試。當前軟件開發(fā)更多地向云服務遷移,而性能是服務質(zhì)量的核心要素之一,性能測試也是云服務研發(fā)者時常面對的測試主題。
第五部分為測試與軟件項目管理。測試是軟件研制流程的一個必要環(huán)節(jié),如何有效銜接開發(fā)和測試,是測試者乃至軟件開發(fā)者都需要了解的問題。DevOps理念的流行、測試與開發(fā)融合的趨勢也要求軟件研發(fā)者了解測試開發(fā)相關管理流程與方法。
第六部分為測試工具研制,包括一組綜合性的設計開發(fā)實驗,要求學生研發(fā)簡單的測試工具。通過該部分實驗,可培養(yǎng)架構(gòu)自動化測試系統(tǒng)的能力,訓練學生在一些開源工具的基礎上,綜合應用數(shù)學、編譯原理等知識,設計簡單測試支撐工具。該部分可用于培養(yǎng)研究型的軟件測試人才,也可作為一些軟件工程方向研究生的實驗教材。
本書每個實驗設有明確的知識和能力培養(yǎng)目標,對應工程教育專業(yè)認證標準;安排循序漸進的實驗步驟,引導學生思考測試原理、綜合實驗數(shù)據(jù)獲得實驗結(jié)論,分析比較方法與工具的優(yōu)勢與不足;列出了實驗評價要素,既幫助教師評價學習效果,也幫助學生了解問題難點、要點。
實驗附帶對實施方法和過程的分析與思考,呼應理論課程的原理介紹。配套有參考方案以及相應實驗數(shù)據(jù)與代碼(實驗附件可在清華大學出版社官網(wǎng)下載),所有實驗方案均經(jīng)過詳細驗證。教學過程可將本書中的實驗作為案例來介紹軟件測試方法。若要求學生完成本書的實驗,大部分項目可要求學生選擇不同的實驗對象進行實驗,或?qū)嶒炓筮M行適當?shù)男薷,以考查學生針對新案例解決軟件測試問題的能力。全部實驗難以在較短課時內(nèi)完成,可考慮選做實驗、組合不同實驗的方式來控制實驗內(nèi)容。
需要說明的是,軟件測試是一種工程方法,許多問題并沒有標準答案,本書中的實驗實施方法僅為讀者提供參考,不代表對于實驗問題最恰當?shù)慕鉀Q方案。如有不當,請批評指正。
本書編寫得到了學生吳晗、林誠昊、王鵬宇、馬熒煒、王子鳴、何明圣、朱建才、王巖等的大力支持,感謝他們不斷嘗試實驗方案,并提供大量原始素材。感謝南京航空航天大學軟件工程專業(yè)歷屆學生提供的教學反饋,也感謝業(yè)界提供的大量優(yōu)秀測試工具。
錢巨2023年2月
第一部分基本測試方法
實驗1基于用例場景的測試需求分析3問題分析4
實驗方案5
實驗2等價類與邊界值測試10
問題分析11
實驗方案12
附件資源16
實驗3組合測試17
問題分析18
實驗方案20
小結(jié)25
附件資源26
參考文獻26
實驗4綜合黑盒測試27
問題分析28
實驗方案29
附件資源36
實驗5面向邏輯覆蓋的白盒測試設計37
問題分析38
實驗方案40
附件資源45
參考文獻45軟件測試實驗: 從應用實踐到工具研制目錄第二部分開發(fā)者測試
實驗6單元測試49問題分析50
實驗方案51
附件資源60
參考文獻60
實驗7集成測試61
問題分析62
實驗方案63
附件資源70
實驗8服務與微服務單元測試71
問題分析72
實驗方案74
附件資源87
參考文獻87
第三部分自動化功能測試
實驗9桌面應用功能測試91問題分析92
實驗方案93
附件資源103
實驗10移動應用功能測試104
問題分析105
實驗方案106
附件資源116
參考文獻116
實驗11Web應用功能測試117
問題分析118
實驗方案119
附件資源126
第四部分性 能 測 試
實驗12本地應用性能剖析129問題分析130
實驗方案132
附件資源144
實驗13Web應用并發(fā)性能測試145
問題分析146
實驗方案148
附件資源166
實驗14基于云的并發(fā)性能測試167
問題分析168
實驗方案169
第五部分測試與軟件項目管理
實驗15軟件需求與測試管理185問題分析186
實驗方案189
參考文獻206
實驗16代碼變更與評審207
問題分析208
實驗方案209
附件資源222
參考文獻222
實驗17持續(xù)集成與測試223
問題分析224
實驗方案225
附件資源241
實驗18問題跟蹤管理242
問題分析243
實驗方案244
附件資源254
第六部分測試工具研制
實驗19關鍵字驅(qū)動測試框架設計257問題分析258
實驗方案260
附件資源266
參考文獻266
實驗20測試自動生成工具開發(fā)267
問題分析268
實驗方案270
附件資源280
參考文獻280
實驗21靜態(tài)缺陷檢測工具開發(fā)281
問題分析282
實驗方案283
附件資源291
參考文獻291
實驗22運行時監(jiān)控與覆蓋分析工具開發(fā)292
問題分析293
實驗方案294
附件資源302
參考文獻302
附錄A303