本書是基于校級精品資源共享課程項目編寫的教材,是作者從事十余年軟件測試課程教學的經驗積累。本書以服務高校軟件測試課程教學為目的,盡量在知識的系統(tǒng)性和學習的連貫性上作出平衡,以案例為中心,遵循夠用為度的課堂原則,采用提出問題分析問題解決問題的思路,很多時候采用了手把手教學的方式,目的是幫助初學者入門,提高學習者學習興趣,終具備軟件測試工程師所需的職業(yè)技能。全書共分9章,主要介紹軟件測試的理論知識、方法、技術和常用工具,包括:軟件測試概論、軟件測試基本概念、軟件測試與軟件質量、黑盒子測試、軟件測試資源管理、白盒子測試、性能測試、軟件測試相關文檔編寫,后一章是配套的課程綜合實訓。本書適合于高職高專院校的軟件技術、軟件測試專業(yè)及計算機相關專業(yè)使用,也可作為軟件測試課程的教材,還可作為學習軟件測試入門和提高的培訓教材,也適合從事軟件開發(fā)和軟件測試的專業(yè)技術及管理人員參閱使用。
近年來,隨著軟件行業(yè)的飛速發(fā)展,軟件的規(guī)模越來越大,人們對軟件質量越來越重視,軟件測試工程師的重要性也日益突出,軟件測試工程師的需求和待遇都達到了歷史新高。
然而,要成為一名合格的軟件測試人才,需要經過系統(tǒng)化的、嚴格的專業(yè)培養(yǎng),要在培養(yǎng)過程中強調實踐動手能力和工程應用能力。學習的過程中需要學習者親力親為,結合案例實際動手分析,在實踐中體會軟件測試的真諦。多年的教學實踐表明,如果沒有親身的測試體驗,就無法真正理解軟件測試的方法,就無法靈活應用軟件測試的技術。
目前,隨著高校軟件測試專業(yè)和軟件測試課程的開設,使得軟件測試的教學和專業(yè)人才培養(yǎng)都有了長足的進步。但是,在另一方面,現在很多軟件測試課程的教學普遍缺少教學案例的支撐,只講理論不講實際操作,講述操作的也不具體詳細,一筆帶過。歸根到底,其主要原因還是軟件測試這個行業(yè)不夠規(guī)范、成熟,有些高校教師本身在這方面沒有項目經驗,所以造成有些高校教師講授這門課程時沒有任何實際的例子可以操作,這無疑會在教學中造成很大的遺憾。本書盡力在知識的系統(tǒng)性和學習的連貫性上作出平衡,以案例為中心,遵循夠用為度的課堂原則,采用提出問題分析問題解決問題的思路,很多時候采用了手把手教學的方式,目的是幫助初學者入門,提高學習者學習興趣。
軟件測試課程的教學目標是通過對軟件測試基礎理論、方法和技能的學習,結合測試流程管理和自動化工具的使用,對軟件項目進行測試操作,使學生了解軟件測試完整的工作過程,能對完整的項目進行測試,從而實現與測試技能要求的無縫連接。
本書以軟件測試所需技能的學習路線為主線進行編寫。
第 1 章
軟件測試概論,主要的目的是讓初學者了解軟件測試的行業(yè)背景和歷史、理解導致軟件缺陷的原因和理解什么是軟件缺陷。建議安排6個學時進行教學。
第 2 章
軟件測試基本概念,介紹了什么是軟件測試、軟件測試的目的,介紹了測試用例是什么、怎樣設計測試用例,重點介紹了軟件測試的多維度分類,以此進行軟件測試名詞掃盲。建議安排4個學時進行教學。
第 3 章
軟件測試與軟件質量,介紹了軟件質量管理、軟件測試模型,以及軟件測試的總體工作流程、軟件開發(fā)與軟件測試各階段的聯(lián)系,重點給初學者灌輸軟件測試的基本理念8個基本原則。建議安排8個學時進行教學。
第 4 章
黑盒子測試,介紹了什么是黑盒子測試,重點介紹等價類劃分、邊界值分析、決策表分析等黑盒測試方法,并針對具體的案例來講解測試用例的設計。建議安排8個學時進行教學。
第 5 章
軟件測試資源管理,介紹了為什么要使用軟件測試資源管理工具,挑選了HP ALM作為示范,詳細地、手把手地呈現了使用ALM進行測試資源管理的整個流程。建議安排12個學時進行教學。
第 6 章
白盒子測試,介紹了什么是白盒子測試、什么是程序控制流圖,介紹了數據流分析測試方法,以此做引子,重點介紹了邏輯覆蓋測試方法和路徑分析測試方法,并針對具體的案例來講解測試用例的設計。建議安排8個學時進行教學。
第 7 章
性能測試,介紹了什么是性能測試,為什么要使用自動化測試工具來實施性能測試,挑選了HP LoadRunner作為示范,以HP WebTours(航空訂票網站)作為案例,詳細地、手把手地分解了使用LoadRunner進行性能測試的整個流程。建議安排10個學時進行教學。
第 8 章
軟件測試相關文檔編寫,介紹了測試計劃、評審報告和測試報告的編寫規(guī)范,并給出了具體的文檔模板,供學習者參考使用。建議安排6個學時進行教學。
第 9 章
課程綜合實訓,是軟件測試課程學習完畢后安排的綜合實訓,內容來源于編者指導學生進行的一個綜合實訓項目,被測程序是具有普遍性、代表性的電子商務網站。隨書附帶有程序源代碼,部署后可以直接開展測試。這一章強調學習者對項目參與過程的親歷和體驗,培養(yǎng)學習者解決問題的能力、探究精神和綜合實踐能力。建議安排一到兩周時間讓學生進行綜合訓練。
隨書給出了高校教學過程中所需用到的各種文檔,例如:課程標準、授課計劃和職業(yè)能力分析表等等,可以從http://www.tdpress.com/51eds/下載。同時,作為隨書電子資料,給出了講課所需的課件(PPT)、教學視頻、案例和被測程序源代碼等。
本書由陳建潮編著,在編寫過程中,編者得到了軟件教研室各位同事的大力支持和幫助,得到了所指導的學生們的積極配合,其中綜合實訓程序選取的是馬本茂、董有沛小組的作品,測試文檔選取的是韋麗芳、趙偉維小組的作品。在此謹向各位同事和同學表示衷心的感謝。
在本書的編寫過程中,參考和引用了許多專家、學者的著作和論文,可能在文中未能一一注明,在此謹向相關參考文獻的作者表示衷心的感謝。
限于編者的水平,本書難免存在不足和不當之處,懇請讀者批評指正。聯(lián)系方式:vic_c@126.com。
編 者
2018年4月
第1章 軟件測試概論 1
1.1 軟件的概念 1
1.2 軟件分類簡述 1
1.3 軟件測試的歷史 3
1.4 軟件缺陷與故障案例 5
1.5 導致軟件缺陷的原因 7
1.6 軟件缺陷到底是什么 8
小結 9
思考與練習 10
第2章 軟件測試基本概念 11
2.1 什么是軟件測試 11
2.2 軟件測試的目的 12
2.3 什么是測試用例 13
2.4 軟件測試多維度分類 14
2.4.1
按是否需要執(zhí)行被測軟件的角度劃分 14
2.4.2
按測試過程的各個階段劃分 14
2.4.3
按使用的測試方法劃分 15
2.4.4
按測試實施組織劃分 16
小結 18
思考與練習 18
第3章 軟件測試與軟件質量 20
3.1 軟件質量模型 20
3.2
QA與QC 22
3.3 狹義上的軟件測試過程 23
3.4 軟件測試過程模型介紹 24
3.4.1
V模型 24
3.4.2
W模型 25
3.4.3
H模型 26
3.4.4
測試過程模型的選擇 26
3.5 軟件測試總體工作流程 27
3.5.1
需求測試階段 28
3.5.2
編寫測試計劃階段 28
3.5.3
設計測試用例階段 29
3.5.4
實施測試階段 29
3.5.5
測試總結/報告階段 29
3.5.6
測試歸檔階段 30
3.6 軟件測試基本原則 30
3.6.1
完全測試軟件是不可能的 30
3.6.2
軟件測試是有風險的行為 31
3.6.3
測試無法顯示潛在的軟件缺陷 32
3.6.4
軟件缺陷的群集現象 32
3.6.5
軟件缺陷的免疫現象 33
3.6.6
隨著時間的推移,軟件缺陷的修復費用將呈
幾何級數增長 33
3.6.7 零缺陷是不切實際的行為 34
3.6.8
盡量避免測試的隨意性 34
小結 34
思考與練習 35
第4章 黑盒子測試 37
4.1 黑盒子測試方法概述 37
4.2 典型案例分析 38
4.3 等價類劃分法 39
4.3.1
劃分等價類 39
4.3.2
等價類劃分原則 39
4.3.3
設計測試用例 40
4.3.4
針對三角形問題使用等價類劃分方法設計測試用例 41
4.3.5
針對雇傭金問題使用等價類劃分方法設計測試用例 44
4.4 邊界值分析 45
4.4.1
使用邊界值分析方法進行健壯性測試 46
4.4.2
邊界值分析簡介 47
4.4.3
基于邊界值分析方法
設計測試用例的原則 48
4.4.4
針對三角形問題使用邊界值分析方法設計測試用例 49
4.4.5
針對雇傭金問題使用邊界值分析方法設計測試用例 50
4.5 決策表分析 52
4.5.1
決策表的組成部分 52
4.5.2
建立決策表設計測試用例 53
4.5.3
以經典的閱讀指南為例構建決策表 53
4.5.4
決策表的簡化 53
4.5.5
針對三角形問題使用決策表分析方法設計測試用例 54
小結 55
思考與練習 56
第5章 軟件測試資源管理 58
5.1
ALM/QC/TD:經典的軟件測試管理工具 59
5.2
ALM入門 60
5.3
ALM用戶使用指南 61
5.3.1
連接ALM服務器 61
5.3.2
登錄項目 61
5.3.3
ALM桌面客戶端工作界面 63
5.4 案例引入 64
5.5 在ALM管理端上創(chuàng)建項目 65
5.6 在ALM用戶端登錄項目 69
5.7 使用ALM創(chuàng)建需求 71
5.8 使用ALM創(chuàng)建測試(測試用例)
77
5.9 使用ALM創(chuàng)建測試集 92
5.10
使用ALM進行缺陷管理 98
小結 106
思考與練習 107
第6章 白盒子測試 108
6.1 程序控制流圖 109
6.2 數據流分析 110
6.3 邏輯覆蓋 111
6.3.1
語句覆蓋 112
6.3.2
判定覆蓋 112
6.3.3
條件覆蓋 113
6.3.4
判定?條件覆蓋 114
6.3.5
條件組合覆蓋 114
6.3.6
路徑覆蓋 115
6.4 路徑分析 117
6.4.1
基本路徑測試 117
6.4.2
循環(huán)測試 119
小結 121
思考與練習 122
第7章 性能測試 124
7.1 性能測試概述 124
7.2 實施性能測試的過程 125
7.3 性能分析名詞解釋 126
7.4
LoadRunner簡介 127
7.4.1
批量創(chuàng)建虛擬用戶
模擬真實負載 127
7.4.2
性能測試自動化 128
7.4.3
性能監(jiān)控 128
7.4.4
直觀的結果分析 129
7.5 使用LoadRunner進行負載測試的流程 129
7.5.1
案例介紹航空訂票網站 129
7.5.2
規(guī)劃負載測試 133
7.5.3
創(chuàng)建Vuser腳本 133
7.5.4
增強功能:添加事務 145
7.5.5
增強功能:參數化輸入 149
7.5.6
增強功能:內容檢查 155
7.5.7
準備加載:迭代和并發(fā)用戶 158
7.5.8
定義場景 162
7.5.9
運行場景 164
7.5.10
分析結果 167
小結 171
思考與練習 172
第8章 軟件測試相關文檔編寫
173
8.1 測試計劃 173
8.2 評審報告 188
8.3 測試報告 191
小結 198
思考與練習 198
第9章 課程綜合實訓 199
9.1 實訓指導書 199
9.2 案例引入 201
9.3 需求規(guī)格說明書 202
9.4 測試計劃編寫(節(jié)選)
225
9.5 測試用例(功能測試)設計(節(jié)選) 233
9.6 被測程序部署說明 250
9.7 測試報告編寫(節(jié)選) 259
參考文獻 268