定 價(jià):59 元
叢書(shū)名:軟件工程技術(shù)叢書(shū)
當(dāng)前圖書(shū)已被 7 所學(xué)校薦購(gòu)過(guò)!
查看明細(xì)
- 作者:王興亞 王智鋼 趙源 陳振宇
- 出版時(shí)間:2019/2/1
- ISBN:9787111616818
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):TP311.55
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
本書(shū)從開(kāi)發(fā)者測(cè)試的角度,介紹了軟件測(cè)試的產(chǎn)生與發(fā)展以及開(kāi)發(fā)者與測(cè)試的關(guān)系;講述了程序靜態(tài)分析、邏輯覆蓋測(cè)試、程序插樁與變異測(cè)試等開(kāi)發(fā)者需要掌握的測(cè)試方法和技術(shù);結(jié)合示例講解了單元測(cè)試、集成測(cè)試中開(kāi)發(fā)者應(yīng)當(dāng)要能發(fā)現(xiàn)和避免的各種問(wèn)題;由淺入深,介紹了測(cè)試工具JUnit的使用;*后介紹了由慕測(cè)科技提供的開(kāi)發(fā)者測(cè)試平臺(tái)和全國(guó)大學(xué)生軟件測(cè)試大賽。
當(dāng)前,信息需求的持續(xù)增長(zhǎng)和信息技術(shù)的快速發(fā)展加快了軟件產(chǎn)品的研發(fā)速度,同時(shí)也大大增加了軟件產(chǎn)品的測(cè)試壓力。以互聯(lián)網(wǎng)、移動(dòng)應(yīng)用等產(chǎn)品為例,眾多軟件公司普遍采用微小改進(jìn)、快速迭代、反饋收集、及時(shí)響應(yīng)等手段來(lái)提高軟件的迭代速度,縮短軟件產(chǎn)品的發(fā)布流程。顯然,僅僅依賴(lài)測(cè)試人員已經(jīng)難以滿(mǎn)足市場(chǎng)和客戶(hù)對(duì)產(chǎn)品質(zhì)量的需求,這就要求開(kāi)發(fā)人員也深入?yún)⑴c到軟件測(cè)試過(guò)程中,與測(cè)試人員共同完成軟件產(chǎn)品的質(zhì)量保證工作。在本書(shū)中,我們定義由開(kāi)發(fā)者承擔(dān)的與代碼相關(guān)的軟件測(cè)試工作為開(kāi)發(fā)者測(cè)試。
本書(shū)從開(kāi)發(fā)者測(cè)試出現(xiàn)的背景與意義、開(kāi)發(fā)者所應(yīng)掌握的基本和高級(jí)程序分析方法以及軟件測(cè)試技術(shù)、開(kāi)發(fā)者所應(yīng)掌握的軟件測(cè)試分析輔助工具、用于開(kāi)發(fā)者測(cè)試教學(xué)和競(jìng)賽的慕測(cè)平臺(tái)等多個(gè)方面對(duì)開(kāi)發(fā)者測(cè)試進(jìn)行系統(tǒng)性介紹。相信通過(guò)本書(shū)的學(xué)習(xí),讀者可以對(duì)開(kāi)發(fā)者參與測(cè)試的必要性、開(kāi)發(fā)者測(cè)試所涵蓋的內(nèi)容有初步的認(rèn)識(shí)和了解,同時(shí)能夠結(jié)合本書(shū)的示例及平臺(tái)鍛煉自己的測(cè)試能力。
本書(shū)適用于兩類(lèi)不同的讀者:1)在高等院校學(xué)習(xí)和工作的教師和學(xué)生,本書(shū)有助于他們理解和認(rèn)識(shí)測(cè)試工作承擔(dān)者的責(zé)任,并為他們學(xué)習(xí)和鍛煉自身的測(cè)試能力提供方向和平臺(tái);2)軟件產(chǎn)業(yè)的開(kāi)發(fā)人員、測(cè)試人員和管理人員,本書(shū)有助于他們認(rèn)識(shí)開(kāi)發(fā)者在測(cè)試工作中的重要性和所應(yīng)承擔(dān)的工作內(nèi)容,以及開(kāi)發(fā)者所應(yīng)具備的測(cè)試技能。
本書(shū)講述的方法是通用的,可以用于測(cè)試任何類(lèi)型的計(jì)算機(jī)軟件。但是,為了使讀者更好地理解和學(xué)習(xí)本書(shū)的開(kāi)發(fā)者測(cè)試方法,本書(shū)提供了大量Java示例代碼以及面向Java的程序分析、測(cè)試工具。這些示例和工具可以在任何支持Java的操作系統(tǒng)(如Windows、Linux、Mac)、開(kāi)發(fā)環(huán)境(如Eclipse、IntelliJ、Sublime Text)中開(kāi)發(fā)、測(cè)試和運(yùn)行。
本書(shū)共包含8章及一個(gè)附錄,除第7章與第8章外,其他章節(jié)的內(nèi)容互不相關(guān),因而讀者可選擇其中部分章節(jié)進(jìn)行閱讀。
第1章:開(kāi)發(fā)者測(cè)試概述。本章在研究和分析開(kāi)發(fā)者與軟件測(cè)試關(guān)系的基礎(chǔ)上,介紹了開(kāi)發(fā)者測(cè)試的定義、背景與意義。同時(shí),本章還從靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試、白盒測(cè)試與黑盒測(cè)試、不同測(cè)試工具間的對(duì)比中分析得到開(kāi)發(fā)者測(cè)試所涉及的方法、技術(shù)與工具。此外,本章還討論了開(kāi)發(fā)者測(cè)試技術(shù)未來(lái)的趨勢(shì),并介紹了支持開(kāi)發(fā)者測(cè)試教學(xué)與競(jìng)賽的慕測(cè)平臺(tái)。
第2章:程序靜態(tài)分析。本章對(duì)軟件靜態(tài)測(cè)試的基礎(chǔ)程序靜態(tài)分析方法進(jìn)行了介紹。通過(guò)代碼評(píng)審、結(jié)構(gòu)分析等方法可以有效地檢測(cè)出程序中的邏輯錯(cuò)誤,而程序流程分析(如控制流分析、數(shù)據(jù)流分析)則可以更細(xì)粒度地反映程序中語(yǔ)句間、變量間的關(guān)聯(lián)。此外,本章還介紹了輔助程序正確性證明的靜態(tài)/動(dòng)態(tài)符號(hào)執(zhí)行方法,便于讀者了解更高級(jí)的程序分析方法。
第3章:白盒測(cè)試。白盒測(cè)試要求軟件內(nèi)部的邏輯結(jié)構(gòu)透明可見(jiàn),因此更適合由軟件項(xiàng)目的開(kāi)發(fā)者來(lái)承擔(dān)。本章介紹了兩類(lèi)主要的白盒測(cè)試方法,包括以程序內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ)的邏輯覆蓋測(cè)試方法和以程序路徑為基礎(chǔ)的路徑覆蓋測(cè)試方法。與此同時(shí),本章還比較了不同白盒測(cè)試方法的測(cè)試強(qiáng)度,并介紹了用于度量程序復(fù)雜度的環(huán)復(fù)雜度方法。
第4章:程序插樁與變異測(cè)試。本章介紹了用于獲取程序運(yùn)行時(shí)信息的程序插樁方法,以及用于度量測(cè)試用例集缺陷檢測(cè)能力的變異測(cè)試方法。對(duì)于程序插樁方法,本章詳細(xì)介紹了插樁位置、類(lèi)型、數(shù)量的選擇方法;對(duì)于變異測(cè)試方法,本章詳細(xì)介紹了變異算子的設(shè)計(jì)與選擇方法。同時(shí),本章還介紹了工具JaCoCo和PITest,以便讀者體驗(yàn)Java程序的運(yùn)行時(shí)信息收集和變異測(cè)試過(guò)程。
第5章:?jiǎn)卧獪y(cè)試。單元測(cè)試是對(duì)軟件基本組成單元(如方法、函數(shù)、過(guò)程)的測(cè)試。在測(cè)試過(guò)程中要完成初始狀態(tài)的創(chuàng)建、測(cè)試結(jié)果的驗(yàn)證、測(cè)試資源的釋放等工作,這些工作適合開(kāi)發(fā)者使用代碼控制開(kāi)展。本章在介紹單元測(cè)試框架的基礎(chǔ)上,進(jìn)一步闡述了單元測(cè)試的各項(xiàng)內(nèi)容,使讀者能針對(duì)不同的測(cè)試對(duì)象分析、建立相應(yīng)的測(cè)試模型。
第6章:集成測(cè)試。通過(guò)單元測(cè)試的軟件模塊并不能保證在整合后依然運(yùn)行正確,因此需要做集成測(cè)試以進(jìn)一步驗(yàn)證。本章介紹了集成測(cè)試過(guò)程、集成測(cè)試所面向的缺陷類(lèi)型以及分析方法,并詳細(xì)介紹了多種集成測(cè)試策略。同時(shí),本章還討論了不同集成測(cè)試策略的優(yōu)缺點(diǎn),并對(duì)它們各自的適用場(chǎng)景進(jìn)行了分析,測(cè)試人員可據(jù)此選擇合適的集成測(cè)試策略。
第7章:JUnit基礎(chǔ)。工欲善其事,必先利其器。JUnit是開(kāi)發(fā)者開(kāi)展單元測(cè)試的一把利器。本章對(duì)Java單元測(cè)試框架的基本功能(如注解、測(cè)試類(lèi)與測(cè)試方法、錯(cuò)誤與異常處理、批量測(cè)試)進(jìn)行了詳細(xì)的介紹,使讀者對(duì)JUnit的功能和適用范圍有了詳細(xì)的了解。本章還穿插了數(shù)個(gè)JUnit示例程序,幫助讀者更快、更方便地學(xué)習(xí)Java單元測(cè)試。
第8章:JUnit深入應(yīng)用。在前一章介紹JUnit基本功能的基礎(chǔ)上,本章對(duì)JUnit的高級(jí)功能進(jìn)行了介紹,包括用于提高測(cè)試代碼開(kāi)發(fā)效率的匹配器功能,面向Controller和Private函數(shù)的測(cè)試功能、Stup測(cè)試功能和Mock測(cè)試功能。同時(shí),本章還介紹了JUnit與常用Java開(kāi)發(fā)框架(如Ant、Maven)的集成方法,讀者可據(jù)此配置來(lái)構(gòu)建更方便的Java單元測(cè)試環(huán)境。
附錄:慕測(cè)科技開(kāi)發(fā)者測(cè)試平臺(tái)。實(shí)踐練習(xí)是提高開(kāi)發(fā)者測(cè)試能
前 言
第1章 開(kāi)發(fā)者測(cè)試概述 1
1.1 開(kāi)發(fā)者與軟件測(cè)試 1
1.1.1 測(cè)試和調(diào)試 1
1.1.2 開(kāi)發(fā)者測(cè)試 3
1.1.3 PIE模型 4
1.2 開(kāi)發(fā)者測(cè)試方法與技術(shù) 6
1.2.1 靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試 6
1.2.2 黑盒測(cè)試與白盒測(cè)試 8
1.2.3 失效重現(xiàn) 9
1.3 開(kāi)發(fā)者測(cè)試工具 9
1.3.1 靜態(tài)測(cè)試掃描工具 9
1.3.2 測(cè)試覆蓋分析工具 12
1.4 開(kāi)發(fā)者測(cè)試趨勢(shì) 14
1.4.1 軟件開(kāi)發(fā)和運(yùn)營(yíng)困境 14
1.4.2 DevOps介紹 16
1.4.3 DevOps中的開(kāi)發(fā)者測(cè)試 17
1.5 慕測(cè)開(kāi)發(fā)者測(cè)試 19
1.6 小結(jié) 27
習(xí)題1 28
第2章 程序靜態(tài)分析 29
2.1 程序靜態(tài)分析概述 29
2.1.1 代碼評(píng)審 30
2.1.2 結(jié)構(gòu)分析 31
2.2 程序流程分析 32
2.2.1 控制流分析 32
2.2.2 數(shù)據(jù)流分析 33
2.3 符號(hào)執(zhí)行 35
2.3.1 靜態(tài)符號(hào)執(zhí)行 36
2.3.2 動(dòng)態(tài)符號(hào)執(zhí)行 38
2.4 編程規(guī)范和規(guī)則 39
2.5 程序靜態(tài)分析工具 42
2.5.1 工具簡(jiǎn)介 42
2.5.2 工具安裝與評(píng)估 42
2.6 小結(jié) 48
習(xí)題2 48
第3章 白盒測(cè)試 50
3.1 邏輯覆蓋測(cè)試 50
3.1.1 語(yǔ)句覆蓋 52
3.1.2 分支覆蓋 54
3.1.3 條件覆蓋 56
3.1.4 條件/判定覆蓋 58
3.1.5 修正條件/判定覆蓋 61
3.1.6 條件組合覆蓋 63
3.2 路徑覆蓋測(cè)試 65
3.2.1 環(huán)復(fù)雜度 65
3.2.2 基本路徑覆蓋 66
3.2.3 主路徑覆蓋 69
3.2.4 循環(huán)結(jié)構(gòu)測(cè)試 72
3.3 小結(jié) 74
習(xí)題3 74
第4章 程序插樁與變異測(cè)試 77
4.1 程序插樁 77
4.1.1 程序插樁概述 77
4.1.2 程序插樁示例 78
4.1.3 程序插樁工具JaCoCo 79
4.2 變異測(cè)試 84
4.2.1 變異測(cè)試概述 84
4.2.2 變異測(cè)試方法 85
4.2.3 變異測(cè)試工具PITest 89
4.3 小結(jié) 91
習(xí)題4 91
第5章 單元測(cè)試 94
5.1 單元測(cè)試概述 94
5.2 單元測(cè)試框架 95
5.3 單元測(cè)試內(nèi)容 96
5.3.1 算法邏輯 96
5.3.2 模塊接口 97
5.3.3 數(shù)據(jù)結(jié)構(gòu) 97
5.3.4 邊界條件 98
5.3.5 獨(dú)立路徑 98
5.3.6 錯(cuò)誤處理 99
5.3.7 輸入數(shù)據(jù) 99
5.3.8 表達(dá)式與SQL語(yǔ)句 100
5.4 慕測(cè)單元測(cè)試實(shí)例 100
5.5 小結(jié) 102
習(xí)題5 103
第6章 集成測(cè)試 105
6.1 集成測(cè)試概述 105
6.1.1 集成測(cè)試過(guò)程 106
6.1.2 集成測(cè)試缺陷類(lèi)型 107
6.2 集成測(cè)試分析 110
6.3 集成測(cè)試策略 112
6.3.1 一次性集成與增量式集成 112
6.3.2 自頂向下與自底向上集成 114
6.3.3 基于調(diào)用圖的集成 117
6.3.4 其他集成測(cè)試策略 118
6.4 小結(jié) 124
習(xí)題6 124
第7章 JUnit基礎(chǔ) 127
7.1 一個(gè)JUnit實(shí)例 127
7.2 注解 132
7.3 測(cè)試類(lèi)與測(cè)試方法 135
7.3.1 Assert 135
7.3.2 TestCase 139
7.3.3 TestResult 141
7.3.4 TestSuite 142
7.4 錯(cuò)誤與異常處理 143
7.4.1 錯(cuò)誤和異常 143
7.4.2 異常處理 144
7.5 批量測(cè)試 146
7.5.1 參數(shù)化測(cè)試 146
7.5.2 打包測(cè)試 149
7.6 小結(jié) 150
練習(xí)7 150
第8章 JUnit深入應(yīng)用 152
8.1 匹配器 152
8.2 JUnit測(cè)試進(jìn)階 154
8.2.1 Controller測(cè)試 154
8.2.2 Stup測(cè)試 155
8.2.3 Mock測(cè)試 159
8.2.4 Private測(cè)試 162
8.3 JUnit集成 165
8.3.1 JUnit-Ant集成 165
8.3.2 JUnit-Maven集成 169
8.4 小結(jié) 171
練習(xí)8 171
附錄 慕測(cè)科技開(kāi)發(fā)者測(cè)試平臺(tái) 172
參考文獻(xiàn) 192