精通引动APP测试实战:技术、工具和案例全面讲解了移动平台测试方面的技术、技巧、工具和测试用例等实战知识。内容涵盖主流的测试工具,包括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