注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)網(wǎng)絡(luò)與數(shù)據(jù)通信網(wǎng)絡(luò)服務(wù)Java微服務(wù)測(cè)試

Java微服務(wù)測(cè)試

Java微服務(wù)測(cè)試

定 價(jià):¥89.00

作 者: (美)亞歷克斯.索托.布埃諾,安迪.鞏布萊希,詹森.波特
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787121367106 出版時(shí)間: 2019-07-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 304 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書從實(shí)戰(zhàn)出發(fā),介紹微服務(wù)架構(gòu)所帶來(lái)的測(cè)試方面的挑戰(zhàn),以及如何利用新的技術(shù)來(lái)應(yīng)對(duì)這些挑戰(zhàn)。通過(guò)本書,讀者可以學(xué)會(huì)如何編寫微服務(wù)架構(gòu)下的單元測(cè)試、組件測(cè)試、集成測(cè)試以及契約測(cè)試。在此過(guò)程中還會(huì)用到Arquillian、ShrinkWrap、Pact、Selenium、Docker、Hoverfly 等多個(gè)幫助測(cè)試的工具和框架。書中涵蓋大量的代碼和樣例,可以幫助讀者快速上手,并在自己的實(shí)際工作中應(yīng)用這些技術(shù)。本書適合有一定Java 基礎(chǔ)的開(kāi)發(fā)和測(cè)試人員,對(duì)使用其他編程語(yǔ)言的開(kāi)發(fā)者也會(huì)有一定的幫助。

作者簡(jiǎn)介

  Alex Soto Buen 是一位 Java 大師,也是一位在Red Hat 工作的軟件工程師,其主要研發(fā)提升測(cè)試體驗(yàn)的工具。他十分喜愛(ài) Java、軟件自動(dòng)化,并且深信開(kāi)源軟件。Alex 是NoSQLUnit 項(xiàng)目的創(chuàng)建者以及 JSR374(JSON 處理的Java API)專家組的一員,并且是一位國(guó)際講師。Andy Gumbrecht 是 Tomitribe 的高級(jí)軟件工程師。從12 歲起他就對(duì)任何和計(jì)算機(jī)相關(guān)的事情感興趣,并在那時(shí)幸運(yùn)地?fù)碛辛艘慌_(tái)高達(dá) 1KB 內(nèi)存的計(jì)算機(jī)Sinclair ZX81。那時(shí)候許多早期的程序示例都是表單上的二進(jìn)制碼,需要人工手動(dòng)輸入計(jì)算機(jī)中。這十分容易出錯(cuò),因此Andy 很快就找到了他的兄弟John,讓他作為自己的測(cè)試者來(lái)保證輸入的正確性。這也是他**次意識(shí)到測(cè)試代碼的重要性。接觸機(jī)器碼和BASIC 使得Andy 在代碼優(yōu)化方面的能力持續(xù)提升。在成為英國(guó)軍隊(duì)的皇家工程師之后不久,他回到德國(guó)的大學(xué)繼續(xù)深造。之后他進(jìn)入 PROVOXSytemplanung GmbH 實(shí)習(xí)并在那里工作了很多年,主要開(kāi)發(fā)政府軟件。Andy 從 2007 年開(kāi)始進(jìn)行開(kāi)源軟件的研發(fā)并在 2009 年加入了 Apache OpenEJB和Apache TomEE Application Server 項(xiàng)目,現(xiàn)在他已經(jīng)成為項(xiàng)目管理委員會(huì)的一員。Jason Porter在多個(gè)領(lǐng)域工作過(guò),使用過(guò)Java、PHP、Ruby、C# 以及JavaScript。他認(rèn)為自己主要是一名后端開(kāi)發(fā)者,但是其實(shí)他擁有應(yīng)對(duì)任何編程領(lǐng)域問(wèn)題的能力。在Red Hat,Jason 參與過(guò)多個(gè)不同的框架、網(wǎng)站和集成工作。他在美國(guó)和世界其他地方做過(guò)的演講可以幫助人們更好地理解編程的概念或新的技術(shù)。北京大學(xué)碩士研究生,曾在阿里技術(shù)保障部擔(dān)任系統(tǒng)工程師,后加入靈雀云從事容器云平臺(tái)調(diào)度系統(tǒng)和容器網(wǎng)絡(luò)相關(guān)方向的開(kāi)發(fā),專注于分布式系統(tǒng)和機(jī)器學(xué)習(xí)的研究和動(dòng)向;譯有《Mesos:大數(shù)據(jù)資源調(diào)度與大規(guī)模容器運(yùn)行*佳實(shí)踐》、《GAN:實(shí)戰(zhàn)生成對(duì)抗網(wǎng)絡(luò)》等書。

圖書目錄

