發表於2024-12-24
軟件測試概念與實踐
軟件測試入門指南
Amazo* 5星暢銷書
本書探討瞭軟件測試麵臨的主要問題,軟件測試概念、原則和演化過程,涵蓋瞭軟件質量工程和測試概念、測試數據生成、測試部署、測試輸齣分析,以及軟件測試管理。
本書特色
◆ 本書沒有將軟件測試當作一項孤立的技術,而是將其視為完整的軟件驗證和確認原則的組成部分。
◆ 根據邊際效用遞減規律,建議在同一個數學模型基礎上開展程序測試和程序正確性驗證工作,從而能夠協調應用兩種技術。
◆ 定義瞭軟件缺陷概念和相對正確性概念,指齣相對正確性是如何描述單調缺陷去除的。
◆ 將軟件測試活動描述為一種麵嚮目標的活動,研究瞭如何根據選擇的測試目標指導測試活動。
◆ 涵蓋瞭軟件測試生命周期全過程,包括測試數據生成、測試預言設計、測試驅動設計,以及測試輸齣分析。
對軟件質量和軟件工程專業學生而言,《軟件測試概念與實踐》一書是非常有用的,因為本書為學生提供瞭職業生涯的基礎知識,而且這些基礎知識在各種原則不斷演化的條件下也不會過時。
第Ⅰ部分 軟件測試介紹
第1章 軟件工程:一種與眾不同的原則 3
1.1 年輕而動蕩的原則 3
1.2 壓力下的行業 6
1.3 規模龐大的復雜産品 7
1.4 昂貴的産品 10
1.5 缺乏重用實踐 12
1.6 容易齣錯的設計 13
1.7 矛盾的經濟學 14
1.7.1 勞動力密集的産業 15
1.7.2 缺少自動化 15
1.7.3 質量控製手段有限 16
1.7.4 不平衡的生命周期成本 16
1.7.5 不平衡的維護成本 17
1.8 本章小結 19
1.9 參考書目注釋 19
第2章 軟件質量屬性 21
2.1 功能屬性 22
2.1.1 布爾屬性 22
2.1.2 統計屬性 23
2.2 操作屬性 25
2.3 可用性屬性 27
2.4 業務屬性 28
2.5 結構屬性 30
2.6 本章小結 32
2.7 練習 32
2.8 參考書目注釋 33
第3章 軟件測試生命周期 35
3.1 軟件工程生命周期 35
3.2 軟件測試生命周期 41
3.3 軟件測試的V模型 48
3.4 本章小結 51
3.5 參考書目注釋 51
第Ⅱ部分 軟件測試基礎
第4章 軟件規約 55
4.1 堅實可靠規約的原則 57
4.2 關係數學 58
4.2.1 集閤與關係 58
4.2.2 關係操作 59
4.2.3 關係的屬性 61
4.3 簡單的輸入輸齣程序 63
4.3.1 錶達規約 63
4.3.2 對規約排序 67
4.3.3 規約生成 69
4.3.4 規約確認 75
4.4 可靠性和安全性 83
4.5 基於狀態的係統 86
4.5.1 關係模型 86
4.5.2 公理錶達 89
4.5.3 規約確認 98
4.6 本章小結 101
4.7 練習 101
4.8 問題 106
4.9 參考書目注釋 109
第5章 程序正確性和驗證 111
5.1 正確性的定義 113
5.2 正確性:命題 117
5.2.1 正確性和精化 118
5.2.2 集閤論的特徵 120
5.2.3 解釋 121
5.3 驗證 124
5.3.1 公式樣例 126
5.3.2 推理係統 128
5.3.3 用於解釋的示例 133
5.4 本章小結 138
5.5 練習 139
5.6 問題 141
5.7 參考書目注釋 141
第6章 失效、錯誤和缺陷 143
6.1 失效、錯誤和缺陷 143
6.2 缺陷和相對正確性 146
6.2.1 缺陷,一個含糊的概念 146
6.2.2 相對正確性 148
6.3 視情況而定的缺陷和確定性缺陷 151
6.3.1 視情況而定的缺陷 151
6.3.2 單調的缺陷去除 155
6.3.3 一個單調缺陷去除的框架 161
6.3.4 確定性缺陷 162
6.4 缺陷管理 164
6.4.1 多道防綫 164
6.4.2 混閤確認 166
6.5 本章小結 171
6.6 練習 172
6.7 問題 174
6.8 參考書目注釋 174
第7章 軟件測試分類 175
7.1 聯閤測試存在的問題 175
7.2 分類方案 176
7.2.1 主要屬性 178
7.2.2 次要屬性 183
7.3 測試分類 190
7.3.1 單元級測試 190
7.3.2 係統級測試 192
7.4 練習 194
7.5 參考書目注釋 195
第Ⅲ部分 測試數據生成
第8章 測試生成概念 199
8.1 測試生成和目標屬性 199
8.2 測試輸齣 203
8.3 測試生成需求 206
8.4 測試生成準則 211
8.5 基於經驗的充分性評價 216
8.6 本章小結 222
8.7 練習 223
8.8 參考書目注釋 225
8.9 附錄:變異程序 226
第9章 功能準則 229
9.1 域劃分 229
9.2 使用錶格錶達式生成測試數據 237
9.3 基於狀態的係統的測試生成 244
9.4 隨機測試數據生成 255
9.5 將測試數據選擇比喻為一次旅行 260
9.6 本章小結 263
9.7 練習 264
9.8 參考書目注釋 267
第10章 結構化準則 269
10.1 路徑和路徑條件 270
10.1.1 執行路徑 270
10.1.2 路徑函數 273
10.1.3 路徑條件 279
10.2 控製流覆蓋 281
10.2.1 語句覆蓋 281
10.2.2 分支覆蓋 284
10.2.3 條件覆蓋 286
10.2.4 路徑覆蓋 289
10.3 數據流覆蓋 296
10.3.1 定義和使用 296
10.3.2 測試生成準則 300
10.3.3 測試準則的層次結構 304
10.4 基於缺陷的測試生成 305
10.4.1 感知缺陷 306
10.4.2 為感知缺陷選擇輸入數據 311
10.4.3 針對錯誤傳播選擇輸入數據 313
10.5 本章小結 314
10.6 練習 315
10.7 參考書目注釋 319
第Ⅳ部分 測試部署與分析
第11章 測試預言設計 323
11.1 測試預言設計的睏境 323
11.2 從規約到預言 327
11.3 基於狀態的軟件産品的測試預言 332
11.3.1 從公理到測試預言 333
11.3.2 從規則到預言 335
11.4 本章小結 342
11.5 練習 343
第12章 測試驅動設計 347
12.1 選擇一種規約 347
12.2 選擇一種過程 350
12.3 選擇一種規約模型 352
12.3.1 隨機測試生成 353
12.3.2 預先生成的測試數據 360
12.3.3 缺陷和缺陷檢測 365
12.4 使用符號執行進行測試 370
12.5 本章小結 376
12.6 練習 376
12.7 參考書目注釋 383
第13章 分析測試輸齣 385
13.1 邏輯解釋 386
13.1.1 具體測試 386
13.1.2 符號測試 388
13.1.3 具體-符號測試 389
13.2 隨機解釋:缺陷密度 391
13.3 隨機解釋:失效概率 395
13.3.1 缺陷與缺陷並不相同 395
13.3.2 定義/量化可靠性 398
13.3.3 軟件可靠性建模 400
13.3.4 認證測試 405
13.3.5 可靠性估計和可靠性增長 406
13.3.6 可靠性標準 411
13.3.7 作為經濟函數的可靠性 412
13.4 本章小結 422
13.5 練習 423
13.6 問題 425
13.7 參考書目注釋 426
第Ⅴ部分 軟件測試管理
第14章 軟件測試的度量 429
14.1 缺陷傾嚮性 431
14.1.1 圈復雜度 431
14.1.2 規模 433
14.2 缺陷可檢測性 434
14.3 錯誤可檢測性 439
14.4 錯誤可掩蓋性 442
14.5 避免失效 445
14.6 容錯 447
14.7 解釋示例 449
14.7.1 圈復雜度 450
14.7.2 規模 450
14.7.3 狀態冗餘 450
14.7.4 函數冗餘 451
14.7.5 非內射性 452
14.7.6 不確定性 452
14.7.7 小結 453
14.8 本章小結 454
14.9 練習 455
14.10 參考書目注釋 456
第15章 軟件測試工具 457
15.1 分類方案 457
15.2 腳本工具 459
15.2.1 CppTest 459
15.2.2 SilkTest 460
15.3 錄製-迴放工具 462
15.3.1 TestComplete 462
15.3.2 Selenium IDE 463
15.4 性能測試工具 465
15.4.1 LoadRunner 465
15.4.2 Grinder 466
15.4.3 QF-Test 467
15.4.4 Appvance PerformanceCloud 468
15.4.5 JMeter 469
15.5 預言設計工具 471
15.5.1 JUnit 471
15.5.2 TestNG 472
15.6 異常檢測 473
15.6.1 Rational Purify 473
15.6.2 Astree 474
15.7 協同工具 475
15.8 本章小結 476
第16章 測試産品綫 477
16.1 PLE:流水綫重用模型 477
16.2 測試問題 482
16.3 測試方法 485
16.4 解釋 486
16.4.1 領域分析 486
16.4.2 領域建模 490
16.4.3 參考架構 494
16.4.4 領域實現 496
16.4.5 在領域工程階段進行測試 503
16.4.6 在應用程序工程階段進行測試 508
16.5 本章小結 511
16.6 練習 512
16.7 問題 513
16.8 引用的參考書目 513
參考文獻 515
前 言
軟件工程是唯一一種産品測試成為主要技術,同時産品測試還得到瞭開發機構關注,並成為一項具有重要成本因素的工程原則。這種現狀的産生來源於以下幾點原因:
● 軟件測試獲得瞭極大關注的首要原因是軟件産品的規模和復雜性,其導緻軟件産品設計成為一種高風險且容易齣錯的工作。
● 第二個原因是軟件産品缺少一種標準開發過程,這就意味著産品質量無法通過過程控製進行保障,因此隻能通過産品控製來保證産品質量。
● 第三個原因是缺少能夠通過靜態産品分析來保證産品質量並能適應産品規模變化的實用方法,因此隻能通過動態方法來保證産品質量。
● 其他原因還包括:缺少一種通用的重用規則,缺少適用於不同産品規模且能夠保證産品正確性的開發方法,以及在産品開發、維護、演化過程中無處不在的規約變更,等等。
本書的主題是研究軟件測試;與當前其他同一主題的眾多書籍相比,本書在以下幾個方麵具有突齣的特點:
● 將軟件測試視為軟件質量保障的有機組成部分。我們將軟件測試作為軟件質量保障總體策略中的一個組成部分,而軟件質量保障總體策略還包含瞭多項其他技術。邊際效用遞減規律(The law of diminishing returns)支持使用多種不同的互補性技術,而且需要將不同技術應用於能夠得到最大投入迴報的場閤。這樣,軟件測試纔能在一個包含瞭其他方法、更為廣泛的語境下得到更深入的研究,而不僅僅是作為一個孤立的技術集進行研究。
● 將軟件測試視為靜態分析的一種補充技術。在軟件工程發展早期,針對有效性、可伸縮性、易用性等方麵內容,人們對軟件測試和靜態程序分析的優勢進行瞭豐富多彩的討論。我們的立場是:某種技術在某些場閤下能夠發揮最大的效能,而在其他場閤下可能就沒有那麼有效瞭;另一種常見的情況是,當我們感覺某種技術很難應用的時候,實際上往往不是因為技術本身存在問題,而是因為基於錯誤的規約類型使用瞭這項技術。為瞭保證産品正確性,不應該執著於選擇某一種規約。實際上,我們應該將一種復雜的規約分解為不同的組成部分,然後將不同的組成部分映射到最為閤適的技術。本書的第6章討論瞭這個問題。
● 將軟件測試視為一個係統化的逐步完成的過程。早期的軟件測試被視為一種證明程序缺陷存在的方法,而不是一種證明程序缺陷不存在的方法。實際上,這種看法是不恰當的,因為測試可以用於多種目的,這一點我們將在第7章討論。無論這種看法是否閤適,它都帶來瞭兩種後果:第一,人們認為軟件測試的唯一目的是暴露缺陷、診斷程序和去除缺陷;第二,結果是,人們認為測試僅僅是生成測試數據的過程,特彆是生成那些能夠最大可能地暴露程序缺陷的測試數據。與這些看法不同的是,我們認為測試是一個多步驟的過程,包括識彆與分析測試目標、測試數據生成、測試預言設計、測試驅動程序設計、測試部署、測試輸齣分析。我們將用不同的章節分彆講解這些內容。
● 將軟件測試視為一個形式化或可形式化的過程。對被測試的軟件産品或軟件産品規約而言,測試所需的分析工作量比較小,因此測試往往被視為一項可以隨意執行的工作,並且無須考慮形式化問題。但是,我們卻認為測試應該與靜態程序分析一樣嚴格。為有效地進行測試,測試人員必須具備軟件規約、程序正確性、相對正確性(relative correctness)、缺陷的含義、缺陷去除等知識。這些內容將在第6章詳細討論。
● 將軟件測試視為一個麵嚮目標的活動。我們認為,軟件測試不僅是查找和去除缺陷,還可能具有更廣泛的目標,包括諸如估計缺陷密度、估計可靠性、可靠性認證(certification)等。這些內容將在第7章詳細討論。
本書的內容來自軟件測試及質量保障課程的講義,因此主要用於課堂使用。當然,本書也可以滿足軟件工程師的實際工作需要和軟件工程研究人員的研究需求。本書分為五個主要部分,每個部分包括瞭3~4章內容,全書共計16章。
● 第Ⅰ部分在軟件工程的語境下比較寬泛地介紹軟件測試,並且將探討軟件測試希望達到或確定的質量目標,還會探討軟件測試的生命周期。
● 第Ⅱ部分介紹軟件測試的數學基礎,包括軟件規約、程序正確性和程序驗證、軟件可依賴性概念以及軟件測試分類學。一般的軟件測試書籍很少像本書這樣討論規約、驗證、可依賴性等內容。本書這樣做是基於以下原因:
首先,我們相信,在沒有深入理解軟件規約的前提下,是不可能研究軟件測試的,因為軟件規約規定瞭被測試程序的功能屬性,而這些功能屬性也是測試預言設計的基礎。
其次,當我們在産品認證(product certification)或者驗收測試(acceptance testing)的語境下執行程序測試時,最受關注的是被測試的程序是否正確,而我們必須理解“正確”到底是指什麼。
第三,如果打算協同使用動態程序測試和靜態程序分析,並且希望獲得比單獨用一種方法更為全麵的結論,那麼就必須在同一個數學模型下使用這些方法。
第四,從一個程序中去除缺陷的行為是測試的核心任務,這個行為隻能通過定義相對正確性(relative correctness)的屬性來建立模型。相對正確性是指當程序中的缺陷被去除後,程序將更正確。因此,相對正確性隻能在理解瞭(絕對)正確性屬性的前提下進行定義。
軟件測試技術分類學是指將軟件測試技術根據一組準則進行分類,特彆是軟件測試的目的:在指導軟件測試的過程中,識彆不同的軟件測試目的是很重要的,不同的軟件測試目的將影響測試生命周期的全部階段,包括測試數據生成、測試預言設計,乃至測試部署和測試輸齣分析。
● 第Ⅲ部分研究軟件測試過程中最為吸引研究人員和測試人員的步驟,這個步驟常常被視為軟件測試過程中唯一有意義的工作:測試數據生成。在這一部分中,我們將簡要討論測試數據生成的一些通用概念,然後研究測試數據生成的兩種通用準則,也就是功能準則(第9章)和結構化準則(第10章)。我們在討論測試數據生成時,不僅要考慮能夠直接從初始狀態 軟件測試概念與實踐 [Software Testing: Concepts and Operations] 下載 mobi epub pdf txt 電子書 格式
軟件測試概念與實踐 [Software Testing: Concepts and Operations] 下載 mobi pdf epub txt 電子書 格式 2024
軟件測試概念與實踐 [Software Testing: Concepts and Operations] 下載 mobi epub pdf 電子書還沒看
評分質量好
評分good good very very good
評分書比較小,厚,內容還沒細看
評分質量好
評分good good very very good
評分質量好
評分質量好
評分good good very very good
軟件測試概念與實踐 [Software Testing: Concepts and Operations] mobi epub pdf txt 電子書 格式下載 2024