本書基于軟件測試過程模型,構(gòu)建軟件測試價(jià)值模型、能力模型及基于能力戰(zhàn)略的軟件測試策略框架,討論軟件測試終止、測試預(yù)言、測試生成問題;趫D結(jié)構(gòu)、圖元素及軟件失效行為,介紹邏輯驅(qū)動、數(shù)據(jù)驅(qū)動、剖面驅(qū)動的基礎(chǔ)理論、基礎(chǔ)技術(shù)及實(shí)踐者方法。基于技術(shù)創(chuàng)新及軟件測試發(fā)展需求,構(gòu)建面向服務(wù)、大數(shù)據(jù)及應(yīng)用、軟硬件一體化測試的技術(shù)框架,討論基于服務(wù)模型的形式化描述及求解、服務(wù)實(shí)體及基于時(shí)間波動的服務(wù)實(shí)時(shí)性測試、大數(shù)據(jù)算法及應(yīng)用性能測試、基于環(huán)境剖面及多域任務(wù)場景綜合的一體化測試技術(shù)的最新研究成果及實(shí)踐者方法。基于能力戰(zhàn)略的軟件測試策略,構(gòu)建基于質(zhì)量、效率驅(qū)動的軟件測試框架,結(jié)合實(shí)際案例,討論文檔類、代碼類、數(shù)據(jù)類、功能類、性能類、接口類和專項(xiàng)類軟件測試的技術(shù)要求、測試策略、環(huán)境構(gòu)建及實(shí)踐者方法。 本書可供軟件測試人員、軟件質(zhì)量管理人員、軟件工程管理人員、軟件開發(fā)人員及軟件工程專業(yè)本科高年級學(xué)生、研究生使用和參考。
孫志安,中國船舶工業(yè)軟件測試中心研究員,裝備軟件工程標(biāo)準(zhǔn)化技術(shù)委員會委員,主要從事軟件測試、軟件可靠性工程研究。李源,某項(xiàng)目管理中心信息系統(tǒng)室副主任,主要從事指揮信息系統(tǒng)、軟件管理控制研究。韓啟龍,哈爾濱工程大學(xué)教授,博士生導(dǎo)師,國家重點(diǎn)研發(fā)計(jì)劃首席科學(xué)家,CCF杰出會員,主要從事大數(shù)據(jù)理論、智能軟件工程、數(shù)字孿生、數(shù)據(jù)驅(qū)動的AI系統(tǒng)研究。豆康康,中國船舶工業(yè)軟件測試中心專業(yè)技術(shù)專家,主要從事軟件測試技術(shù)研究。費(fèi)琪,中國船舶工業(yè)軟件測試中心技術(shù)負(fù)責(zé)人,主要從事軟件測試、軟件可靠性研究。
第1章 軟件測試進(jìn)展 1
1.1 軟件賦能、賦值與賦智 1
1.2 軟件質(zhì)量現(xiàn)狀 2
1.3 軟件測試發(fā)展歷程 5
1.4 軟件測試發(fā)展展望 7
1.4.1 軟件測試面臨的挑戰(zhàn) 7
1.4.2 軟件測試發(fā)展趨勢 12
第2章 軟件測試基礎(chǔ) 18
2.1 軟件質(zhì)量 19
2.1.1 軟件質(zhì)量架構(gòu) 19
2.1.2 軟件質(zhì)量模型 20
2.1.3 質(zhì)量模型的GDQA應(yīng)用框架 22
2.2 軟件測試 23
2.2.1 測試的充分性 23
2.2.2 測試的追溯性 23
2.2.3 測試的時(shí)機(jī) 23
2.2.4 測試的針對性 24
2.2.5 測試與調(diào)試 24
2.3 軟件可測試性 25
2.3.1 可測試性生命周期過程模型 25
2.3.2 可測試性特征 26
2.3.3 不同級別的可測試性問題 28
2.4 軟件可靠性 30
2.5 軟件錯誤、缺陷、故障及失效 31
2.5.1 軟件錯誤、缺陷及故障 31
2.5.2 軟件失效 38
2.6 時(shí)間問題 40
2.6.1 基于時(shí)間的可靠性度量 40
2.6.2 Musa執(zhí)行時(shí)間 41
2.6.3 時(shí)間問題再思考 41
2.7 運(yùn)行剖面 42
第3章 軟件測試模型 43
3.1 軟件測試過程模型 43
3.1.1 軟件測試過程 43
3.1.2 軟件測試過程活動 44
3.1.3 基于流程的測試過程模型 46
3.1.4 基于RUP的測試過程模型 47
3.2 軟件測試成熟度模型 50
3.2.1 模型框架 50
3.2.2 能力成熟度等級 50
3.2.3 測試能力評價(jià)體系 52
3.2.4 評價(jià)模型 57
3.3 測試過程模型選擇 58
第4章 軟件測試策略 59
4.1 軟件測試價(jià)值模型及測試體系 59
4.1.1 軟件測試價(jià)值模型 59
4.1.2 軟件測試目標(biāo)體系 60
4.1.3 軟件測試體系 61
4.2 基于風(fēng)險(xiǎn)、能力的測試策略 63
4.2.1 基于風(fēng)險(xiǎn)的測試策略 63
4.2.2 基于能力的測試策略 64
4.3 基于架構(gòu)的測試策略 65
4.3.1 分層架構(gòu) 65
4.3.2 事件驅(qū)動架構(gòu) 67
4.3.3 微服務(wù)架構(gòu) 67
4.3.4 云架構(gòu) 69
4.4 基于對象及環(huán)境的測試策略 70
4.4.1 測試對象模型 70
4.4.2 測試環(huán)境分析 71
4.5 基于流程及組織的測試策略 72
4.5.1 測試策略螺旋結(jié)構(gòu)模型 72
4.5.2 測試流程 73
4.5.3 測試組織 73
4.6 軟件測試思維 74
4.6.1 系統(tǒng)思維 74
4.6.2 分析思維 76
4.6.3 結(jié)構(gòu)化思維 77
4.7 不確定性及控制 78
4.8 測試策劃的實(shí)踐者方法 80
第5章 邏輯驅(qū)動測試 82
5.1 靜態(tài)分析 82
5.1.1 靜態(tài)分析技術(shù)架構(gòu) 83
5.1.2 技術(shù)評審 83
5.1.3 代碼走查 84
5.1.4 代碼審查 85
5.1.5 動態(tài)測試 89
5.1.6 靜態(tài)分析方法比較 90
5.2 邏輯覆蓋 91
5.2.1 語句覆蓋 91
5.2.2 判定覆蓋 93
5.2.3 條件覆蓋 93
5.2.4 判定?條件覆蓋 93
5.2.5 條件組合覆蓋 94
5.2.6 修正條件判定覆蓋 94
5.3 路徑覆蓋 98
5.3.1 圖結(jié)構(gòu) 99
5.3.2 控制流 99
5.3.3 獨(dú)立路徑 100
5.3.4 圖形矩陣 103
5.3.5 基本路徑覆蓋用例設(shè)計(jì) 104
5.4 循環(huán)結(jié)構(gòu)覆蓋 105
5.4.1 循環(huán)結(jié)構(gòu) 105
5.4.2 循環(huán)結(jié)構(gòu)測試 106
5.4.3 Z路徑覆蓋下的循環(huán)測試 108
5.4.4 最少測試用例數(shù)估算 108
5.5 符號執(zhí)行 109
5.5.1 符號執(zhí)行原理 110
5.5.2 符號執(zhí)行技術(shù) 111
5.5.3 符號表達(dá)式簡化 116
5.5.4 約束條件求解 117
5.6 流敏感指針分析 117
5.6.1 流敏感分析背景 118
5.6.2 靜態(tài)單賦值問題 118
5.6.3 LLVM的內(nèi)部表示 119
5.6.4 稀疏流敏感指針分析 119
5.6.5 訪問等效性 120
5.6.6 算法 121
5.7 面向?qū)ο筌浖倪壿嬺?qū)動測試 122
5.7.1 類在UML中的描述 122
5.7.2 錯誤表征 123
5.7.3 類測試設(shè)計(jì) 123
5.7.4 類測試數(shù)據(jù) 125
5.7.5 類測試延伸 126
5.7.6 測試流程及方法 129
5.8 邏輯驅(qū)動測試的邊界值 132
5.8.1 數(shù)據(jù)類型的邊界值 132
5.8.2 數(shù)組的邊界值 132
5.8.3 分支判斷語句的邊界值 133
5.9 同源檢測 134
5.9.1 代碼克隆類型 134
5.9.2 同源檢測技術(shù)原理 135
5.9.3 代碼克隆檢測原理及流程 136
5.9.4 代碼大數(shù)據(jù)庫構(gòu)建 137
5.9.5 分析元模型 139
5.9.6 基于代碼大數(shù)據(jù)庫的克隆檢測 139
5.10 靜態(tài)分析融合 142
5.10.1 靜態(tài)分析融合框架 142
5.10.2 基于語義的跨語言文本聚類 144
5.10.3 基于語義的檢測結(jié)果與規(guī)則集
聚類 146
第6章 數(shù)據(jù)驅(qū)動測試 149
6.1 軟件可用性問題 149
6.2 等價(jià)類劃分 150
6.2.1 測試輸入問題 150
6.2.2 等價(jià)類劃分規(guī)則 152
6.2.3 等價(jià)類劃分流程 152
6.2.4 等價(jià)類劃分方法 153
6.2.5 基于等價(jià)類劃分的加法器測試 154
6.3 邊界值分析 156
6.3.1 基于不同視角的邊界 156
6.3.2 單缺陷假設(shè)及多缺陷假設(shè) 158
6.3.3 汽車轉(zhuǎn)速控制邊界值分析 160
6.4 決策表驅(qū)動 161
6.4.1 決策表表示 161
6.4.2 決策表結(jié)構(gòu) 162
6.4.3 決策表建立步驟 162
6.4.4 基于決策表驅(qū)動的三角形類型
判斷測試 163
6.5 因果圖分析 164
6.5.1 因果圖符號及關(guān)系 164
6.5.2 基于因果圖分析的測試設(shè)計(jì)流程 165
6.5.3 基于因果圖分析的自動售貨軟件
測試設(shè)計(jì) 165
6.6 功能圖分析 167
6.6.1 功能圖模型 167
6.6.2 基于功能圖分析的測試設(shè)計(jì)流程 167
6.6.3 基于功能圖分析的播放器測試設(shè)計(jì) 167
6.7 場景驅(qū)動 169
6.7.1 基于事件觸發(fā)的場景 169
6.7.2 基于場景驅(qū)動的測試設(shè)計(jì)流程 169
6.7.3 基于場景驅(qū)動的在線購物系統(tǒng)
測試設(shè)計(jì) 170
6.8 正交試驗(yàn)設(shè)計(jì) 171
6.8.1 正交試驗(yàn)設(shè)計(jì)原理 171
6.8.2 正交試驗(yàn)設(shè)計(jì)流程 175
6.8.3 基于正交試驗(yàn)的某網(wǎng)絡(luò)系統(tǒng)
登錄測試 177
6.8.4 基于正交試驗(yàn)的某超短波跳頻
分組無線網(wǎng)傳輸時(shí)延測試 179
6.9 均勻試驗(yàn)設(shè)計(jì) 180
6.9.1 均勻試驗(yàn)設(shè)計(jì)原理 180
6.9.2 均勻試驗(yàn)設(shè)計(jì)的特點(diǎn) 183
6.9.3 均勻試驗(yàn)設(shè)計(jì)與正交試驗(yàn)設(shè)計(jì)比較 184
6.9.4 基于UDE的信息錄入與信息查詢
測試 185
6.10 組合測試 187
6.10.1 輸入及組合覆蓋問題 187
6.10.2 組合測試分類及覆蓋類型 190
6.10.3 成對組合覆蓋 191
6.10.4 可變力度組合模型 204
6.10.5 成對組合測試方法比較 206
6.11 被動測試 208
6.11.1 有限狀態(tài)機(jī)測試 209
6.11.2 EFSM測試 213
6.11.3 基于不變性的被動測試 219
第7章 面向服務(wù)軟件測試 221
7.1 面向服務(wù)架構(gòu) 221
7.1.1 架構(gòu) 221
7.1.2 服務(wù) 223
7.1.3 環(huán)境 224
7.1.4 實(shí)現(xiàn) 225
7.2 面向服務(wù)測試的主要問題和框架 227
7.2.1 面向服務(wù)測試的主要問題 227
7.2.2 面向服務(wù)測試框架 228
7.2.3 面向服務(wù)測試對象 229
7.3 服務(wù)模型的形式化描述及求解 230
7.3.1 服務(wù)模型的形式化描述 230
7.3.2 形式化樹模型 232
7.3.3 領(lǐng)域數(shù)據(jù)約束 234
7.3.4 領(lǐng)域數(shù)據(jù)語義描述 235
7.3.5 數(shù)據(jù)約束模型 236
7.4 服務(wù)實(shí)體測試 237
7.4.1 軟件行為建模 237
7.4.2 測試框架 238
7.4.3 靜態(tài)缺陷檢測 238
7.4.4 測試設(shè)計(jì)模型 249
7.4.5 測試數(shù)據(jù)生成 251
7.4.6 單個(gè)操作基本測試用例生成 257
7.5 有狀態(tài)服務(wù)實(shí)體測試 261
7.5.1 模型及定義 262
7.5.2 操作序列測試路徑生成 269
7.5.3 服務(wù)操作序列測試 274
7.6 基于時(shí)間波動的服務(wù)實(shí)時(shí)性測試 278
7.6.1 基于時(shí)間波動的服務(wù)實(shí)時(shí)性
測試框架 278
7.6.2 基于并發(fā)機(jī)制的單個(gè)服務(wù)訪問
頻率預(yù)測 280
7.6.3 服務(wù)實(shí)體訪問場景構(gòu)建 282
7.6.4 服務(wù)響應(yīng)時(shí)間波動分析 283
7.6.5 服務(wù)實(shí)時(shí)性測試 285
7.6.6 性能測試用例生成與執(zhí)行 285
第8章 剖面驅(qū)動測試 289
8.1 軟件可靠性測試的基本問題 290
8.1.1 基于運(yùn)行周期的軟件可靠性風(fēng)險(xiǎn) 290
8.1.2 與傳統(tǒng)軟件測試的差異 291
8.1.3 軟件可靠性測試的必備條件 293
8.1.4 軟件可靠性測試的空間覆蓋 293
8.1.5 軟件可靠性測試的不確定性 293
8.2 軟件可靠性測試策略 295
8.2.1 基于風(fēng)險(xiǎn)的可靠性測試方案 295
8.2.2 一種理想化情況 295
8.2.3 完全隨機(jī)的測試策略 296
8.2.4 混合測試策略 296
8.2.5 非均勻測試 297
8.2.6 最小測試集確定 297
8.3 軟件可靠性建模 298
8.3.1 軟件可靠性建模的基本問題 299
8.3.2 隨機(jī)過程類模型 302
8.3.3 非隨機(jī)過程類模型 310
8.3.4 基于構(gòu)件的軟件可靠性模型 317
8.3.5 模型評價(jià)、選擇及合并 320
8.4 軟件可靠性度量 323
8.4.1 度量模型視圖 324
8.4.2 常用可靠性度量 325
8.4.3 復(fù)雜性度量 328
8.5 軟件可靠性增長測試 334
8.5.1 軟件可靠性增長預(yù)計(jì) 334
8.5.2 基于FTA的可靠性增長測試 335
8.5.3 充分性準(zhǔn)則 337
8.6 軟件可靠性驗(yàn)證測試 337
8.6.1 無失效執(zhí)行時(shí)間驗(yàn)證測試 337
8.6.2 定時(shí)可靠性驗(yàn)證測試 338
8.6.3 序貫驗(yàn)證測試 339
8.6.4 驗(yàn)證測試方案 341
8.6.5 充分性準(zhǔn)則 341
8.7 基于蒙特卡羅方法的軟件可靠性測試 342
8.7.1 蒙特卡羅方法 342
8.7.2 測試過程模型 343
8.7.3 基于蒙特卡羅方法的測試應(yīng)用 343
第9章 大數(shù)據(jù)及應(yīng)用測試 348
9.1 大數(shù)據(jù)架構(gòu) 348
9.1.1 大數(shù)據(jù)架構(gòu)模型 349
9.1.2 大數(shù)據(jù)處理 350
9.2 大數(shù)據(jù)及應(yīng)用測試體系 355
9.2.1 大數(shù)據(jù)質(zhì)量 355
9.2.2 大數(shù)據(jù)及應(yīng)用測試的基本問題 357
9.2.3 基于大數(shù)據(jù)應(yīng)用架構(gòu)的測試體系 358
9.3 大數(shù)據(jù)及算法測試 359
9.3.1 基準(zhǔn)測試 359
9.3.2 聚類分析測試 360
9.3.3 分類算法測試 367
9.3.4 推薦算法測試 373
9.4 大數(shù)據(jù)應(yīng)用性能測試 379
9.4.1 影響大數(shù)據(jù)應(yīng)用性能的因素 380
9.4.2 大數(shù)據(jù)應(yīng)用性能指標(biāo)及監(jiān)控 380
9.4.3 測試數(shù)據(jù) 381
9.4.4 負(fù)載模型及測試 383
9.5 大數(shù)據(jù)應(yīng)用安全性測試 385
9.5.1 大數(shù)據(jù)應(yīng)用安全要素 385
9.5.2 架構(gòu)安全性測試 387
9.5.3 數(shù)據(jù)安全性測試 392
9.5.4 應(yīng)用安全等級保護(hù)測試 398
第10章 軟硬件一體化測試 402
10.1 一體化測試框架 402
10.1.1 基于MBSE的一體化測試 402
10.1.2 基于能力的一體化測試 403
10.1.3 多域任務(wù)場景下的一體化測試 405
10.2 一體化測試剖面構(gòu)造 408
10.2.1 壽命剖面 408
10.2.2 任務(wù)剖面 408
10.2.3 環(huán)境剖面設(shè)計(jì) 409
10.2.4 面向任務(wù)的一體化測試剖面設(shè)計(jì) 410
10.2.5 一體化測試剖面設(shè)計(jì) 413
10.3 基于實(shí)測應(yīng)力的綜合環(huán)境應(yīng)力剖面生成 414
10.3.1 應(yīng)力測量 414
10.3.2 振動應(yīng)力分析與歸納處理 415
10.3.3 溫度應(yīng)力分析與歸納處理 419
10.3.4 基于實(shí)測應(yīng)力的綜合環(huán)境剖面
生成 420
10.3.5 基于實(shí)測應(yīng)力的顯控設(shè)備綜合
環(huán)境試驗(yàn)剖面生成 422
10.4 基于退化模型的一體化測試 424
10.4.1 在環(huán)系統(tǒng)失效機(jī)理 424
10.4.2 基于特征的功能性能退化模型 429
10.4.3 基于退化模型的系統(tǒng)可靠性評價(jià) 434
10.5 多域任務(wù)場景驅(qū)動的一體化測試 438
10.5.1 基于任務(wù)剖面的一體化測試用例
生成 438
10.5.2 測試用例加載 441
10.5.3 基于場景模式感知的測試用例
加載 445
10.5.4 測試用例執(zhí)行 445
第11章 質(zhì)量、效率驅(qū)動的測試實(shí)踐 448
11.1 測試過程治理 448
11.1.1 測試過程模型 449
11.1.2 測試過程控制 451
11.1.3 基于系統(tǒng)特征狀態(tài)的充分性度量 453
11.1.4 測試評價(jià)及改進(jìn) 454
11.2 測試范圍及測試類型 456
11.2.1 測試范圍 456
11.2.2 測試類型 458
11.3 文檔類測試 459
11.3.1 基于審查單的文檔審查 460
11.3.2 基于問題驅(qū)動的文檔審查 461
11.3.3 文檔審查問題 461
11.3.4 性能指標(biāo)描述審查 462
11.4 代碼類測試 462
11.4.1 代碼審查 462
11.4.2 代碼走查 473
11.4.3 靜態(tài)分析 474
11.4.4 邏輯測試 480
11.4.5 內(nèi)存使用缺陷測試 485
11.4.6 軟件成分分析 487
11.5 數(shù)據(jù)類測試 493
11.5.1 數(shù)據(jù)審查 493
11.5.2 數(shù)據(jù)處理測試 493
11.6 功能類測試 496
11.6.1 功能測試 497
11.6.2 邊界測試 500
11.6.3 安裝性測試 502
11.6.4 恢復(fù)性測試 503
11.7 性能類測試 505
11.7.1 性能測試 505
11.7.2 余量測試 510
11.7.3 容量測試 514
11.7.4 強(qiáng)度測試 517
11.8 接口類測試 520
11.8.1 接口測試 520
11.8.2 人機(jī)交互界面測試 526
11.9 專項(xiàng)類測試 531
11.9.1 安全性測試 531
11.9.2 互操作性測試 542
11.9.3 兼容性測試 544
參考文獻(xiàn) 547