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

Java微服務(wù)測試

Java微服務(wù)測試

定 價:¥89.00

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

ISBN: 9787121367106 出版時間: 2019-07-01 包裝: 平裝
開本: 16開 頁數(shù): 304 字數(shù):  

內(nèi)容簡介

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

作者簡介

  Alex Soto Buen 是一位 Java 大師,也是一位在Red Hat 工作的軟件工程師,其主要研發(fā)提升測試體驗的工具。他十分喜愛 Java、軟件自動化,并且深信開源軟件。Alex 是NoSQLUnit 項目的創(chuàng)建者以及 JSR374(JSON 處理的Java API)專家組的一員,并且是一位國際講師。Andy Gumbrecht 是 Tomitribe 的高級軟件工程師。從12 歲起他就對任何和計算機相關(guān)的事情感興趣,并在那時幸運地擁有了一臺高達 1KB 內(nèi)存的計算機Sinclair ZX81。那時候許多早期的程序示例都是表單上的二進制碼,需要人工手動輸入計算機中。這十分容易出錯,因此Andy 很快就找到了他的兄弟John,讓他作為自己的測試者來保證輸入的正確性。這也是他**次意識到測試代碼的重要性。接觸機器碼和BASIC 使得Andy 在代碼優(yōu)化方面的能力持續(xù)提升。在成為英國軍隊的皇家工程師之后不久,他回到德國的大學(xué)繼續(xù)深造。之后他進入 PROVOXSytemplanung GmbH 實習(xí)并在那里工作了很多年,主要開發(fā)政府軟件。Andy 從 2007 年開始進行開源軟件的研發(fā)并在 2009 年加入了 Apache OpenEJB和Apache TomEE Application Server 項目,現(xiàn)在他已經(jīng)成為項目管理委員會的一員。Jason Porter在多個領(lǐng)域工作過,使用過Java、PHP、Ruby、C# 以及JavaScript。他認為自己主要是一名后端開發(fā)者,但是其實他擁有應(yīng)對任何編程領(lǐng)域問題的能力。在Red Hat,Jason 參與過多個不同的框架、網(wǎng)站和集成工作。他在美國和世界其他地方做過的演講可以幫助人們更好地理解編程的概念或新的技術(shù)。北京大學(xué)碩士研究生,曾在阿里技術(shù)保障部擔(dān)任系統(tǒng)工程師,后加入靈雀云從事容器云平臺調(diào)度系統(tǒng)和容器網(wǎng)絡(luò)相關(guān)方向的開發(fā),專注于分布式系統(tǒng)和機器學(xué)習(xí)的研究和動向;譯有《Mesos:大數(shù)據(jù)資源調(diào)度與大規(guī)模容器運行*佳實踐》、《GAN:實戰(zhàn)生成對抗網(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 遠程資源組件 11
