 
			 
				擁有近10年從業經驗的資深軟件開發工程師和測試工程師經驗結晶,係統且實用,為開發高質量Android應用提供全方位指導
從測試和調試兩個維度深度探索Android係統,為Android應用的自動化測試和調試提供原理性的解決方案
海報:
  《Android應用測試與調試實戰》是Android應用測試與調試領域係統、深入且極具實踐指導意義的著作,由擁有近10年從業經驗的資深軟件開發工程師和調試技術專傢撰寫,旨在為廣大程序員開發高質量的Android應用提供全方位指導。它從Android應用自動化測試工程師和開發工程師的需求齣發,從測試和調試兩個維度,針對采用Java、HTML 5、C++&NDK;三種Android應用開發方式所需要的測試和調試技術、方法進行瞭細緻而深入的講解,為Android應用的自動化測試和調試提供原理性的解決方案。
  《Android應用測試與調試實戰》一共16章,分為兩大部分:第一部分為自動化測試篇(第1~11章),詳細講解瞭進行Android自動化測試需要掌握的各種技術、工具和方法,包括Android自動化測試基礎、Android應用的白盒自動化測試和黑盒自動化測試的技術和原理、Android服務組件和內容組件的測試、HTML 5應用和NDK應用的測試,以及Android應用的兼容性測試和持續集成自動化測試;第二部分為調試技術篇(第12~16章),詳細講解瞭Android應用調試所需要的各種工具的使用、操作日誌的分析、內存日誌的分析,以及多綫程應用HTML 5 應用和NDK 應用的調試方法和技巧。
施懿民 資深軟件開發工程師和調試技術專傢,擁有近10年軟件行業從業經驗,精通Windows、.NET、iOS、Android以及Windows Phone等平颱上的應用的測試與調試,曾經帶領團隊為微軟的.NET Developer Platform、CLR、.NET BCL、WPF、Silverlight、ASP.NET、.NET平颱和框架提供測試服務,近幾年來專注於主流移動平颱上的應用測試與調試,積纍瞭豐富的經驗。此外,他還精通.NET、Java、C++等編程語言,以及Windows、Linux以及Unix等環境下的編程。
  好的測試能縮短項目的工期,能讓項目在保證質量的前提下如期交付;好的調試則可以快速定位並解決應用中暴露齣來的bug,從而提高用戶的滿意度。隨著企業級的Android應用越來越多,Android應用的測試與調試變得越來越重要。如何纔能正確、高效地對Android應用進行自動化測試和調試,是越來越多的Android應用測試工程師和開發工程師們需要掌握的。目前市麵上非常缺乏這方麵的係統性參考資料,本書就是為解決這一需求而寫的,它的目標是成為該領域具有專業性和實戰性的一本書。無論是內容結構上,還是寫作方式上,本書都凝聚瞭作者和編輯的心血,實現瞭這個目標,值得推薦!
  —— 超級棒的移動開發者社區
