Spring Boot開發(fā)與測(cè)試實(shí)戰(zhàn)
本書首先介紹Spring、Spring Boot、Spring MVC和Spring Security等技術(shù),然后以一個(gè)簡(jiǎn)易的在線書店管理系統(tǒng)為例,全面講解采用JPA/MyBatis、MySQL、Thymeleaf與Bootstrap技術(shù)棧開發(fā)應(yīng)用程序的過(guò)程。開發(fā)過(guò)程中引入菱形測(cè)試模型,覆蓋單元測(cè)試、接口測(cè)試、功能測(cè)試和探索測(cè)試等方法,并開展關(guān)鍵字驅(qū)動(dòng)測(cè)試和數(shù)據(jù)驅(qū)動(dòng)測(cè)試。本書基于分層測(cè)試框架,結(jié)合實(shí)踐案例說(shuō)明如何實(shí)施測(cè)試,有助于項(xiàng)目研發(fā)人員提高測(cè)試效率和產(chǎn)品成熟度。
本書不僅適合測(cè)試人員、開發(fā)人員閱讀,還可作為相關(guān)培訓(xùn)機(jī)構(gòu)的教材。
1.結(jié)合案例,系統(tǒng)講述Spring Boot框架基礎(chǔ)知識(shí)、應(yīng)用程序開發(fā)過(guò)程和菱形測(cè)試模型,幫助讀者提升全棧開發(fā)與測(cè)試能力
2.通俗易懂,本書是一本關(guān)于Spring Boot應(yīng)用程序開發(fā)和測(cè)試的入門圖書,適合初學(xué)者學(xué)習(xí)
3.內(nèi)容實(shí)用,通過(guò)學(xué)習(xí)如何用代碼實(shí)現(xiàn)具體的接口,讀者可掌握開發(fā)框架和測(cè)試分層模型的應(yīng)用
4.可操作性強(qiáng),從搭建環(huán)境入手,詳細(xì)介紹如何編寫代碼和測(cè)試腳本,并結(jié)合源代碼實(shí)現(xiàn)測(cè)試過(guò)程,幫助讀者一步步了解整個(gè)測(cè)試過(guò)程,讀者可跟隨本書中的案例進(jìn)行實(shí)踐
李泳 ,擔(dān)任過(guò)質(zhì)量測(cè)試總監(jiān)、測(cè)試總監(jiān)、開發(fā)工程師,擁有豐富的C/C++/Java經(jīng)驗(yàn),熟悉Spring Boot、SpingMVC等企業(yè)程序架構(gòu),擁有10年以上軟件平臺(tái)和硬件測(cè)試經(jīng)驗(yàn),開發(fā)過(guò)基于Linux 的GUI中間件和控件。
目 錄
第 1章 Spring Boot 1
1.1 Spring框架的優(yōu)勢(shì) 1
1.2 Spring基本概念 2
1.3 Spring核心模塊 4
1.4 企業(yè)級(jí)應(yīng)用程序開發(fā)的痛點(diǎn) 6
1.5 Spring Boot的優(yōu)勢(shì) 6
1.6 Spring Boot核心組件 7
1.7 Spring Boot程序創(chuàng)建方法 9
1.8 小結(jié) 9
第 2章 Spring MVC 10
2.1 典型的Java Web應(yīng)用程序架構(gòu) 10
2.2 創(chuàng)建一個(gè)Spring MVC程序 10
2.2.1 Java配置方式 10
2.2.2 XML配置方式 14
2.3 Spring MVC運(yùn)行過(guò)程 16
2.4 小結(jié) 18
第3章 Spring Boot程序 19
3.1 創(chuàng)建一個(gè)“Hello World”程序 19
3.2 創(chuàng)建一個(gè)可執(zhí)行的JAR包 24
3.3 Spring Boot運(yùn)行入口類 27
3.4 Spring Boot注解簡(jiǎn)介 28
3.5 小結(jié) 30
第4章 JPA和MyBatis 31
4.1 JPA簡(jiǎn)介 31
4.2 Spring Data JPA簡(jiǎn)介 32
4.2.1 常用注解 33
4.2.2 常用接口 33
4.3 Spring Data JPA集成實(shí)例 33
4.4 MyBatis實(shí)例 41
4.4.1 注解方式 41
4.4.2 使用Mapper XML 45
4.5 小結(jié) 47
第5章 Bootstrap 48
5.1 Bootstrap簡(jiǎn)介 48
5.2 Bootstrap的組成、安裝和使用 48
5.3 Bootstrap網(wǎng)格 50
5.4 Bootstrap實(shí)例 51
5.5 小結(jié) 56
第6章 Thymeleaf 57
6.1 Thymeleaf標(biāo)準(zhǔn)表達(dá)式 57
6.2 使用Thymeleaf處理用戶輸入 59
6.3 Thymeleaf中的迭代器與條件判斷 59
6.3.1 迭代器 59
6.3.2 條件判斷 60
6.4 Thymeleaf模板片段 60
6.5 Thymeleaf實(shí)用方法 60
6.6 Thymeleaf實(shí)例 61
6.7 小結(jié) 73
第7章 Spring Security 74
7.1 Spring Security概述 74
7.2 HTTP基本身份驗(yàn)證 75
7.3 Spring Security實(shí)例 76
7.4 小結(jié) 83
第8章 Spring Boot測(cè)試框架集成 84
8.1 Spring測(cè)試框架簡(jiǎn)介 84
8.1.1 單元測(cè)試支持類 84
8.1.2 集成測(cè)試支持類 85
8.1.3 常用的測(cè)試注解 86
8.1.4 典型的Spring JUnit測(cè)試腳本 87
8.1.5 Spring MVC測(cè)試特性 87
8.2 Spring Boot測(cè)試特性 88
8.2.1 典型的測(cè)試腳本 89
8.2.2 使用@WebMvcTest注解進(jìn)行單元測(cè)試 89
8.2.3 用于集成測(cè)試的TestRestTemplate 91
8.3 使用Mockito來(lái)模擬對(duì)象 92
8.4 小結(jié) 93
第9章 在線書店管理系統(tǒng)需求 95
9.1 業(yè)務(wù)需求調(diào)研 95
9.2 功能需求分析 96
9.2.1 用戶活動(dòng)分析 96
9.2.2 系統(tǒng)模塊分析 96
9.2.3 業(yè)務(wù)數(shù)據(jù)分析 96
9.3 非功能需求分析 97
9.4 需求原型設(shè)計(jì) 97
9.4.1 業(yè)務(wù)導(dǎo)航圖 97
9.4.2 頁(yè)面原型設(shè)計(jì) 98
9.5 技術(shù)選型 98
9.6 系統(tǒng)架構(gòu)設(shè)計(jì) 99
9.7 前端頁(yè)面設(shè)計(jì) 100
9.8 系統(tǒng)運(yùn)行環(huán)境的搭建 100
9.8.1 JDK的安裝 100
9.8.2 Maven的安裝 101
9.8.3 MySQL的安裝 101
9.9 小結(jié) 102
第 10章 案例項(xiàng)目的創(chuàng)建 103
10.1 數(shù)據(jù)表設(shè)計(jì) 103
10.1.1 數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì) 104
10.1.2 數(shù)據(jù)表關(guān)系圖 105
10.1.3 創(chuàng)建數(shù)據(jù)表腳本 105
10.1.4 創(chuàng)建數(shù)據(jù)庫(kù)和表 107
10.2 生成項(xiàng)目 108
10.3 pom.xml文件 109
10.4 配置文件 111
10.5 小結(jié) 111
第 11章 用戶管理模塊設(shè)計(jì)及實(shí)現(xiàn) 112
11.1 用戶管理需求 112
11.2 接口需求分析 113
11.3 后端設(shè)計(jì)及編碼 114
11.3.1 用戶域模型設(shè)計(jì) 114
11.3.2 用戶倉(cāng)庫(kù)實(shí)現(xiàn) 117
11.3.3 用戶服務(wù)接口實(shí)現(xiàn) 117
11.3.4 用戶控制層實(shí)現(xiàn) 119
11.4 前端設(shè)計(jì)及編碼 122
11.4.1 用戶注冊(cè) 122
11.4.2 用戶登錄 124
11.4.3 用戶個(gè)人信息修改 125
11.4.4 用戶管理 127
11.4.5 創(chuàng)建用戶 129
11.4.6 刪除用戶 131
11.5 小結(jié) 132
第 12章 角色權(quán)限設(shè)計(jì)及實(shí)現(xiàn) 133
12.1 分析角色需求、權(quán)限需求與接口需求 133
12.1.1 角色功能需求分析 133
12.1.2 權(quán)限需求分析 133
12.1.3 接口需求分析 134
12.2 后端設(shè)計(jì)及編碼 134
12.2.1 初始化角色權(quán)限數(shù)據(jù) 134
12.2.2 角色域模型設(shè)計(jì) 134
12.2.3 權(quán)限安全配置 135
12.2.4 用戶身份認(rèn)證服務(wù)實(shí)現(xiàn) 136
12.2.5 權(quán)限控制層實(shí)現(xiàn) 137
12.3 前端設(shè)計(jì)及編碼 137
12.4 小結(jié) 139
第 13章 圖書管理模塊設(shè)計(jì)及編碼實(shí)現(xiàn) 140
13.1 圖書管理需求 140
13.1.1 圖書搜索 140
13.1.2 圖書管理 140
13.2 接口需求分析 141
13.3 后端設(shè)計(jì)及編碼 141
13.3.1 圖書域模型設(shè)計(jì) 141
13.3.2 圖書倉(cāng)庫(kù)實(shí)現(xiàn) 143
13.3.3 圖書服務(wù)接口實(shí)現(xiàn) 144
13.3.4 圖書控制層實(shí)現(xiàn) 145
13.4 前端設(shè)計(jì)及編碼 147
13.4.1 圖書管理 148
13.4.2 新增圖書 149
13.4.3 圖書編輯 151
13.4.4 圖書搜索 153
13.4.5 圖書詳情 154
13.5 小結(jié) 155
第 14章 訂單管理模塊設(shè)計(jì)及編碼實(shí)現(xiàn) 156
14.1 訂單管理需求 156
14.1.1 生成訂單 156
14.1.2 訂單管理 156
14.2 接口需求分析 157
14.3 后端設(shè)計(jì)及編碼 158
14.3.1 訂單域模型設(shè)計(jì) 158
14.3.2 訂單倉(cāng)庫(kù)實(shí)現(xiàn) 161
14.3.3 訂單服務(wù)接口實(shí)現(xiàn) 161
14.3.4 訂單控制層實(shí)現(xiàn) 163
14.4 前端設(shè)計(jì)及編碼 165
14.4.1 加入購(gòu)物車 165
14.4.2 訂單確認(rèn) 167
14.4.3 個(gè)人歷史訂單 168
14.4.4 訂單管理 169
14.4.5 訂單處理 170
14.4.6 訂單詳情 171
14.5 程序打包構(gòu)建 172
14.6 小結(jié) 173
第 15章 RESTful API的設(shè)計(jì)與實(shí)現(xiàn) 174
15.1 RESTful API簡(jiǎn)介 174
15.1.1 API設(shè)計(jì)準(zhǔn)則 174
15.1.2 REST實(shí)現(xiàn)和Spring常用
注解 175
15.2 Swagger簡(jiǎn)介 177
15.3 RESTful API實(shí)現(xiàn) 179
15.3.1 用戶接口設(shè)計(jì) 179
15.3.2 用戶接口實(shí)現(xiàn) 181
15.4 啟動(dòng)Swagger查閱API 182
15.4.1 生成API文檔 182
15.4.2 新建用戶信息 182
15.4.3 查詢用戶信息 183
15.4.4 更新用戶信息 183
15.4.5 刪除用戶信息 184
15.4.6 接口測(cè)試驗(yàn)證 185
15.5 小結(jié) 186
第 16章 分層測(cè)試框架 187
16.1 測(cè)試需求 187
16.2 測(cè)試策略 188
16.3 測(cè)試金字塔 188
16.3.1 單元測(cè)試 189
16.3.2 接口測(cè)試 190
16.3.3 UI測(cè)試 191
16.3.4 探索測(cè)試 191
16.4 菱形測(cè)試模型 191
16.4.1 輕量級(jí)單元測(cè)試 192
16.4.2 重量級(jí)接口測(cè)試 194
16.4.3 UI測(cè)試 196
16.5 測(cè)試模型及其使用場(chǎng)景 197
16.5.1 金字塔測(cè)試模型 197
16.5.2 冰激凌測(cè)試模型 198
16.5.3 菱形測(cè)試模型 198
16.5.4 改進(jìn)的菱形測(cè)試模型 199
16.6 自動(dòng)化測(cè)試實(shí)施策略 200
16.7 小結(jié) 201
第 17章 測(cè)試工具選型 202
17.1 自動(dòng)化測(cè)試原理 202
17.2 測(cè)試工具選型原則 203
17.3 單元測(cè)試工具 204
17.3.1 JUnit 204
17.3.2 TestNG 209
17.3.3 Mockito 216
17.4 接口測(cè)試工具 217
17.4.1 Postman 217
17.4.2 JMeter 217
17.4.3 REST Assured 218
17.4.4 OkHttp 219
17.4.5 HttpClient 219
17.5 功能測(cè)試工具Selenium 219
17.6 小結(jié) 220
第 18章 單元測(cè)試腳本開發(fā) 221
18.1 測(cè)試定義回顧 221
18.2 單元測(cè)試設(shè)計(jì)原則 222
18.3 單元測(cè)試策略 223
18.4 集成測(cè)試策略 223
18.5 測(cè)試代碼目錄結(jié)構(gòu) 224
18.6 DAO層測(cè)試腳本開發(fā) 225
18.7 Service層測(cè)試腳本開發(fā) 226
18.7.1 Service層單元測(cè)試 226
18.7.2 Service層集成測(cè)試 228
18.8 Controller層測(cè)試腳本開發(fā) 229
18.8.1 Controller層單元測(cè)試 230
18.8.2 Controller層集成測(cè)試 233
18.9 小結(jié) 236
第 19章 接口測(cè)試腳本開發(fā) 237
19.1 接口測(cè)試的方法及環(huán)境 237
19.1.1 接口測(cè)試方法 237
19.1.2 接口測(cè)試環(huán)境 238
19.2 Postman 239
19.2.1 Postman的安裝 240
19.2.2 使用Postman進(jìn)行接口測(cè)試 240
19.3 JMeter 244
19.3.1 JMeter的安裝 244
19.3.2 使用JMeter進(jìn)行接口測(cè)試 244
19.4 REST Assured 251
19.4.1 REST Assured的使用 251
19.4.2 使用REST Assured進(jìn)行接口測(cè)試 254
19.5 OkHttp 258
19.5.1 OkHttp的使用 258
19.5.2 使用OkHttp進(jìn)行接口測(cè)試 259
19.5.3 異步調(diào)用 261
19.6 HttpClient 261
19.6.1 HttpClient的使用 261
19.6.2 使用HttpClient進(jìn)行接口測(cè)試 262
19.7 小結(jié) 264
第 20章 功能測(cè)試腳本開發(fā) 265
20.1 功能測(cè)試場(chǎng)景 265
20.1.1 測(cè)試環(huán)境 265
20.1.2 測(cè)試場(chǎng)景 265
20.2 基于JMeter的后端功能測(cè)試 266
20.3 基于Selenium的前端功能測(cè)試 272
20.3.1 元素定位 272
20.3.2 WebDriver常用函數(shù) 273
20.3.3 Selenium測(cè)試腳本開發(fā) 273
20.3.4 Page Object測(cè)試模式 277
20.4 數(shù)據(jù)驅(qū)動(dòng)測(cè)試 280
20.5 關(guān)鍵字驅(qū)動(dòng)測(cè)試 287
20.6 小結(jié) 293
第 21章 探索測(cè)試 294
21.1 探索測(cè)試的定義 294
21.2 探索測(cè)試的優(yōu)勢(shì)和不足 295
21.3 探索測(cè)試的方法 295
21.4 探索測(cè)試實(shí)踐 297
21.5 小結(jié) 299
附錄A 案例的架構(gòu)和測(cè)試框架 300