本书首先介绍Spring、Spring Boot、Spring MVC和Spring Security等技术,然后以一个简易的在线书店管理系统为例,全面讲解采用JPA/MyBatis、MySQL、Thymeleaf与Bootstrap技术栈开发应用程序的过程。开发过程中引入菱形测试模型,覆盖单元测试、接口测试、功能测试和探索测试等方法,并开展关键字驱动测试和数据驱动测试。本书基于分层测试框架,结合实践案例说明如何实施测试,有助于项目研发人员提高测试效率和产品成熟度。
本书不仅适合测试人员、开发人员阅读,还可作为相关培训机构的教材。
1.结合案例,系统讲述Spring Boot框架基础知识、应用程序开发过程和菱形测试模型,帮助读者提升全栈开发与测试能力
2.通俗易懂,本书是一本关于Spring Boot应用程序开发和测试的入门图书,适合初学者学习
3.内容实用,通过学习如何用代码实现具体的接口,读者可掌握开发框架和测试分层模型的应用
4.可操作性强,从搭建环境入手,详细介绍如何编写代码和测试脚本,并结合源代码实现测试过程,帮助读者一步步了解整个测试过程,读者可跟随本书中的案例进行实践
李泳 ,担任过质量测试总监、测试总监、开发工程师,拥有丰富的C/C++/Java经验,熟悉Spring Boot、SpingMVC等企业程序架构,拥有10年以上软件平台和硬件测试经验,开发过基于Linux 的GUI中间件和控件。
目 录
第 1章 Spring Boot 1
1.1 Spring框架的优势 1
1.2 Spring基本概念 2
1.3 Spring核心模块 4
1.4 企业级应用程序开发的痛点 6
1.5 Spring Boot的优势 6
1.6 Spring Boot核心组件 7
1.7 Spring Boot程序创建方法 9
1.8 小结 9
第 2章 Spring MVC 10
2.1 典型的Java Web应用程序架构 10
2.2 创建一个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 创建一个“Hello World”程序 19
3.2 创建一个可执行的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网格 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章 在线书店管理系统需求 95
9.1 业务需求调研 95
9.2 功能需求分析 96
9.2.1 用户活动分析 96
9.2.2 系统模块分析 96
9.2.3 业务数据分析 96
9.3 非功能需求分析 97
9.4 需求原型设计 97
9.4.1 业务导航图 97
9.4.2 页面原型设计 98
9.5 技术选型 98
9.6 系统架构设计 99
9.7 前端页面设计 100
9.8 系统运行环境的搭建 100
9.8.1 JDK的安装 100
9.8.2 Maven的安装 101
9.8.3 MySQL的安装 101
9.9 小结 102
第 10章 案例项目的创建 103
10.1 数据表设计 103
10.1.1 数据表结构设计 104
10.1.2 数据表关系图 105
10.1.3 创建数据表脚本 105
10.1.4 创建数据库和表 107
10.2 生成项目 108
10.3 pom.xml文件 109
10.4 配置文件 111
10.5 小结 111
第 11章 用户管理模块设计及实现 112
11.1 用户管理需求 112
11.2 接口需求分析 113
11.3 后端设计及编码 114
11.3.1 用户域模型设计 114
11.3.2 用户仓库实现 117
11.3.3 用户服务接口实现 117
11.3.4 用户控制层实现 119
11.4 前端设计及编码 122
11.4.1 用户注册 122
11.4.2 用户登录 124
11.4.3 用户个人信息修改 125
11.4.4 用户管理 127
11.4.5 创建用户 129
11.4.6 删除用户 131
11.5 小结 132
第 12章 角色权限设计及实现 133
12.1 分析角色需求、权限需求与接口需求 133
12.1.1 角色功能需求分析 133
12.1.2 权限需求分析 133
12.1.3 接口需求分析 134
12.2 后端设计及编码 134
12.2.1 初始化角色权限数据 134
12.2.2 角色域模型设计 134
12.2.3 权限安全配置 135
12.2.4 用户身份认证服务实现 136
12.2.5 权限控制层实现 137
12.3 前端设计及编码 137
12.4 小结 139
第 13章 图书管理模块设计及编码实现 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 图书仓库实现 143
13.3.3 图书服务接口实现 144
13.3.4 图书控制层实现 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章 订单管理模块设计及编码实现 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 订单仓库实现 161
14.3.3 订单服务接口实现 161
14.3.4 订单控制层实现 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的设计与实现 174
15.1 RESTful API简介 174
15.1.1 API设计准则 174
15.1.2 REST实现和Spring常用
注解 175
15.2 Swagger简介 177
15.3 RESTful API实现 179
15.3.1 用户接口设计 179
15.3.2 用户接口实现 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章 单元测试脚本开发 221
18.1 测试定义回顾 221
18.2 单元测试设计原则 222
18.3 单元测试策略 223
18.4 集成测试策略 223
18.5 测试代码目录结构 224
18.6 DAO层测试脚本开发 225
18.7 Service层测试脚本开发 226
18.7.1 Service层单元测试 226
18.7.2 Service层集成测试 228
18.8 Controller层测试脚本开发 229
18.8.1 Controller层单元测试 230
18.8.2 Controller层集成测试 233
18.9 小结 236
第 19章 接口测试脚本开发 237
19.1 接口测试的方法及环境 237
19.1.1 接口测试方法 237
19.1.2 接口测试环境 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章 功能测试脚本开发 265
20.1 功能测试场景 265
20.1.1 测试环境 265
20.1.2 测试场景 265
20.2 基于JMeter的后端功能测试 266
20.3 基于Selenium的前端功能测试 272
20.3.1 元素定位 272
20.3.2 WebDriver常用函数 273
20.3.3 Selenium测试脚本开发 273
20.3.4 Page Object测试模式 277
20.4 数据驱动测试 280
20.5 关键字驱动测试 287
20.6 小结 293
第 21章 探索测试 294
21.1 探索测试的定义 294
21.2 探索测试的优势和不足 295
21.3 探索测试的方法 295
21.4 探索测试实践 297
21.5 小结 299
附录A 案例的架构和测试框架 300