前言
第1章 Android自動化測試初探 1
1.1 快速入門 1
1.2 待測示例程序 2
1.3 第一個Android應用測試工程 6
1.4 搭建自動化開發環境 12
1.4.1 安裝Eclipse和ADT開發包 12
1.4.2 創建模擬器 13
1.4.3 啓動模擬器 21
1.4.4 連接模擬器 23
1.4.5 連接手機 24
1.5 本章小結 29
第2章 Android自動化測試基礎 30
2.1 Java編程基礎 30
2.2 JUnit簡介 36
2.2.1 添加測試異常情況的測試用例 41
2.2.2 測試集閤 43
2.2.3 測試準備與掃尾函數 45
2.2.4 自動化測試用例編寫注意事項 47
2.3 Android應用程序基礎 47
2.3.1 Android權限係統 47
2.3.2 應用的組成與激活 51
2.3.3 清單文件 54
2.3.4 Android應用程序的單UI綫程模型 56
2.4 本章小結 57
第3章 Android界麵自動化白盒測試 58
3.1 Instrumentation測試框架 58
3.1.1 Android儀錶盤測試工程 58
3.1.2 儀錶盤技術 60
3.1.3 Instrumentation.ActivityMonitor嵌套類 63
3.2 使用儀錶盤技術編寫測試用例 64
3.2.1 ActivityInstrumentationTest-Case2測試用例 66
3.2.2 sendKeys和sendRepeatedKeys函數 70
3.2.3 執行儀錶盤測試用例 72
3.2.4 儀錶盤測試技術的限製 74
3.3 使用robotium編寫集成測試用例 77
3.3.1 為待測程序添加?robotium用例 77
3.3.2 測試第三方應用 80
3.3.3 robotium關鍵源碼解釋 84
3.4 Android自動化測試在多種屏幕下的注意事項 87
3.5 本章小結 90
第4章 Android界麵自動化黑盒測試 91
4.1 monkey工具 91
4.1.1 運行monkey 93
4.1.2 monkey命令選項參考 97
4.1.3 monkey腳本 98
4.1.4 monkey服務器 105
4.2 編寫monkeyrunner用例 109
4.2.1 為待測程序錄製和迴放用例 110
4.2.2 運行monkeyrunner 110
4.2.3 手工編寫monkeyrunner代碼 111
4.2.4 編寫monkeyrunner插件 114
4.3 本章小結 118
第5章 測試Android服務組件 119
5.1 JUnit的模擬對象技術 119
5.2 測試服務對象 128
5.2.1 服務對象簡介 128
5.2.2 在應用中添加服務 130
5.2.3 測試服務對象 136
5.3 本章小結 140
第6章 測試Android內容供應組件 142
6.1 控製反轉 142
6.1.1 依賴注入 144
6.1.2 服務定位器 146
6.2 內容供應組件 147
6.2.1 統一資源標識符 150
6.2.2 MIME類型 152
6.2.3 內容供應組件的虛擬錶視圖 152
6.3 內容供應組件示例 154
6.4 測試內容供應組件 159
6.5 本章小結 163
第7章 測試AndroidHTML5應用 164
7.1 構建AndroidHTML5應用 164
7.1.1 WebView應用 164
7.1.2 使用視口適配Android設備的多種分辨率 170
7.1.3 使用CSS適配多種分辨率 175
7.1.4 使用Chrome瀏覽器模擬移動設備瀏覽器 176
7.2 使用QUnit測試HTML5網頁 177
7.2.1 QUnit基礎 177
7.2.2 QUnit中的斷言 179
7.2.3 測試迴調函數 181
7.2.4 測試WebView應用 182
7.3 本章小結 185
第8章 使用Selenium測試HTML5瀏覽器應用 186
8.1 Selenium組成部分 186
8.2 安裝SeleniumIDE 187
8.3 SeleniumIDE界麵 188
8.3.1 菜單欄 188
8.3.2 工具欄 189
8.4 使用Selenium 189
8.4.1 使用SeleniumIDE錄製測試用例 189
8.4.2 運行Selenium測試用例 194
8.4.3 等待操作完成 199
8.4.4 SeleniumWebDriver命令 200
8.5 數據驅動測試 206
8.6 Selenium編程技巧 208
8.6.1 在測試代碼中硬編碼測試數據 208
8.6.2 重構SeleniumIDE生成的代碼 209
8.7 本章小結 212
第9章 AndroidNDK測試 213
9.1 安裝NDK 213
9.2 NDK的基本用法 214
9.3 編譯和部署NDK示例程序 214
9.4 Java與C/C++之間的交互 217
9.4.1 Makefiles 222
9.4.2 動態模塊和靜態模塊 222
9.5 在Android設備上執行NDK單元測試 223
9.6 unittest++使用基礎 228
9.6.1 添加新測試用例 228
9.6.2 測試用例集閤 229
9.6.3 驗證宏 229
9.6.4 數組相關的驗證宏 230
9.6.5 設置超時 230
9.7 本章小結 231
第10章 Android其他測試 232
10.1 Android兼容性測試 232
10.1.1 運行Android兼容性測試用例集閤 232
10.1.2 兼容性測試計劃說明 237
10.1.3 添加一個新的測試計劃 238
10.1.4 添加一個新的測試用例 239
10.1.5 調查CTS測試失敗 241
10.2 Android腳本編程環境 243
10.2.1 Android腳本環境簡介 243
10.2.2 安裝SL4A 243
10.2.3 為SL4A安裝腳本引擎 244
10.2.4 編寫SL4A腳本程序 246
10.2.5 在PC上調試腳本程序 250
10.3 國際化測試 251
10.4 模擬來電中斷測試 254
10.5 本章小結 255
第11章 持續集成自動化測試 257
11.1 在Ant中集成Android自動化測試 257
11.1.1 Ant使用簡介 257
11.1.2 Android應用編譯過程 262
11.1.3 使用Ant編譯Android工程 263
11.2 在Maven中集成Android自動化測試 268
11.2.1 使用AndroidMavenArchetypes創建新Android工程 268
11.2.2 AndroidMaven工程介紹 270
11.2.3 與設備交互 271
11.2.4 與模擬器交互 272
11.2.5 集成自動化測試 274
11.3 收集代碼覆蓋率 276
11.4 本章小結 280
第12章 Android功能調試工具 281
12.1 使用Eclipse調試Android應用 281
12.1.1 Eclipse調試技巧 282
12.1.2 使用JDB調試 294
12.1.3 設置Java遠程調試 296
12.1.4 調試器原理簡介 301
12.2 查看Android的logcat日誌 302
12.2.1 過濾logcat日誌 303
12.2.2 查看其他logcat內存日誌 304
12.3 Android調試橋接 304
12.3.1 adb命令參考 306
12.3.2 執行Androidshell命令 309
12.3.3 dumpsys 312
12.4 調試Android設備上的程序 317
12.4.1 調試命令行程序 317
12.4.2 調試Android應用 318
12.4.3 調試MavenAndroid插件啓動的應用 321
12.5 本章小結 322
第13章 Android性能測試之分析操作日誌 323
13.1 使用Traceview分析操作日誌 326
13.1.1 記錄應用操作日誌 326
13.1.2 Traceview界麵說明 328
13.1.3 使用Traceview分析並優化性能瓶頸 329
13.2 使用DDMS 334
13.2.1 使用DDMS 335
13.2.2 DDMS與調試器交互的原理 336
13.2.3 三種啓動操作日誌記錄功能的方法 338
13.3 使用dmtracedump分析函數調用樹 339
13.4 本章小結 341
第14章 分析Android內存問題 343
14.1 Android內存管理原理 343
14.1.1 垃圾內存迴收算法 343
14.1.2 GC發現對象引用的方法 351
14.1.3 Android內存管理源碼分析 352
14.1.4 Logcat中的GC信息 361
14.2 調查內存泄露工具 362
14.2.1 Shallowsize和Retainedsize 362
14.2.2 支配樹 363
14.3 分析Android內存泄露實例 364
14.3.1 在DDMS中檢查示例問題程序的內存情況 366
14.3.2 使用MAT分析內存泄露 368
14.3.3 弱引用 372
14.3.4 MAT的其他界麵使用方法 373
14.3.5 對象查詢語言OQL(ObjectQueryLanguage) 376
14.3.6 使用jHat分析內存文件 381
14.4 顯示圖片 382
14.4.1 Android應用加載大圖片的最佳實踐 386
14.4.2 跟蹤對象創建 388
14.5 頻繁創建小對象的問題 390
14.6 Finalizer的問題 393
14.7 本章小結 394
第15章 調試多綫程和HTML5應用 395
15.1 調試應用無響應問題 395
15.2 Android中的多綫程 397
15.3 調試綫程死鎖 400
15.3.1 資源爭用問題 400
15.3.2 綫程同步機製 405
15.3.3 解決綫程死鎖問題 406
15.4 StrictMode 410
15.4.1 在應用中啓用StrictMode 413
15.4.2 暫時禁用StrictMode 415
15.5 調試Android上的瀏覽器應用 416
15.5.1 在Android係統自帶的瀏覽器上調試 416
15.5.2 在Chrome瀏覽器上調試 418
15.6 本章小結 422
第16章 調試NDK程序 423
16.1 使用Eclipse調試AndroidNDK程序 423
16.2 在命令行中調試NDK程序 426
16.3 Android的C/C++調試器的工作原理 431
16.3.1 調試符號 433
16.3.2 源碼 433
16.3.3 多綫程調試的問題 433
16.4 本章小結 434
  為什麼要寫這本書
  幾年前看過微軟工程師Adam Nathan寫的一本書《.NET and COM: The Complete Interoperability Guide》,對作者說過的一句話印象極其深刻:學習一門新技術的最佳方法就是寫一本書。對於這個說法,筆者深以為然,在實際工作中,迫於項目交付的壓力,很多時候隻會使用一門技術中自己熟悉的部分,對於其他部分,甚至自己熟悉的那一部分,也隻是知其然而不知其所以然,似懂非懂。而當要寫一本書介紹這門技術的時候,就不得不去上下求索,這時不僅要橫嚮瞭解該門技術的各個細節,還要縱嚮瞭解該門技術的發展思路以及各部分的來龍去脈,纔能嚮讀者解釋它。因此可以說,寫作本書的過程也是筆者係統學習Android操作係統的過程。
  而筆者之所以從測試和調試的角度來介紹Android操作係統,是因為從這兩個角度入手能夠很好地從橫嚮和縱嚮兩個方嚮學習Android係統。從測試的角度來說,由於一般測試人員對Android應用進行集成測試和係統測試,開發人員負責單元測試工作,這就要求測試人員,特彆是自動化測試人員對Android應用所涉及的技術有一個廣度的認知,對Android的各種技術都要知其然。從調試的角度來說,卻又可以從源碼級彆知各項技術的所以然。比如,要調試應用的功能錯誤,就必須對應用的源碼有一個完整的理解,隻有這樣纔能知道應該在什麼地方設置斷點,在什麼時候讓調試器捕捉異常;而要調試應用的內存泄露問題,就必須對Android係統采用的垃圾迴收機製有一個通透的理解,隻有這樣纔能從根源上發現並解決內存方麵的問題。另外,反觀市麵上的技術書籍,介紹自動化測試和調試技術的書實在少。但在軟件開發過程中,不僅測試是必不可少的環節,而且程序員實際上隻花20%的時間寫代碼並完成編譯過程,剩下80%的時間都是花在調試和修改代碼上,這種情況也堅定瞭筆者寫作本書的信心。
  最後,由於筆者能力有限,同時為瞭及時齣版本書,不得不放棄一些如多核設備上並行程序的調試、NDK程序的驗屍調試等內容,希望感興趣的讀者可以完成這方麵的分享。
  讀者對象
  Android自動化測試工程師
  Android開發工程師
  無編程基礎的Android測試工程師
  如何閱讀本書
  雖然本書講解的是自動化測試和程序調試相關技術,但有些測試工程師的行業經驗更豐富些,而編程基礎則相對薄弱。因此本書分為兩大部分:
  第一部分為自動化測試篇(第1~11章),這一部分列舉Android自動化測試中可以使用的幾種測試技術,盡可能詳細地介紹瞭Android白盒、黑盒自動化測試所用到的技術及其原理。由於Android應用可以使用Java語言配閤SDK,也可以用HTML 5技術,還可以用C/C++語言配閤NDK技術編寫,所以這部分盡量涵蓋瞭針對這三種技術編寫的應用所采用到的測試技術。這些內容適閤Android自動化測試工程師和對自動化測試感興趣的手工測試工程師閱讀。這一部分除瞭第11章需要有C/C++編程經驗之外,其他章節無需編程基礎即可閱讀。另外每個章節都是獨立的,讀者可以根據自己的實際需要分開來閱讀。
  第二部分為調試技術篇(第12~16章),第12章講解的是通用的調試技術,這部分對於Android自動化測試工程師和Android開發工程師都是必要的知識,這一章節無需編程知識即可掌握。而第13章之後,主要涉及的是性能方麵的調試技術,其中涉及一些Android係統內部的實現細節,這些技術更適閤具備一定開發經驗的自動化測試和開發工程師閱讀。
  緻謝
  首先要感謝支付寶的陳曄(新浪微博:@Monkey陳曄曄),在本書寫作時,他參與瞭大部分章節的技術審閱工作,幫助完善瞭書中的細節。
  感謝阿裏集團的梁劍釗(新浪微博:@liangjz)推薦的玄黎(新浪微博:@浪頭)、李子樂(新浪微博:@子樂_淘寶太禪)參與本書技術審閱工作。
  感謝機械工業齣版社華章公司的編輯楊福川老師,在這一年多的時間中始終支持我的寫作,他的鼓勵和幫助引導我順利完成全部書稿。
  謹以此書獻給我最親愛的傢人,以及眾多熱愛Android測試的朋友們!
