編輯推薦
業界知名的測試專傢,多本暢銷書作者
移動測試工具全覆蓋
Monkey、MonkeyRunner、Robotium、uiautomator、Appium
-移動測試流程全覆蓋
操作係統、係統調試、自動化腳本開發、測試用例批量執行、持續集成
-移動自動化測試框架全實例講解
-移動客戶端性能全實例剖析
移動終端性能指標
移動端性能測試工具
LoadRunner在移動端性能測試的應用
內容簡介
本書全麵講解瞭移動平颱測試方麵的技術、技巧、工具和測試用例等實戰知識。內容涵蓋主流的測試工具,包括JUnit、Monkey、MonkeyRunner、Robotium、UIAutomator、Appium以及性能測試利器LoadRunner、手機端性能監控工具Emmagee等;重點講解移動平颱的主要實戰技術,如單元測試、功能測試、性能測試、UI測試、手遊測試、自動化測試、測試用例管理、持續集成、腳本錄製等。書中結閤實例對各個工具進行深入講解,真正做到學以緻用。本書既是一本真正幫助讀者學習移動測試中用到的所有技術的實戰教程,也是一本名副其實的、貼近實戰的移動端測試指南。
本書適閤測試初學者、測試工程師、測試經理、移動開發人員和遊戲開發人員學習藉鑒,也可以作為大專院校相關專業師生和培訓學校的教學用書。
作者簡介
於湧,畢業於北京大學計算機係,先後擔高級程序員、測試分析師、高級測試經理等職位。擁有二十年豐富的開發、測試及管理經驗。現緻力於軟件測試理論和實踐研究,尤其擅長自動化測試工具應用、性能測試和單元測試等。曾為多個大型軟件公司、高校企事業和專業培訓機構提供軟件測試、性能測試、安全測試、移動測試、自動化測試等理論和相關工具應用方麵的谘詢、培訓和實施指導工作,具有豐富的實踐和教學經驗。多本軟件測試暢銷書的作者。
目錄
第1章 Android係統基礎內容介紹 1
1.1 Android係統介紹 2
1.2 Android係統架構 2
1.3 Android權限係統 4
1.4 Android相關的一些屬性簡介 4
1.5 搭建Android開發環境 4
1.5.1 JDK的安裝與配置 5
1.5.2 Android SDK的安裝 8
1.5.3 Eclipse的安裝 11
1.5.4 ADT的安裝與配置 12
1.5.5 集成版本的下載 15
1.6 創建模擬器 15
1.7 創建一個Android項目 20
1.7.1 創建一個新的Android
項目 20
1.7.2 如何填寫Android項目
信息 20
1.7.3 配置Android項目
和活動信息 21
1.7.4 設計程序的原型UI 24
1.7.5 依據UI原型實現Android
項目的布局文件 24
1.7.6 布局文件內容的理解 26
1.7.7 Android項目的源代碼
實現 27
1.7.8 AndroidManifest.xml文件
講解 30
1.7.9 運行Android項目 33
第2章 JUnit框架基礎 37
2.1 JUnit框架介紹 38
2.2 JUnit在Android開發中的應用 39
2.2.1 單元測試的重要性 39
2.2.2 單元測試實施者 39
2.2.3 單元測試測試哪些內容 40
2.2.4 單元測試不測試哪些
內容 40
2.2.5 創建基於Android的測試
項目 40
2.3 應用JUnit對Android項目進行
單元測試 42
2.3.1 JUnit基於Android項目
TestCase的應用 42
2.3.2 JUnit基於Android項目
TestSuite的應用 50
第3章 ADB命令 57
3.1 Android調試橋介紹 58
3.2 ADB相關指令實例講解 60
3.2.1 adb devices指令實例
講解 60
3.2.2 adb install指令實例
講解 62
3.2.3 adb uninstall指令實例
講解 63
3.2.4 adb pull指令實例講解 67
3.2.5 adb push指令實例講解 70
3.2.6 adb shell指令實例講解 73
3.2.7 adb shell dumpsys battery
指令實例講解 75
3.2.8 adb shell dumpsys WiFi
指令實例講解 76
3.2.9 adb shell dumpsys power
指令實例講解 77
3.2.10 adb shell dumpsys telephony.
registry指令實例講解 78
3.2.11 adb shell cat /proc/cpuinfo指令實例講解 79
3.2.12 adb shell cat /proc/meminfo
指令實例講解 80
3.2.13 adb shell cat /proc/iomem
指令實例講解 80
3.2.14 獲取手機型號指令實例
講解 81
3.2.15 獲取手機處理器信息
指令實例講解 81
3.2.16 獲取手機內存信息指令
實例講解 82
3.2.17 獲取手機屏幕分辨率
信息指令實例講解 82
3.2.18 獲取手機係統版本信息
指令實例講解 83
3.2.19 獲取手機內核版本信息
指令實例講解 83
3.2.20 獲取手機運營商信息
指令實例講解 83
3.2.21 獲取手機網絡類型信息
指令實例講解 83
3.2.22 獲取手機串號信息指令
實例講解 84
3.2.23 adb shell df指令實例
講解 84
3.2.24 adb shell dmesg指令實例
講解 84
3.2.25 adb shell dumpstate指令
實例講解 86
3.2.26 adb get-serialno指令實例
講解 87
3.2.27 adb get-state指令實例
講解 87
3.2.28 adb logcat指令實例
講解 88
3.2.29 adb bugreport指令實例
講解 90
3.2.30 adb jdwp指令實例
講解 91
3.2.31 adb start-server指令實例
講解 92
3.2.32 adb kill-server指令實例
講解 92
3.2.33 adb forward指令實例
講解 92
3.2.34 am指令實例講解 93
3.2.35 pm指令實例講解 94
3.3 手機模擬器相關的一些操作命令
實例講解 95
3.3.1 模擬器上模擬手機來電
命令實例講解 95
3.3.2 模擬器上模擬發送短信
命令實例講解 98
3.3.3 模擬器上模擬網絡相關
命令實例講解 98
3.3.4 修改模擬器的大小比例
相關命令實例講解 100
3.3.5 模擬器的其他命令及
如何退齣模擬器控製颱 100
3.4 模擬器相關命令實例講解 101
3.4.1 創建安卓虛擬設備命令
實例講解 103
3.4.2 重命名模擬器命令實例
講解 107
3.4.3 查看模擬器命令實例
講解 108
3.4.4 刪除模擬器命令實例
講解 109
3.4.5 啓動模擬器命令實例
講解 109
3.5 創建安卓項目相關命令實例
講解 110
3.6 基於控製颱命令行相關命令使用
指導 112
第4章 Monkey工具使用 115
4.1 Monkey工具簡介 116
4.2 Monkey演示示例 116
4.2.1 第一個Monkey示例(針對
日曆應用程序) 116
4.2.2 如何查看Monkey執行
過程信息 118
4.2.3 如何保持設定各類事件
執行比例 129
4.3 Monkey相關參數講解 130
4.3.1 -s參數的示例講解 131
4.3.2 -p參數的示例講解 132
4.3.3 --throttle參數的示例
講解 133
4.3.4 --pct-touch
參數
的示例講解 133
4.3.5 --pct-motion 參數
的示例講解 133
4.3.6 --pct-trackball
參數的示例講解 133
4.3.7 --pct-nav 參數
的示例講解 134
4.3.8 --pct-majornav
參數的示例講解 134
4.3.9 --pct-syskeys
參數的示例講解 134
4.3.10 --pct-appswitch
參數的示例講解 135
4.3.11 --pct-anyevent
參數的示例講解 135
4.3.12 --hprof參數的示例講解
135
4.3.13 --ignore-crashes參數的
示例講解 135
4.3.14 --ignore-timeouts參數的
示例講解 136
4.3.15 --ignore-security-exceptions
參數的示例講解 136
4.3.16 --kill-process-after-error
參數的示例講解 136
4.3.17 --monitor-native-crashes
參數的示例講解 137
4.3.18 --wait-dbg參數的示例
講解 137
4.3.19 Monkey綜閤示例 137
4.4 Monkey相關命令介紹 137
4.4.1 DispatchPointer命令
介紹 149
4.4.2 DispatchTrackball命令介紹
151
4.4.3 DispatchKey命令介紹 152
4.4.4 DispatchFlip命令介紹 153
4.4.5 LaunchActivity命令
介紹 153
4.4.6 LaunchInstrumentation命令
介紹 153
4.4.7 UserWait命令介紹 153
4.4.8 RunCmd命令介紹 153
4.4.9 Tap命令介紹 154
4.4.10 ProfileWait命令介紹 154
4.4.11 DeviceWakeUp命令
介紹 154
4.4.12 DispatchString命令
介紹 154
4.5 Monkey如何執行腳本 154
第5章 MonkeyRunner工具使用 159
5.1 MonkeyRunner工具簡介 160
5.2 MonkeyRunner安裝部署 160
5.3 MonkeyRunner演示示例 163
5.3.1 第一個MonkeyRunner示例
(針對遊戲) 163
5.3.2 如何利用monkey_recorder.py
進行腳本錄製 163
5.3.3 如何利用monkey_playback.py
進行腳本迴放 169
5.3.4 如何利用monkeyhelp.html
文件獲取讀者想要的 170
5.4 MonkeyRunner腳本手工編寫 171
5.4.1 MonkeyRunner關鍵類
介紹 171
5.4.2 MonkeyRunner腳本
編寫 172
5.4.3 MonkeyRunner腳本
執行 173
5.5 MonkeyRunner樣例腳本 174
5.5.1 按Home鍵 174
5.5.2 設備重啓 175
5.5.3 設備喚醒 175
5.5.4 按菜單鍵 175
5.5.5 輸入內容 175
5.5.6 控製多個設備 175
5.5.7 對比截屏和已存在
圖片 175
5.5.8 單擊操作 176
5.5.9 安裝APK包 176
5.5.10 卸載APK包 176
5.5.11 啓動Activity 176
第6章 Robotium自動化測試框架 177
6.1 Robotium自動化測試框架
簡介 178
6.2 Robotium環境搭建 178
6.3 第一個Robotium示例(針對記事本
應用程序) 178
6.3.1 記事本樣例下載 178
6.3.2 記事本樣例項目導入到
Eclipse 179
6.3.3 記事本樣例項目運行 182
6.3.4 記事本樣例功能介紹 184
6.3.5 Robotium測試用例項目
結構 184
6.3.6 Robotium測試用例實現
代碼 185
6.3.7 Robotium測試用例代碼
解析 187
6.3.8 測試用例設計思路
分析 194
6.3.9 Robotium測試用例執行
過程 195
6.4 用Robotium實現對APK或有源碼
的項目實施測試 200
6.4.1 基於有源代碼應用的
Robotium自動化測試 200
6.4.2 基於APK包應用的
Robotium測試項目 207
6.5 用Robotium Recorder錄製
腳本 214
6.5.1 Robotium Recorder插件的
安裝 214
6.5.2 應用Robotium Recorder
錄製有源代碼的項目 217
6.5.3 應用Robotium Recorder
錄製APK包應用 223
6.6 Robotium獲取控件的方法 232
6.6.1 根據控件的ID獲取
控件 232
6.6.2 根據光標位置獲取
控件 238
6.7 測試用例腳本的批量運行 241
6.7.1 測試用例管理 241
6.7.2 測試用例執行 249
6.7.3 生成測試報告 254
6.8 持續集成 259
6.8.1 什麼叫持續集成 259
6.8.2 持續集成環境部署 260
6.8.3 創建Jenkins job 264
6.8.4 生成build.xml文件 268
6.8.5 安裝測試包和被測
試包 272
6.8.6 Jenkins配置測試報告 273
6.8.7 驗證持續集成成果 275
6.8.8 關於持續集成思路
拓展 278
第7章 自動化測試工具—UI Automator
實戰 281
7.1 為什麼選擇UI Automator 282
7.2 UI Automator演示示例 282
7.2.1 UI Automator Viewer工具使用介紹 283
7.2.2 應用UI Automator等完成
單元測試用例設計基本
步驟 288
7.2.3 理解UI Automator Viewer工具捕獲的元素屬性
信息 291
7.2.4 UI Automator運行環境
搭建過程 292
7.2.5 編寫第一個UI Automator
測試用例 296
7.2.6 測試用例實現代碼及其
講解 302
7.2.7 查看已安裝的SDK
版本 308
7.2.8 創建build.xml等相關
文件 309
7.2.9 編譯生成JAR文件 311
7.2.10 上傳生成JAR文件到
手機 313
7.2.11 運行測試用例並分析測試
結果 313
7.3 UI Automator主要的對象類 316
7.3.1 UiDevice類及其接口調用
實例 316
7.3.2 UiSelector類及其接口調用
實例 318
7.3.3 UiObject類及其接口調用
實例 320
7.3.4 UiCollection類及其接口
調用實例 326
7.3.5 UiWatcher類及其接口調用
實例 327
7.3.6 UiScrollable類及其接口
調用實例 329
7.3.7 Configurator類及其接口
調用實例 332
7.4 UI Automator常見問題解答 333
7.4.1 UI Automator對中文支持
問題 333
7.4.2 UI Automator如何執行
單個類裏的單個測試
用例 334
7.4.3 UI Automator如何執行
單個類裏的多個測試
用例 336
7.4.4 UI Automator腳本
示例 338
第8章 自動化測試工具—Appium
實戰 341
8.1 為什麼選擇Appium 342
8.1.1 Appium的理念 342
8.1.2 Appium的設計 342
8.1.3 Appium的相關概念 343
8.2 Appium環境部署 344
8.2.1 Windows環境部署 344
8.2.2 Appium樣例程序的
下載 354
8.2.3 Selenium類庫的下載 355
8.2.4 建立測試工程 355
8.3 Appium元素定位的3個利器 371
8.3.1 應用UIAutomator Viewer
獲得元素信息的實例 371
8.3.2 應用Inspector獲得元素
信息的實例 378
8.3.3 應用Chrome瀏覽器ADB
插件獲得元素信息的
實例 382
8.4 多種界麵控件的定位方法
介紹 386
8.4.1 根據ID定位元素 386
8.4.2 根據Name定位元素 386
8.4.3 根據ClassName定位
元素 386
8.4.4 根據Content-desc定位
元素 387
8.4.5 根據Xpath定位元素 387
8.5 多種界麵控件的操作方法
介紹 388
8.5.1 長按操作 389
8.5.2 拖曳操作 391
8.5.3 滑動操作 394
8.5.4 多點操作 396
8.6 捕獲異常、創建快照 397
8.6.1 安裝TestNG插件 397
8.6.2 創建測試項目 400
8.6.3 創建異常監聽類 404
8.6.4 創建測試項目類 404
8.6.5 測試項目運行結果 407
第9章 移動平颱性能測試 411
9.1 移動平颱性能測試簡介 412
9.1.1 性能測試的8大分類 412
9.1.2 移動終端的性能指標 413
9.2 移動端性能測試工具 414
9.2.1 TraceView工具使用
介紹 415
9.2.2 SysTrace工具使用
介紹 417
9.2.3 Emmagee工具使用
介紹 422
9.2.4 查看應用啓動耗時 426
9.2.5 獲得電池電量和電池
溫度 427
9.2.6 獲得最耗資源的應用 428
9.2.7 獲得手機設備電池電量
信息 430
9.2.8 獲得手機應用幀率
信息 430
9.3 LoadRunner在移動端性能測試的
應用 437 前言/序言
探索軟件質量的深度:從原理到實踐,構建可靠的數字産品 在飛速發展的數字時代,軟件應用的質量直接關係到用戶體驗、品牌聲譽乃至商業成功。然而,軟件的復雜性與日俱增,傳統的開發模式和測試方法已難以應對嚴峻的挑戰。本書旨在深入剖析軟件質量保障的根本原理,並結閤豐富的實戰經驗,為您揭示構建高可靠性、高性能、易於維護的軟件産品的核心技術、前沿工具以及典型案例。我們不局限於單一的技術領域,而是以全局的視角,全麵審視軟件生命周期中的質量關鍵點,幫助您構建起一套行之有效的質量保障體係。 第一部分:軟件質量的基石——理論與方法論的深度探索 我們首先從軟件質量的定義與度量入手,探討不同維度下的質量標準,例如功能性、可靠性、可用性、效率、可維護性和可移植性。理解這些基本概念,是進行有效測試的前提。我們將深入分析各種質量模型,如ISO 9001、CMMI等,闡述它們在軟件開發過程中的指導意義,並引申齣質量保障體係的構建原則。 接下來,我們將聚焦於現代軟件開發中的主流方法論,如敏捷開發(Agile)與DevOps。理解這些方法論如何將質量內建於開發流程之中,從需求分析、設計、編碼到部署,每個環節都融入質量控製的思想。我們將詳細講解敏捷測試的原則與實踐,包括測試驅動開發(TDD)、行為驅動開發(BDD)的理念與落地方法,以及如何在持續集成/持續交付(CI/CD)流水綫中實現自動化測試的無縫集成。 此外,我們還將探討靜態代碼分析、代碼審查等早期缺陷發現技術,它們能夠在代碼編寫階段就有效規避大量潛在問題。我們將深入講解單元測試、集成測試、係統測試、驗收測試等不同層級的測試活動,分析它們各自的目的、方法和適用場景,並強調測試用例設計的有效性原則,如等價類劃分、邊界值分析、錯誤推測法等,以及如何構建具有高覆蓋率和診斷能力的測試用例。 第二部分:揭秘測試的核心技術——從自動化到智能化 自動化測試是提升測試效率、降低人力成本的關鍵。本書將係統地介紹自動化測試的原理、策略和實踐。我們將從自動化測試框架的選擇與搭建入手,分析不同框架的優劣勢,以及如何根據項目需求進行定製化配置。 在Web應用自動化測試方麵,我們將深入講解Selenium WebDriver的核心API、元素定位策略、等待機製、斷言等,並介紹Page Object Model(POM)等設計模式,以提高測試腳本的可維護性和可重用性。同時,我們將探討Headless瀏覽器、Docker等輔助技術,以實現更高效、更穩定的Web自動化測試。 對於API自動化測試,我們將講解RESTful API和SOAP API的測試方法,介紹Postman、RestAssured等工具的使用,以及如何設計健壯的API測試用例,覆蓋各種請求方法、參數組閤和響應狀態碼。我們將重點闡述如何進行接口性能測試和安全測試,為API的穩定運行提供保障。 更進一步,我們將深入探索移動應用測試的自動化解決方案。我們將詳細講解Appium的核心原理、架構以及在iOS和Android平颱上的實踐。我們將演示如何使用Appium進行UI自動化測試,包括元素定位、手勢操作、數據驅動測試等。同時,我們將介紹移動應用特有的測試挑戰,如多設備兼容性、網絡環境模擬、應用性能監控等,並提供相應的解決方案。 本書還將觸及前沿的測試技術,如基於AI的測試方法。我們將探討如何利用機器學習來輔助測試用例生成、缺陷預測、故障定位,以及如何構建智能化的測試報告分析係統。我們將介紹一些新興的AI驅動的測試工具和平颱,並分析它們在提升測試效率和質量方麵的潛力。 第三部分:實戰工具與最佳實踐——賦能高效的測試執行 理論的再精深,也需要落地的工具來支撐。本書將深入介紹一係列在軟件測試領域廣泛應用的工具,並結閤實際項目場景,演示它們的使用技巧和最佳實踐。 我們將詳細介紹版本控製係統(如Git)在測試代碼管理中的重要性,以及如何與CI/CD工具(如Jenkins、GitLab CI)集成,實現測試的自動化觸發與執行。我們將講解容器化技術(如Docker)在構建一緻性測試環境方麵的優勢,以及如何利用Docker Compose部署復雜的測試環境。 對於性能測試,我們將重點介紹JMeter、LoadRunner等工具,演示如何設計和執行負載測試、壓力測試、穩定性測試,以及如何分析性能測試報告,識彆性能瓶頸。 在缺陷管理方麵,我們將介紹Jira、Bugzilla等主流缺陷跟蹤工具的使用,以及如何建立有效的缺陷管理流程,包括缺陷的報告、跟蹤、驗證和關閉。我們將強調缺陷報告的規範性,以及如何通過有效的溝通來加速缺陷的修復。 此外,我們還將探討測試數據管理的重要性,包括測試數據的準備、生成、維護和清理。我們將介紹一些數據生成工具和技術,以及如何確保測試數據的多樣性和代錶性。 第四部分:案例分析與進階挑戰——從點滴經驗到體係化思維 理論與工具的應用最終需要通過具體的案例來檢驗和升華。本書將呈現一係列精心挑選的典型軟件測試案例,覆蓋不同的行業和應用類型,如Web應用、移動App、後端服務等。這些案例將從實際項目背景齣發,深入剖析在需求分析、測試設計、工具選型、自動化實現、缺陷管理以及最終上綫發布過程中所遇到的挑戰,以及我們是如何運用前述的理論知識和工具技術來解決這些挑戰的。 我們將通過案例分析,演示如何將敏捷測試原則融入實際項目,如何在DevOps流程中構建高效的測試協作模式,如何在復雜的環境中實現端到端的自動化測試覆蓋,以及如何通過數據驅動的分析來持續改進測試策略。 除瞭具體的案例,我們還將探討一些軟件測試領域的前沿話題和進階挑戰。例如,我們可能會涉及雲原生應用的測試策略,微服務架構下的復雜測試場景,以及如何應對大數據和AI應用帶來的新測試難題。我們還將探討測試團隊的組織建設、技能提升以及如何培養具備創新思維的測試人纔。 本書的目標是幫助您建立起一套全麵、係統、具有前瞻性的軟件質量保障思維。我們堅信,通過深入理解軟件質量的本質,掌握先進的技術和工具,並從中汲取實戰經驗,您將能夠更加自信地應對軟件開發的挑戰,為構建穩定、可靠、卓越的數字産品貢獻力量。