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