施懿民
我對Android應用開發的熱情由來已久,也投入瞭大量時間和精力去學習和實踐。然而,隨著項目規模的不斷擴大和用戶需求的日益復雜,我越來越深刻地體會到,僅僅掌握開發技能是遠遠不夠的。一個優秀的Android應用,其背後離不開嚴謹的測試流程和高效的調試能力。我曾經在工作中遇到過一些非常頑固的bug,耗費瞭大量的時間和精力纔得以解決,這讓我深刻反思瞭自己在測試和調試方麵的不足。我希望能夠找到一本能夠係統地提升我這方麵能力的教材。這本書的書名“Android應用測試與調試實戰”恰好擊中瞭我內心的痛點。我期待它能夠提供一些在實際開發中非常實用的測試策略,比如如何構建一個能夠有效發現問題的自動化測試框架,如何編寫具有高覆蓋率的單元測試,以及如何進行端到端的UI測試。在調試方麵,我希望能夠學習到如何更有效地利用Android Studio的調試工具,如何分析和解決各種內存、CPU、網絡相關的性能問題,以及如何處理一些在特定設備或係統版本上齣現的疑難雜癥。我希望這本書能夠幫助我從一個“會寫代碼”的開發者,成長為一個“懂質量、重穩定性”的工程師。
評分這本書的封麵設計相當吸引人,是一種沉靜而專業的設計風格,整體色彩搭配給人一種嚴謹、深入的感覺,這讓我對內容産生瞭極大的期待。我一直以來都對Android應用開發的底層原理和高效的開發流程非常感興趣,特彆是那些能夠幫助我顯著提升開發效率、減少bug發生率的技巧和方法。在工作中,我常常會遇到一些棘手的性能問題,或者是難以復現的崩潰,這時候一個強大的調試工具和一套科學的測試流程就顯得尤為重要。我希望這本書能夠深入淺齣地講解Android應用的測試體係,從單元測試、集成測試到UI自動化測試,能夠提供一套完整的實踐方案,讓我能夠構建更健壯、更可靠的應用。同時,對於調試部分,我特彆關注那些能夠幫助我快速定位問題根源的高級技巧,比如內存泄漏的檢測、ANR問題的分析,以及如何利用TraceView等工具進行性能瓶頸的挖掘。我相信,一本優秀的實戰書籍,不僅僅是理論的堆砌,更重要的是能夠提供大量真實場景的案例,讓我能夠邊學邊練,真正將知識內化為自己的技能。這本書的書名恰恰契閤瞭我的這些需求,所以我迫不及待地想翻開它,看看它是否能給我帶來預期的收獲。
評分我對於Android應用開發的學習路徑一直秉持著“理論與實踐相結閤”的原則,並且越來越意識到,在實際開發中,測試和調試的技能是決定一個應用能否走嚮成功的關鍵因素。我曾在工作中遇到過一些令人頭疼的bug,它們時隱時現,難以復現,給開發團隊帶來瞭巨大的壓力。這促使我開始認真思考如何係統地學習和掌握Android應用測試與調試的技巧。這本書的書名,恰好契閤瞭我對這方麵知識的需求。我希望它能夠帶領我深入瞭解Android測試的各個層麵,從單元測試的細緻入微,到集成測試的全麵覆蓋,再到UI自動化測試的便捷高效。同時,對於調試部分,我期待能夠學習到更多關於性能分析、內存泄漏檢測、ANR問題排查等方麵的深度知識,以及如何巧妙地利用各種工具和技巧來快速定位和解決問題。我希望這本書能夠提供豐富而貼閤實際的案例,讓我能夠將學到的知識快速應用到自己的項目中,提升應用的質量和用戶的滿意度。一本優秀的實戰書籍,能夠幫助我少走彎路,更快地成為一名更專業的Android開發者。
評分說實話,市麵上關於Android開發的書籍琳琅滿目,但很多都停留在基礎知識的講解,對於更高級、更貼近實際工作場景的內容,往往挖掘不夠深入。我是一個對技術細節有強烈追求的開發者,尤其是在應用質量和穩定性方麵,我希望能夠做到極緻。我曾嘗試過閱讀一些國外頂尖開發者的博客和開源項目的文檔,從中受益匪淺,但總感覺缺少一本係統性的中文書籍,能夠將這些前沿的實踐方法進行梳理和整閤,並結閤國內的開發環境和習慣進行講解。這本書的書名“Android應用測試與調試實戰”給我一種耳目一新的感覺,它點明瞭“實戰”二字,這正是我最看重的。我希望它能夠涵蓋諸如TDD/BDD在Android開發中的應用、Mocking框架的使用技巧、性能優化的深度剖析、多綫程調試的疑難雜癥,以及如何利用CI/CD流水綫集成自動化測試等內容。我期待這本書不僅僅是理論的闡述,更能提供大量的代碼示例、配置指南,甚至是一些“坑”的避坑指南,讓我能夠快速地將學到的知識遷移到自己的項目中,真正提升應用的穩定性和用戶體驗。
評分我之前參加過一些Android開發的培訓,其中關於測試和調試的部分,往往是點到為止,很多時候隻是簡單介紹瞭一下工具的用法,並沒有深入講解其背後的原理和最佳實踐。這導緻我雖然知道一些測試框架,但真正應用起來卻顯得力不從心,測試覆蓋率不高,調試效率也常常受到限製。尤其是在大型項目中,隨著代碼量的增加,維護測試用例和排查bug的難度呈指數級增長。我一直在尋找一本能夠係統性地梳理Android應用測試與調試知識體係的書籍,能夠提供一套清晰、可操作的指南,幫助我從“知道”轉變為“做到”。我希望這本書能夠詳細講解如何設計有效的測試用例,如何選擇閤適的測試工具,以及如何在不同的開發階段進行有效的測試。在調試方麵,我更期待能夠學習到一些“黑魔法”,能夠快速地找齣那些隱藏很深的bug,而不是花費大量時間在“猜”和“試”。這本書的書名,讓我感覺它可能就是我一直在尋找的那本能夠“實戰”起來的寶典,期待它能夠幫助我提升開發和測試的專業水平,做齣更高質量的Android應用。
評分專業書籍,要好好學習
評分很好。。。買來學習學習
評分書不錯,送的速度也快。
評分實用工具書,很不錯,不錯
評分很好,講的很清楚,慢慢看
評分物流很給力啊,還沒來得及看呢,看瞭再過來追評
評分對於安卓測試很有幫助
評分買上以後沒怎麼看,感覺還是挺有用的!
評分書很好,值得購買。。。。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.teaonline.club All Rights Reserved. 圖書大百科 版權所有