-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Java微服務測試:基于Arquillian、Hoverfly、AssertJ、JUnit、Selenium與Mockito

( 簡體 字)
作者:劉夢馨類別:1. -> 程式設計 -> JAVA -> Java
譯者:
出版社:電子工業出版社Java微服務測試:基于Arquillian、Hoverfly、AssertJ、JUnit、Selenium與Mockito 3dWoo書號: 51439
詢問書籍請說出此書號!

缺書
NT售價: 445

出版日:7/1/2019
頁數:282
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121367106
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯者序
微服務架構的理念日漸深入人心,然而隱藏在其架構優勢下的還有對傳統軟件開發模式的強烈沖擊。如何在測試環境中部署種類繁多的微服務?如何對復雜的交互、多樣的場景進行完整覆蓋?單元測試、組件測試、集成測試以及端到端測試又有怎樣的不同?有沒有專門針對微服務架構的測試框架和工具?本書就將告訴你上述問題的答案。
本書介紹了大量Java 微服務測試領域最為前沿的技術。本書從微服務架構講起,介紹了測試在這種新型架構下所面臨的問題和挑戰,之后逐一介紹了單元測試、組件測試、集成測試、契約測試和端到端測試領域針對這些問題和挑戰的應對方法。本書還提供了一個完整的微服務應用作為樣例,從代碼層面介紹如何編寫不同領域的測試,給作者提供了上手實踐的方法。本書的幾位作者都是在測試領域內耕耘多年的老兵,相信他們寶貴的經驗能給你帶來收獲。
本書主要介紹Java 微服務測試,但是其中的方法和理念對于使用任何一門編程語言的開發和測試人員都會有很大的幫助。希望本書能夠幫助你更好地改善工作中開發和測試的流程,提升整體的代碼質量。
愿你的程序永遠不出bug。


序言
在編程的早期是沒有任何框架的,測試散落在代碼的各個角落,以確保重要的軟件功能的確是經過測試驗證的。在那個時候,存儲空間是十分寶貴且有限的。
后來,單元測試從一個流行概念演化成了軟件測試事實上的標準。存儲空間的問題也得到了很大的緩解,再也不能成為不編寫測試代碼的借口。如今,幾乎所有的開發者都已經早早開始學習并使用單元測試的方法,并且單元測試已經成為軟件開發成功的基礎。
今天的企業級應用已經不可能僅依賴簡單的單元測試來保證功能的完備。如今的客戶也變得更加苛刻,要求也越來越高。如果企業想要充分滿足客戶的要求,就需要在開發的過程中使用多種測試策略。
本書一方面介紹如何解決當下企業測試的問題,另一方面介紹如何應對未來將微服務引入應用架構所帶來的測試挑戰,這將會給讀者帶來更大的價值。
我們花了很長時間來編寫本書:最初它只是一個關于某個框架的小冊子,現如今它已經成為一個介紹大量測試策略供讀者選擇的具有10 章且內容豐富的圖書。隨著技術的不斷演進,我們在這個過程中收獲頗多。為了能給讀者提供盡可能多的選擇,我們盡可能地聚焦于策略、方法論和解決方案,而不是簡潔的代碼和看起來令人興奮然而最終卻不可用的應用。如果通過本書你可以對如何測試自己的應用有新的想法,那么我們的目的就達到了。
我們十分感謝你愿意花時間來讀這樣一本書,希望你能夠喜歡我們的寫作風格。

致謝
本書由3 位獨立開發者完成,在這里讓我們感謝彼此的理解和支持,感謝每個人的辛苦工作和反饋。
十分感謝Arquillian 項目的每一位參與者,尤其是Aslak Knutsen、Dan Allen、Bartosz Majsak 和Matous Jobanek。在你讀完這本書的時候,就會了解他們在這個偉大的項目上投入了多少精力,以及這個項目會如何顯著地幫助你改善軟件測試的質量。
開源軟件(OSS)社區提供了很多極其有用的工具來幫助每個人更有效地進行測試。這些項目中的大部分都是由那些不知疲倦且無人知曉的開發者在他們的空閑時間完成的,在這里我們要表達對他們這份難能可貴工作的敬意。我們同時希望作為讀者的你,也能夠在每個合適的機會對這些“不可思議”的開發者表達謝意。
感謝Daniel Bryant 和Marcin Grzejszczak 花費時間對契約測試部分進行討論。
在我們徘徊不前之際,Cynthia Kane 和Tiffany Taylor 兩位編輯給我們提供了前進的動力,幫助我們完成了這個工作。利用空閑時間寫書是一項很有挑戰性的任務,十分感謝Cynthia 和Tiffany 幫助我們完成了這項任務。同時也要感謝幫助這本書從可能變為現實的Manning 出版社的每一位工作人員:出版者Marjan Bace 以及相關編輯和產品團隊。