第1章 微服務(wù)概述1
1.1 什么是微服務(wù),為什么要使用微服務(wù)2
1.1.1 為什么要使用微服務(wù) 3
1.1.2 什么是微服務(wù) 5
1.1.3 持續(xù)集成、持續(xù)部署和Docker 6
1.2 微服務(wù)網(wǎng)絡(luò)及其功能 7
1.2.1 微服務(wù)網(wǎng)絡(luò) 7
1.2.2 微服務(wù)特性 8
1.3 微服務(wù)架構(gòu) 9
1.3.1 資源組件 10
1.3.2 業(yè)務(wù)領(lǐng)域組件 10
1.3.3 遠(yuǎn)程資源組件 11
1.3.4 持久化組件 11
1.4 微服務(wù)單元測(cè)試 12
1.4.1 孤立型單元測(cè)試 12
1.4.2 聯(lián)合型單元測(cè)試 12
總結(jié) 13
第2章 測(cè)試下的應(yīng)用14
2.1 準(zhǔn)備開(kāi)始 15
2.2 準(zhǔn)備工作 16
2.2.1 Java Development Kit 16
2.2.2 構(gòu)建工具 17
2.2.3 環(huán)境變量 17
2.2.4 集成開(kāi)發(fā)環(huán)境(IDE) 18
2.3 架構(gòu) 18
2.3.1 游戲服務(wù) 19
2.3.2 評(píng)論服務(wù) 22
2.3.3 視頻服務(wù) 24
2.3.4 聚合服務(wù) 26
2.3.5 整體架構(gòu) 27
2.4 應(yīng)用設(shè)計(jì)模式 28
2.4.1 解構(gòu) 28
2.4.2 ECB 模式 38
2.4.3 其他模式 40
2.5 設(shè)計(jì)決策 42
總結(jié) 42
第3章 微服務(wù)單元測(cè)試44
3.1 單元測(cè)試技術(shù) 44
3.1.1 聯(lián)合型單元測(cè)試 45
3.1.2 測(cè)試替身 46
3.1.3 孤立型單元測(cè)試 48
3.1.4 微服務(wù)的單元測(cè)試 49
3.2 工具 51
3.2.1 JUnit 51
3.2.2 AssertJ 52
3.2.3 Mockito 53
3.2.4 構(gòu)建腳本的修改 54
3.3 編寫Gamer應(yīng)用的單元測(cè)試 55
3.3.1 YouTubeVideoLinkCreator 測(cè)試 55
3.3.2 YouTubeLink 測(cè)試 56
3.3.3 Games 測(cè)試 58
3.3.4 GamesService 測(cè)試 60
3.3.5 GamesResource 測(cè)試 63
練習(xí) 68
總結(jié) 68
第4章 微服務(wù)組件測(cè)試69
4.1 Arquillian測(cè)試框架 70
4.2 @RunWith(Arquillian.class)注解72
4.3 ShrinkWrap 工具類 75
4.3.1 利用ShrinkWrap 構(gòu)建歸檔文件 76
4.3.2 給ShrinkWrap 歸檔文件增加內(nèi)容 77
4.3.3 添加資源 79
4.3.4 增加庫(kù)和依賴 80
4.3.5 利用Maven 解析器增加復(fù)雜依賴 80
4.3.6 增加服務(wù)實(shí)現(xiàn) 82
4.4 寫一次代碼,然后復(fù)用 83
4.5 構(gòu)建腳本的修改 84
4.5.1 定義Maven 依賴 85
4.5.2 定義Gradle 依賴 86
4.6 覆蓋Arquillian的默認(rèn)配置 87
4.6.1 容器定義 89
4.6.2 指定容器屬性 89
4.7 使用Arquillian REST擴(kuò)展 90
4.7.1 Arquillian REST 客戶端擴(kuò)展 90
4.7.2 Warp REST 擴(kuò)展91
4.8 使用Arquillian測(cè)試Spring應(yīng)用 93
4.8.1 Arquillian Spring 框架擴(kuò)展 94
4.8.2 測(cè)試Spring Boot 應(yīng)用 96
4.9 更復(fù)雜的Arquillian測(cè)試 98
4.9.1 測(cè)試遠(yuǎn)程組件 98
4.9.2 測(cè)試資源組件 101
4.9.3 測(cè)試領(lǐng)域組件 103
4.9.4 測(cè)試持久化組件 103
練習(xí) 106
總結(jié) 106
第5章 微服務(wù)集成測(cè)試108
5.1 微服務(wù)架構(gòu)下的集成測(cè)試 109
5.1.1 網(wǎng)關(guān)組件層 110
5.1.2 數(shù)據(jù)映射器和倉(cāng)庫(kù) 111
5.2 使用Arquillian持久化擴(kuò)展進(jìn)行持久化測(cè)試 111
5.2.1 描述式方法 114
5.2.2 過(guò)程式方法 116
5.2.3 使用NoSQLUnit 進(jìn)行持久化測(cè)試 121
5.2.4 使用Arquillian 多部署的持久化測(cè)試 125
5.2.5 使用Arquillian 序列的持久化測(cè)試 126
5.2.6 構(gòu)建腳本的修改 127
5.3 Gamer應(yīng)用的集成測(cè)試 128
5.3.1 測(cè)試Comments 類 128
5.3.2 測(cè)試CommentsGateway 類 131
練習(xí) 137
總結(jié) 137
第6章 契約測(cè)試138
6.1 理解契約 138
6.1.1 契約和單體應(yīng)用 139
6.1.2 契約和微服務(wù)應(yīng)用 140
6.1.3 使用集成測(cè)試進(jìn)行驗(yàn)證 145
6.1.4 什么是契約測(cè)試 146
6.1.5 誰(shuí)負(fù)責(zé)契約 146
6.2 工具 149
6.2.1 Pact 150
6.2.2 JVM 語(yǔ)言中的Pact 152
6.2.3 利用Algeron 將Pact JVM 與Arquillian 生態(tài)系統(tǒng)集成 161
6.3 構(gòu)建腳本的修改 168
6.3.1 使用Pact JVM 進(jìn)行契約測(cè)試 168
6.3.2 使用Arquillian Algeron 進(jìn)行契約測(cè)試168
6.4 為Gamer應(yīng)用編寫消費(fèi)者驅(qū)動(dòng)的契約測(cè)試 170
6.4.1 評(píng)論服務(wù)的消費(fèi)者端 170
6.4.2 評(píng)論服務(wù)的生產(chǎn)者端 173
6.5 契約類型總結(jié) 175
練習(xí) 176
總結(jié) 176
第7章 端到端測(cè)試177
7.1 端到端測(cè)試在整個(gè)測(cè)試體系中的位置 178
7.2 端到端測(cè)試技術(shù) 178
7.2.1 垂直測(cè)試 179
7.2.2 水平測(cè)試 179
7.3 端到端測(cè)試工具介紹 180
7.3.1 Arquillian Cube 180
7.3.2 Arquillian Drone 180
7.3.3 Arquillian Graphene 2 181
7.3.4 JMeter 181
7.3.5 Cukes in Space 181
7.4 端到端測(cè)試樣例 181
7.4.1 構(gòu)建微服務(wù) 182
7.4.2 增加構(gòu)建依賴和配置 182
7.4.3 給測(cè)試增加@Deployment 注解和@TargetsContainer 注解 189
7.4.4 跨域資源共享 191
7.4.5 使用@ClassRule 處理混合環(huán)境 192
7.4.6 使用@OperateOnDeployment 注解操作部署 197
7.4.7 引入@Drone、頁(yè)面對(duì)象、@Location 和WebDriver 198
7.4.8 在測(cè)試中操作頁(yè)面對(duì)象 200
7.4.9 運(yùn)行測(cè)試 202
練習(xí) 203
總結(jié) 203
第8章 Docker和測(cè)試 204
8.1 Docker生態(tài)系統(tǒng)下的工具 205
8.1.1 Docker 205
8.1.2 Docker Machine 207
8.1.3 Docker Compose 208
8.2 Arquillian Cube 210
8.2.1 設(shè)置Arquillian Cube 211
8.2.2 編寫容器測(cè)試 214
8.2.3 編寫集成測(cè)試 217
8.2.4 編寫端到端測(cè)試 221
8.3 REST API 224
8.4 Arquillian Drone和Graphene 225
8.4.1 Arquillian Cube 和Arquillian Drone 的集成 225
8.4.2 Arquillian Cube 和Arquillian Graphene 的集成 228
8.5 并行測(cè)試 230
8.6 Arquillian Cube和Algeron 231
8.7 使用容器對(duì)象模式 233
8.8 部署測(cè)試和Kubernetes 240
8.9 構(gòu)建腳本的修改 245
8.9.1 Arquillian Cube Docker 245
8.9.2 Arquillian Cube Docker JUnit 規(guī)則246
8.9.3 Arquillian Cube Kubernetes 246
8.9.4 Arquillian Cube OpenShift 247
8.10 測(cè)試視頻服務(wù)的Dockerfile 247
練習(xí) 249
總結(jié) 249
第9章 服務(wù)虛擬化 250
9.1 什么是服務(wù)虛擬化 250
9.1.1 為什么要使用服務(wù)虛擬化 251
9.1.2 什么時(shí)候使用服務(wù)虛擬化 252
9.2 使用Hoverfly模擬服務(wù)響應(yīng) 253
9.2.1 Hoverfly 模式 253
9.2.2 JUnit Hoverfly 255
9.2.3 配置Hoverfly .257
9.3 構(gòu)建腳本的修改 258
9.4 對(duì)Gamer應(yīng)用使用服務(wù)虛擬化 258
總結(jié) 260
第10章 微服務(wù)下的持續(xù)交付 262
10.1 什么是持續(xù)交付 263
10.2 微服務(wù)架構(gòu)和持續(xù)交付 264
10.3 持續(xù)交付的編排 266
10.3.1 使用Jenkins 267
10.3.2 Jenkins 流水線 267
10.3.3 確定性部署 271
10.4 Jenkins 272
10.4.1 定義一個(gè)流水線 276
10.4.2 Jenkins 流水線示例 278
總結(jié) 280
附錄A 使用Arquillian Chameleon屏蔽不同類型的容器281

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.afriseller.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)