发表于2024-11-23
Android應用測試與調試實戰 pdf epub mobi txt 電子書 下載 2024
擁有近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應用測試與調試實戰 pdf epub mobi txt 電子書 下載