新書推薦:
《
汉末晋初之际政治研究
》
售價:NT$
602.0
《
强者破局:资治通鉴成事之道
》
售價:NT$
367.0
《
鸣沙丛书·鼎革:南北议和与清帝退位
》
售價:NT$
551.0
《
从康德到黑格尔的发展:兼论宗教哲学(英国观念论名著译丛)
》
售價:NT$
275.0
《
突破不可能:用特工思维提升领导力
》
售價:NT$
352.0
《
王阳明大传:知行合一的心学智慧(精装典藏版)
》
售價:NT$
1010.0
《
失衡与重塑——百年变局下的中国与世界经济
》
售價:NT$
602.0
《
不被定义的年龄:积极年龄观让我们更快乐、健康、长寿
》
售價:NT$
352.0
內容簡介:
本书共10 章,分为四大部分。
部分(第1~4 章)主要围绕如何提高软件的开发质量和效率展开,详细讲述了单元测试的常用工具和实践,并展开阐述了持续集成、持续交付、持续部署等概念;
第二部分(第5~6 章)详细讲解两个常用的mock 工具——Mockito 和Powermock,通过实例详尽地讲解了它们的语法规则和使用场景,目的是让开发者在不修改软件源代码和程序结构的前提下尽可能确保软件具备可测试性;
第三部分(第7~8 章)详细讲述两个行为驱动开发工具(功能测试)Concordion 和Cucumber,这两个工具可以帮助我们很好地完成功能测试、验收测试、回归测试等工作;
第四部分(第9~10 章)综合前面三部分的知识点,并引入代码风格检查、静态代码分析、第三方依赖安全性检查、企业内部私服的原理和搭建、Ansible 自动化软件部署工具、Jenkins Pipeline 等知识,帮助读者构建完整的CI/CD 流程。
關於作者:
心蓝,某外资零售银行电子渠道高级开发总监、技术专家,有超过十年的系统设计、一线开发经验。对团队管理、项目管理有自己独到的见解。拥有多年的移动网关通讯研发经验,以及移动互联网开发与产品运营、云计算、B2C电子商务平台开发经验,热衷于技术分享,目前已录制20余套技术视频,在互联网上广泛传播。所著图书包括《Java高并发编程详解:多线程与架构设计》、《Java高并发编程详解:深入理解并发核心库》等。
目錄 :
【部分 提高软件的开发质量及开发效率】
第1章 单元测试与TDD3
1.1 单元测试的定义3
1.2 单元测试的好处5
1.3 单元测试的FIRST原则6
1.4 JUnit实践10
1.5 测试驱动开发14
1.5.1 红–绿–重构15
1.5.2 TDD工作流程16
1.5.3 TDD实践17
1.6 本章总结26
第2章 Hamcrest:优雅强大的对象匹配器27
2.1 Hamcrest概述27
2.2 Hamcrest对象匹配器详解34
2.2.1 org.hamcrest.core34
2.2.2 org.hamcrest.beans37
2.2.3 org.hamcrest.collection38
2.2.4 org.hamcrest.number41
2.2.5 org.hamcrest.text42
2.2.6 org.hamcrest.xml43
2.3 自定义对象匹配器44
2.4 REST-Assured的使用47
2.5 本章总结51
第3章 Git及Git工作流程52
3.1 快速上手Git53
3.2 文件状态生命周期及Git中的对象56
3.2.1 文件状态生命周期56
3.2.2 Git中的对象59
3.3 Git与本地仓库64
3.3.1 add与commit命令64
3.3.2 log命令65
3.3.3 diff与blame命令65
3.3.4 Git的分支及操作66
3.3.5 stash命令69
3.3.6 reset命令70
3.3.7 标签的操作73
3.3.8 “.gitignore”文件的规则74
3.4 Git与远程仓库75
3.4.1 远程仓库的管理76
3.4.2 远程仓库的操作77
3.4.3 本地仓库与远程仓库的其他协同操作78
3.5 Git的配置和别名操作81
3.5.1 Git的基本配置81
3.5.2 Git的别名82
3.6 Git工作流程82
3.7 本章总结85
第4章 持续集成与持续交付86
4.1 什么是持续集成87
4.2 什么是持续交付89
4.3 什么是持续部署91
4.4 本章总结94
【第二部分 mock:构造测试对象的替身】
第5章 Mockito:热门的mock工具97
5.1 mock技术97
5.2 快速上手Mockito98
5.2.1 引入Mockito98
5.2.2 测试用户登录99
5.3 创建mock“替身”对象实例104
5.3.1 四种mock方式104
5.3.2 深度mock108
5.4 Stubbing语法详解111
5.4.1 when...thenReturn和doReturn...when语法111
5.4.2 doNothing...when语法112
5.4.3 when...thenThrow和doThrow...when语法115
5.4.4 when...thenAnswer和doAnswer...when语法117
5.4.5 多值返回的Stubbing语法117
5.4.6 级联风格的Stubbing语法118
5.4.7 when...thenCallRealMethod和doCallRealMethod...when语法119
5.5 Spying详解120
5.6 Argument对象匹配器详解123
5.6.1 Argument对象匹配器在Stubbing语法中的使用123
5.6.2 自定义Argument对象匹配器125
5.6.3 集成Hamcrest中的对象匹配器126
5.7 Mockito Verify与ArgumentsCaptor127
5.7.1 Mockito Verify操作127
5.7.2 VerificationMode详解130
5.7.3 ArgumentCaptor与@Captor132
5.8 InjectMocks134
5.9 Mockito对BDD风格的支持135
5.10 Mockito Inline136
5.11 本章总结138
第6章 Powermock详解140
6.1 快速入门Powermock141
6.1.1 为什么需要Powermock141
6.1.2 搭建Powermock环境141
6.1.3 Powermock入门143
6.2 Powermock如何通过mock操作局部变量145
6.3 Powermock如何通过mock操作静态方法148
6.4 Powermock如何通过mock操作final修饰的类151
6.5 Powermock如何通过mock操作私有方法152
6.6 Powermock中的Spying154
6.7 Powermock与JaCoCo155
6.8 本章总结160
【第三部分 行为驱动开发】
第7章 Concordion:测试即文档163
7.1 Concordion的开发流程164
7.2 搭建Concordion环境174
7.2.1 搭建Concordion基础环境174
7.2.2 Concordion与Maven进行集成176
7.3 Concordion的指令详解178
7.4 在Specification文档中处理Java返回的结果183
7.4.1 简单的数据类型183
7.4.2 复杂的数据类型188
7.5 table和list中的指令191
7.5.1 使用table标签批量执行测试用例191
7.5.2 使用list标签批量执行测试用例193
7.6 拾遗补漏194
7.7 本章总结196
第8章 Cucumber:热门的行为驱动开发工具197
8.1 Cucumber简介198
8.1.1 快速上手Cucumber199
8.1.2 Cucumber与IntelliJ IDEA集成204
8.1.3 Cucumber的执行流程207
8.2 Feature文档的语法基础:Gherkin208
8.2.1 什么是Gherkin209
8.2.2 Gherkin语法基础209
8.2.3 Gherkin中的注释212
8.2.4 Gherkin对其他语系的支持213
8.3 Step Definitions详解214
8.3.1 步骤的匹配215
8.3.2 通过正则表达式捕获参数217
8.3.3 通过Cucumber表达式捕获参数220
8.3.4 使用Java 8 Lambda表达式定义步骤方法223
8.3.5 Step Definitions的常见问题225
8.3.6 Cucumber中Step的执行过程227
8.4 Cucumber进阶228
8.4.1 Background关键字228
8.4.2 Data Table229
8.4.3 Scenario Outline关键字233
8.4.4 Doc String 235
8.4.5 Tagging & Hooks236
8.5 CucumberOptions239
8.6 Cucumber整合Selenium进行Web自动化测试241
8.7 Cucumber功能测试报告246
8.8 本章总结248
【第四部分 遇见Jenkins】
第9章 Jenkins的基础知识253
9.1 Jenkins的安装及快速构建Job253
9.1.1 Jenkins的安装253
9.1.2 Jenkins Job的快速构建258
9.2 配置Jenkins261
9.2.1 Jenkins的基本配置261
9.2.2 为Jenkins配置集群节点264
9.2.3 Jenkins插件管理268
9.2.4 基于Role Strategy配置权限270
9.2.5 构建Maven项目类型的Job272
9.3 Jenkins参数化及可视化构建274
9.3.1 参数化构建275
9.3.2 可视化构建280
9.4 Jenkins构建Pipeline Job282
9.4.1 Groovy Pipeline Script282
9.4.2 Jenkinsfile285
9.4.3 Blue Ocean286
9.5 本章总结288
第10章 基于Jenkins构建持续集成与持续交付290
10.1 Spring Boot开发RESTful应用291
10.1.1 搭建Spring Boot环境291
10.1.2 代码检查与分析295
10.1.3 基于测试驱动开发完成应用程序开发303
10.1.4 使用Cucumber开发自动化功能测试程序311
10.2 Nexus私服317
10.2.1 搭建Nexus私服318
10.2.2 私服仓库配置319
10.3 RedHat Ansible326
10.3.1 Ansible的安装326
10.3.2 Ad-hoc及Playbook简介330
10.3.3 Ansible模板引擎jinjia2333
10.3.4 通过Playbook逐步完成软件自动化部署335
10.4 创建Jenkins Pipeline343
10.4.1 创建CI/CD Jenkins Pipeline Job343
10.4.2 GitHub WebHook自动触发Jenkins Job348
10.5 本章总结351
內容試閱 :
为什么写这本书
技术在变,市场在变,需求在变,用户的诉求在变,一切都在快速变化着。因此,在某个固定时间进行软件发布的传统作业方式已经远远无法适应当下急速变化的世界。
越来越多的公司和团队在追求以快的速度交付软件,像谷歌这样的互联网公司甚至在几分钟之内就可以提交一个“具备交付能力的”软件版本,而国内的阿里则能够在一小时以内发布一整套全量功能的淘宝、天猫商城为用户服务。
“快”的前提是高质量的交付,而高质量的交付则离不开一套稳健的持续(continuous)环境。所谓的持续,并不是一直运行(always running),而是具备持续运行(always ready to run)的能力。因此,基于“持续”概念衍生出了持续集成(CI)、持续交付和持续部署(CD)等工程实践,在每一个细分领域中又诞生了琳琅满目的工具和工具组合,如何在如此之多的工具中挑选出合适的工具集来构建自己的“持续”环境呢?这正是本书所要解决的问题。只有真正理解了什么是持续集成、持续交付和持续部署,才能理解单元测试、功能测试,以及集成环境中每一个环节的作用和重要性。
本书将从理论、实践的角度出发,为读者介绍CI/CD环节中不同工具的使用和整合,使读者能够快速搭建起适合自己团队的持续构建环境。
【读者对象】本书适合以下读者:
●从事软件测试的人员
●Java程序开发者
●从事Java系统架构的架构师
●开设Java课程的专业院校和培训机构
【如何阅读本书】
本书包含四大部分,共10章。
部分(第1~4章)主要围绕如何提高软件的开发质量和效率展开,详细讲述了单元测试的常用工具和实践,并给出了持续集成、持续交付、持续部署等概念;
第二部分(第5~6章)详细讲解了两个常用的mock工具——Mockito和Powermock,通过实例详尽地讲解了它们的语法规则和使用场景,目的是让开发者在尽可能不修改软件源代码和程序结构的前提下确保软件具备可测试性;
第三部分(第7~8章)为读者详细讲述了两个行为驱动开发工具(功能测试)Concordion和Cucumber的使用,这两个工具可以帮助我们很好地完成功能测试、验收测试、回归测试等工作;
第四部分(第9~10章)综合前面三部分的知识点,并引入代码风格检查、静态代码分析、第三方依赖安全性检查、企业内部私服的原理和搭建、Ansible自动化软件部署工具、Jenkins Pipeline等知识,构建了一个完整的CI/CD流程。
书中出现的代码及工具均已上传至GitHub,读者可以下载参阅。
随书代码-I:https://github.com/wangwenjun/cicd
随书代码-II:https://github.com/wangwenjun/cicd-powermock
Jenkins插件:https://github.com/wangwenjun/jenkins_plugins
综合实例:https://github.com/wangwenjun/simple_application
综合实例功能测试:https://github.com/wangwenjun/simple_application_acceptance
Ansible相关脚本:https://github.com/wangwenjun/ansible_tutorial
【在本店购书可免费获得“心蓝说Java”配套视频课程,关注“华章计算机”回复“69020”加入读者群,了解获取方式】