Joshua White 提供了大量技術上的論證,感謝他解決了本書質量上的問題。他對我們的測試進行了測試!
感謝每一位花費時間閱讀并提供反饋的讀者,他們幫助我們完成了最終的圖書產品。這些讀者包括我們的技術同行評審員:Aleksandar Dragosavljevic′、Alex Jacinto、Anshuman Purohit、Boris Vasile、Conor Redmond、Eddu Melendez Gonzales、Ethan A. Rivett、Fabrizio Cucci、Gualtiero Testa、Henrik L?vborg、Jan Paul Buchwald、Jonathan Thoms、Jose Diaz、Kiran Anantha、Leo van den Berg、Mari Machado、Nilesh Thali、Piotr Gliz′niewicz、Robert Walsh、Yagiz Erkan 和Zorodzayi Mukuya。
最后,要感謝家人幫助我們度過了寫書過程中一個個漫長的周末以及交稿前的忙亂和寫作過程中無數起起伏伏的時光。沒有你們的支持,我們將無法完成這項任務!


關于本書
如今,測試已經成為每個開發者在軟件開發過程中必不可少的一部分。然而原來并非如此,測試框架是在軟件開發出現很長時間之后才出現的。由于現在已經有了足夠多關于為什么需要進行軟件測試的理論,因此本書并不會關注這一部分。對我們來說,如何進行軟件測試以及如何將這個理念帶給其他人是更為重要的話題。本書主要關注如何測試這一部分,并提供了應用代碼的示例以幫助你快速上手。
本書中的很多內容都可以在互聯網上找到,然而在人們真正需要去尋找這些資料的時候,卻常常并不一定能聯網查閱,即使聯網也不一定能及時搜集或找到所需的內容(或者特意選擇不聯網)。如果使所有這些人們需要的信息匯聚到一起供人直接查閱使用,那將是非常方便的事情。我們希望本書就可以作為這樣一種資源。
測試是一個相當通用的術語,但同時測試也是一系列技術的組合,如果想發揮它的最大威力,你需要對相應的技術進行很好的組合。我們收集了大量的熱門主題和組件,并且將其以一種最為合適的方式進行組織并展示給讀者。
誰應該閱讀本書
我們很想說“所有人”都應該閱讀本書,然而實際并非如此。我們的目標用戶是企業級的Java(Jave EE 和 Spring)應用開發者。如果你就是這樣的開發者,那么本書將會幫助你更深入地進行單元測試。
如果你并不是一個專門的Java 開發者,本書依然可能包含你感興趣的內容。本書提供的大部分信息都是和編程語言無關的,并可以應用于多個不同的領域。
正如書名所示,我們的關注點是正在不斷興起的以微服務為基礎的架構。但是我們也提供了大量和更通用的企業級測試相關的信息,因此不必擔心本書遺漏了這些內容—書中只是更深入地介紹了微服務相關的內容。
路線圖
本書分為10 章,下面是所包含內容的速覽:
? 第 1 章介紹與微服務相關的術語以及為什么要使用微服務。
? 第 2 章介紹閱讀本書預先需要掌握的知識以及如何構建代碼,幫助你在閱讀本書之后的過程中節省時間。
? 第 3 章會帶你快速瀏覽通用的單元測試技術、方法論以及最佳實踐。
? 第 4 章深入介紹 Arquillian 測試框架。
? 第 5 章展示如何創建一個相互依賴的微服務應用的集成測試。
? 第 6 章討論消費者驅動的契約測試。
? 第 7 章探索端到端測試技術和工具。
? 第 8 章介紹利用Docker 創建可復用的測試環境。
? 第 9 章探索服務虛擬化的概念和實現。
? 第 10章討論持續交付和使用 Jenkins構建流水線。
我們以一種循序漸進地介紹各個基本主題的方式來安排章節的順序。每一章都會承接上一章的內容,當然你也可以按照自己的興趣來安排閱讀的順序。本書選擇 Java 作為實現示例的編程語言,但是本書所討論的原則可以被應用到其他語言和框架中。
內容簡介:

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