1.3.4 持久化組件 11
1.4 微服務(wù)單元測試 12
1.4.1 孤立型單元測試 12
1.4.2 聯(lián)合型單元測試 12
總結(jié) 13
第2章 測試下的應(yīng)用14
2.1 準備開始 15
2.2 準備工作 16
2.2.1 Java Development Kit 16
2.2.2 構(gòu)建工具 17
2.2.3 環(huán)境變量 17
2.2.4 集成開發(fā)環(huán)境(IDE) 18
2.3 架構(gòu) 18
2.3.1 游戲服務(wù) 19
2.3.2 評論服務(wù) 22
2.3.3 視頻服務(wù) 24
2.3.4 聚合服務(wù) 26
2.3.5 整體架構(gòu) 27
2.4 應(yīng)用設(shè)計模式 28
2.4.1 解構(gòu) 28
2.4.2 ECB 模式 38
2.4.3 其他模式 40
2.5 設(shè)計決策 42
總結(jié) 42
第3章 微服務(wù)單元測試44
3.1 單元測試技術(shù) 44
3.1.1 聯(lián)合型單元測試 45
3.1.2 測試替身 46
3.1.3 孤立型單元測試 48
3.1.4 微服務(wù)的單元測試 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)用的單元測試 55
3.3.1 YouTubeVideoLinkCreator 測試 55
3.3.2 YouTubeLink 測試 56
3.3.3 Games 測試 58
3.3.4 GamesService 測試 60
3.3.5 GamesResource 測試 63
練習(xí) 68
總結(jié) 68
第4章 微服務(wù)組件測試69
4.1 Arquillian測試框架 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 增加庫和依賴 80
4.3.5 利用Maven 解析器增加復(fù)雜依賴 80
4.3.6 增加服務(wù)實現(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的默認配置 87
4.6.1 容器定義 89
4.6.2 指定容器屬性 89
4.7 使用Arquillian REST擴展 90
4.7.1 Arquillian REST 客戶端擴展 90
4.7.2 Warp REST 擴展91
4.8 使用Arquillian測試Spring應(yīng)用 93
4.8.1 Arquillian Spring 框架擴展 94
4.8.2 測試Spring Boot 應(yīng)用 96
4.9 更復(fù)雜的Arquillian測試 98
4.9.1 測試遠程組件 98
4.9.2 測試資源組件 101
4.9.3 測試領(lǐng)域組件 103
4.9.4 測試持久化組件 103
練習(xí) 106
總結(jié) 106
第5章 微服務(wù)集成測試108
5.1 微服務(wù)架構(gòu)下的集成測試 109
5.1.1 網(wǎng)關(guān)組件層 110
5.1.2 數(shù)據(jù)映射器和倉庫 111
5.2 使用Arquillian持久化擴展進行持久化測試 111
5.2.1 描述式方法 114
5.2.2 過程式方法 116
5.2.3 使用NoSQLUnit 進行持久化測試 121
5.2.4 使用Arquillian 多部署的持久化測試 125
5.2.5 使用Arquillian 序列的持久化測試 126
5.2.6 構(gòu)建腳本的修改 127
5.3 Gamer應(yīng)用的集成測試 128
5.3.1 測試Comments 類 128
5.3.2 測試CommentsGateway 類 131
練習(xí) 137
總結(jié) 137
第6章 契約測試138
6.1 理解契約 138
6.1.1 契約和單體應(yīng)用 139
6.1.2 契約和微服務(wù)應(yīng)用 140
6.1.3 使用集成測試進行驗證 145
6.1.4 什么是契約測試 146
6.1.5 誰負責(zé)契約 146
6.2 工具 149
6.2.1 Pact 150
6.2.2 JVM 語言中的Pact 152
6.2.3 利用Algeron 將Pact JVM 與Arquillian 生態(tài)系統(tǒng)集成 161
6.3 構(gòu)建腳本的修改 168
6.3.1 使用Pact JVM 進行契約測試 168
6.3.2 使用Arquillian Algeron 進行契約測試168
6.4 為Gamer應(yīng)用編寫消費者驅(qū)動的契約測試 170
6.4.1 評論服務(wù)的消費者端 170
6.4.2 評論服務(wù)的生產(chǎn)者端 173
6.5 契約類型總結(jié) 175
練習(xí) 176
總結(jié) 176
第7章 端到端測試177
7.1 端到端測試在整個測試體系中的位置 178
7.2 端到端測試技術(shù) 178
7.2.1 垂直測試 179
7.2.2 水平測試 179
7.3 端到端測試工具介紹 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 端到端測試樣例 181
7.4.1 構(gòu)建微服務(wù) 182
7.4.2 增加構(gòu)建依賴和配置 182
7.4.3 給測試增加@Deployment 注解和@TargetsContainer 注解 189
7.4.4 跨域資源共享 191
7.4.5 使用@ClassRule 處理混合環(huán)境 192
7.4.6 使用@OperateOnDeployment 注解操作部署 197
7.4.7 引入@Drone、頁面對象、@Location 和WebDriver 198
7.4.8 在測試中操作頁面對象 200
7.4.9 運行測試 202
練習(xí) 203
總結(jié) 203
第8章 Docker和測試 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 編寫容器測試 214
8.2.3 編寫集成測試 217
8.2.4 編寫端到端測試 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 并行測試 230
8.6 Arquillian Cube和Algeron 231
8.7 使用容器對象模式 233
8.8 部署測試和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 測試視頻服務(wù)的Dockerfile 247
練習(xí) 249
總結(jié) 249
第9章 服務(wù)虛擬化 250
9.1 什么是服務(wù)虛擬化 250
9.1.1 為什么要使用服務(wù)虛擬化 251
9.1.2 什么時候使用服務(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 對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 定義一個流水線 276
10.4.2 Jenkins 流水線示例 278
總結(jié) 280
附錄A 使用Arquillian Chameleon屏蔽不同類型的容器281

本目錄推薦

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