第1章 微服務概述1
1.1 什么是微服務,為什么要使用微服務2
1.1.1 為什么要使用微服務 3
1.1.2 什么是微服務 5
1.1.3 持續集成、持續部署和Docker 6
1.2 微服務網絡及其功能 7
1.2.1 微服務網絡 7
1.2.2 微服務特性 8
1.3 微服務架構 9
1.3.1 資源組件 10
1.3.2 業務領域組件 10
1.3.3 遠程資源組件 11
1.3.4 持久化組件 11
1.4 微服務單元測試 12
1.4.1 孤立型單元測試 12
1.4.2 聯合型單元測試 12
總結 13
第2章 測試下的應用14
2.1 準備開始 15
2.2 準備工作 16
2.2.1 Java Development Kit 16
2.2.2 構建工具 17
2.2.3 環境變量 17
2.2.4 集成開發環境(IDE) 18
2.3 架構 18
2.3.1 游戲服務 19
2.3.2 評論服務 22
2.3.3 視頻服務 24
2.3.4 聚合服務 26
2.3.5 整體架構 27
2.4 應用設計模式 28
2.4.1 解構 28
2.4.2 ECB 模式 38
2.4.3 其他模式 40
2.5 設計決策 42
總結 42
第3章 微服務單元測試44
3.1 單元測試技術 44
3.1.1 聯合型單元測試 45
3.1.2 測試替身 46
3.1.3 孤立型單元測試 48
3.1.4 微服務的單元測試 49
3.2 工具 51
3.2.1 JUnit 51
3.2.2 AssertJ 52
3.2.3 Mockito 53
3.2.4 構建腳本的修改 54
3.3 編寫Gamer應用的單元測試 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
練習 68
總結 68
第4章 微服務組件測試69
4.1 Arquillian測試框架 70
4.2 @RunWith(Arquillian.class)注解72
4.3 ShrinkWrap 工具類 75
4.3.1 利用ShrinkWrap 構建歸檔文件 76
4.3.2 給ShrinkWrap 歸檔文件增加內容 77
4.3.3 添加資源 79
4.3.4 增加庫和依賴 80
4.3.5 利用Maven 解析器增加復雜依賴 80
4.3.6 增加服務實現 82
4.4 寫一次代碼,然后復用 83
4.5 構建腳本的修改 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應用 93
4.8.1 Arquillian Spring 框架擴展 94
4.8.2 測試Spring Boot 應用 96
4.9 更復雜的Arquillian測試 98
4.9.1 測試遠程組件 98
4.9.2 測試資源組件 101
4.9.3 測試領域組件 103
4.9.4 測試持久化組件 103
練習 106
總結 106
第5章 微服務集成測試108
5.1 微服務架構下的集成測試 109
5.1.1 網關組件層 110
5.1.2 數據映射器和倉庫 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 構建腳本的修改 127
5.3 Gamer應用的集成測試 128
5.3.1 測試Comments 類 128
5.3.2 測試CommentsGateway 類 131
練習 137
總結 137
第6章 契約測試138
6.1 理解契約 138
6.1.1 契約和單體應用 139
6.1.2 契約和微服務應用 140
6.1.3 使用集成測試進行驗證 145
6.1.4 什么是契約測試 146
6.1.5 誰負責契約 146
6.2 工具 149
6.2.1 Pact 150
6.2.2 JVM 語言中的Pact 152
6.2.3 利用Algeron 將Pact JVM 與Arquillian 生態系統集成 161
6.3 構建腳本的修改 168
6.3.1 使用Pact JVM 進行契約測試 168
6.3.2 使用Arquillian Algeron 進行契約測試168
6.4 為Gamer應用編寫消費者驅動的契約測試 170
6.4.1 評論服務的消費者端 170
6.4.2 評論服務的生產者端 173
6.5 契約類型總結 175
練習 176
總結 176
第7章 端到端測試177
7.1 端到端測試在整個測試體系中的位置 178
7.2 端到端測試技術 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 構建微服務 182
7.4.2 增加構建依賴和配置 182
7.4.3 給測試增加@Deployment 注解和@TargetsContainer 注解 189
7.4.4 跨域資源共享 191
7.4.5 使用@ClassRule 處理混合環境 192
7.4.6 使用@OperateOnDeployment 注解操作部署 197
7.4.7 引入@Drone、頁面對象、@Location 和WebDriver 198
7.4.8 在測試中操作頁面對象 200
7.4.9 運行測試 202
練習 203
總結 203
第8章 Docker和測試 204
8.1 Docker生態系統下的工具 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 設置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 構建腳本的修改 245
8.9.1 Arquillian Cube Docker 245
8.9.2 Arquillian Cube Docker JUnit 規則246
8.9.3 Arquillian Cube Kubernetes 246
8.9.4 Arquillian Cube OpenShift 247
8.10 測試視頻服務的Dockerfile 247
練習 249
總結 249
第9章 服務虛擬化 250
9.1 什么是服務虛擬化 250
9.1.1 為什么要使用服務虛擬化 251
9.1.2 什么時候使用服務虛擬化 252
9.2 使用Hoverfly模擬服務響應 253
9.2.1 Hoverfly 模式 253
9.2.2 JUnit Hoverfly 255
9.2.3 配置Hoverfly .257
9.3 構建腳本的修改 258
9.4 對Gamer應用使用服務虛擬化 258
總結 260
第10章 微服務下的持續交付 262
10.1 什么是持續交付 263
10.2 微服務架構和持續交付 264
10.3 持續交付的編排 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
總結 280
附錄A 使用Arquillian Chameleon屏蔽不同類型的容器281
序: