本文是根据书籍《精通移动App测试实战:技术、工具和案例》进行学习记录,方便后期查阅,感谢书籍作者提供的学习机会。
目录
第1章 Android系统基础内容介绍
1.6创建模拟器
- 关于模拟器使用:
- 模拟器在没有物理手机设备时对调试测试脚本程序非常有帮助
- 模拟器的执行效率要比同配置的真实手机设备低
- 模拟器因为相关的参数可配置,所以可以模拟操作系统版本的升级情况
- 模拟器因为相关的参数可配置,所以建议大家执行测试脚本用例时可以在低版本的系统测试其兼容性
- 模拟器和真实的物理设备还是有差别的,建议在做实际的自动化测试时还是要用真实的物理设备。
第2章JUnit框架基础
2.1Junit框架介绍
- 对于经常变化的项目而言敏捷开发适用性优于瀑布模型。
- XUnit系列的工具包括Junit(针对Java)、DUnit(针对Delphi)、NUnit(针对.Net)和PythonUnit(针对Python)等
2.2Junit在Android开发中的应用
1、JUnit4常用的几个Annotation介绍:
(1)@Before:初始化方法
(2)@After:释放资源
(3)@Test:测试方法,在这里可以测试一些测试用例,正常的、异常的测试用例
(4)@Ignore:忽略的测试方法
(5)@BeforeClass:针对所有测试,只执行一次,且必须为static void;
(6)@AfterClass:针对所有测试,只执行一次,且必须为static void;
2、断言:JUnit为我们提供了一些辅助函数,用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常把这些辅助函数称为断言。
第3章 ADB命令
3.1Android调试桥介绍
- ADB是Android提供的客户端/服务器架构的通用调试工具,主要由adb客户端、adb服务器、adb daemon(守护进程)3部分组成
- 任何模拟器或设备实例会取得两个连接端口,一个偶数端口用来控制与控制台的连接,一个基数端口用来控制与adb的连接。
3.2ADB相关指令实例讲解
1、adb devices了解物理测试设备或模拟器相关信息
- device状态:表示设备或模拟器已连接到adb服务器上,但并不代表设备或模拟器已经启动完毕可以操作,因Android系统启动时会先连接到adb服务器上,但Android系统启动完毕后,设备或者模拟器通常是这个状态。
- Offline状态:表明设备或模拟器没有连接到adb服务器或没有反应
- On device状态:表明没有物理设备或模拟器连接。
2、adb install
(1)Android MM 模拟器设备安装
adb -s emulator-5554 install C:\Users\Administrator\Desktop\MMyingyongshangchang_10641.apk
(2)如果已安装应用,又不想卸载后再安装
adb -s emulator-5554 install -r C:\Users\Administrator\Desktop\MMyingyongshangchang_10641.apk
(3)若只连接了一个物理手机设备或者一个模拟器设备
adb install C:\Users\Administrator\Desktop\MMyingyongshangchang_10641.apk
3、adb uninstall指令实例讲解
APP卸载方法:
- 方法一:通过物理手机或模拟器设备自带的卸载功能进行卸载
- 方法二:应用PC上安装的一些手机助手类工具软件来卸载
- 方法三:应用手机或者模拟器设备上安装的一些工具软件来卸载应用
- 方法四:应用adb uninstall命令卸载手机应用
4、adb pull指令实例讲解 手机端下载文件到电脑
5、adb push 指令实例讲解 将电脑上的文件传送到物理手机设备或模拟器。不仅能够传送文件,也能够传送文件夹到手机或者模拟器设备
6、Adb shell指令实例讲解
Adb shell +相关指令及其参数 来执行这些指令
例如:adb shell ls查看手机当前目录所有内容
adb shell、su root(切换为root用户)、cd /data/data、ls
7、adb shell dumpsys battery指令实例详解 查看电池电量的相关信息
8、adb shell dumpsys WiFi 查看无线网络信息
9、adb shell dumpsys power 查看电源管理相关信息
10、adb shell dumpsys telephony.registry 查看电话相关信息
11、adb shell cat /proc/cpuinfo 查看CPU硬件相关信息
“/proc”区分保存的系统各种实时信息,如CPU、内存等信息
12、adb shell cat /proc/meminfo 查看内存相关信息
13、adb shell cat /proc/iomem 查看内存分区的相关信息
14、adb shell cat /system/build.prop|findstr “ro.product.model”获取手机型号
模拟器输出:
15、adb shell cat /proc/cpuinfo|findstr “Processor” 获取手机处理器信息
16、adb shell cat /proc/meminfo|findstr “MemTotal”获取手机内存信息
17、adb shell dumpsys window|findstr “Display” 获取手机屏幕分辨率的相关信息
18、adb shell getprop ro.build.version.release 获取手机系统版本相关信息
19、adb shell cat /proc/version 获取手机内核版本信息
20、adb shell getprop gsm.operator.alpha 获取手机运营商信息
21、adb shell getprop gsm.network.type 获取手机网络类型相关信息
22、adb shell dumpsys iphonesubinfo|findstr “Device ID” 获取手机串号信息
23、adb shell df 获取手机Android系统各个分区相关信息
24、adb shell dmesg 输出Linux内核的环形缓冲区信息,从中获得诸如系统架构、CPU、挂载硬件、RAM等多个运行级别大量的系统信息
25、adb shell dumpstate 获取手机Android系统当前状态的相关信息
26、adb get-serialno获取设备序列号
27、adb get-state 查看模拟器/设备的当前状态(分为device/offline/no device)
28、adb logcat 查看和跟踪系统日志缓冲区的信息
29、adb bugreport 查看Android启动过程的日志信息以及启动后的系统状态
30、adb jdwp列出指定设备的JDWP(Java调试器无线协议)相关的进程ID
31、adb start-server 用于启动adb服务
32、adb kill-server 用于关闭adb服务
33、adb forward将本机端口重定向到模拟器或设备接口上
34、am 全称 Activity Manager模拟各种系统行为
35、pm指令全称package manager,用于模拟Android行为或者查询设备上的应用
adb shell pm list packages
3.3手机模拟器相关的一些操作命令实例详解
3.3.1模拟器上模拟手机来电命令实例详解
1、模拟器是如何工作的?
- 模拟器启动之后会打开一个网络嵌套字(Socket)端口与其所在的主机通信
- 借助Telnet操控模拟器,通过端口(5554)与模拟器进行交互
- Telnet localhost 5554
4.gsm call <phone number>
遇到Android授权问题:auth <I+p0VVK4sRZfRy9E>
3.3.2模拟器上模拟发送短信命令实例讲解
sms send <phone number> hi tester
3.3.3模拟器上模拟网络相关命令实例讲解
- network status:查看网络状态信息
- Network speed:设定模拟器网速
- Network delay:设定模拟器的网络延时
- Network capture start/stop:捕获模拟器的网络数据包
3.3.4修改模拟器的大小比例相关命令实例讲解
Window scale 0.5 将模拟器尺寸变为原尺寸的一半
3.3.5模拟器的其它命令及如何退出模拟器控制台
Help Power命令查看相关帮助信息
3.4 模拟器相关命令实例详解
1、了解模拟器的Android系统版本:Android list targets
3.5创建安卓虚拟设备命令实例讲解
- Android create avd --name android4.4.2 --target 2 --abi armeabi-v7a
其中:--name为创建的手机模拟器名称、--target为“Android list targets”命令查询到的标示号、--abi后为应用二进制接口的类型
模拟器屏幕密度240、物理内存512M、虚拟内存48M
- 重命名模拟器命令实例讲解
- 查看模拟器命令实例讲解 Android list avd
- 删除模拟器命令实例讲解 Android delete avd -n
- 启动模拟器命令实例讲解 emulator -avd android4.4.2
3.6 创建安卓项目相关命令实例讲解
1、切换到myeclipse项目的工作目录
2、创建测试项目:
android create test-project -m D:\MyEclipse 2015 CI\NotePad -p D:\MyEclipse 2015 CI\NotePadTest
android create test-project -m D:\MyEclipse 2015 CI\LawControl -p D:\MyEclipse 2015 CI\LawControlTest
3、基于控制台命令行相关命令使用指导
- Android --help或Android -h
- android move avd -h
第4章 Monkey工具使用
4.1工具简介
Monkey测试是一种测试软件稳定性、健壮性的快速有效的方法。
4.2Monkey演示实例
4.2.1第一个Monkey示例(针对日历应用程序)
- 启动模拟器后 cmd中输入 adb shell monkey
- Adb shell su root cd data cd data ls
- adb shell monkey -p com.android.calendar 1000
4.2.2如何查看Monkey执行过程信息
包含1个-v参数时,信息的详细级别就为0级
包含2个-v参数时,信息的详细级别就为1级
包含3个-v参数时,信息的详细级别就为2级
1、0级时,adb shell monkey -v-p com.android.calendar 100
2、1级时,adb shell monkey -v-v-p com.android.calendar 100
3、2级时,adb shell monkey -v-v-v-p com.android.calendar 100
针对打印输出内容分析:
(1):Monkey:seed=0 count=100
未指定随机种子-s参数时,默认使用是0 count是100命令中已经指定
(2):AllowPackage:com.android.calendar
含义是只启动在com.android.calendar包中的Activity(活动)
4.2.3如何保持设定各类事件执行比例
4.3Monkey相关参数讲解
1、-s参数的示例讲解
Monkey提供的-s参数,用于指定伪随机数生成器的seed(种子)值,如果seed值相同,则两次Monkey测试所产生的事件序列也相同。
- 重现问题是测试人员经常面对的一件事情, 因此-s参数的使用尤为重要,建议测试时,记录每次使用的命令及用管道命令保存输出结果到文件中,使得命令和执行结果一一对应
- adb shell monkey -v-v-v-p com.android.calendar 100 > C:\calendar.txt
输出Monkey的执行结果信息到alendar.txt
2、-p参数的示例讲解
-p参数用于约束限制,用此参数指定一个或多个包(package,APP)。指定包之后,Monkey只将允许系统启动用户指定的APP。不指定时随机启动系统中的任意APP
不指定包:Adb shell monkey 100
指定单个包:Adb shell monkey -p com.android.calendar 100
指定两个或多个包:Adb shell monkey -p com.android.calendar -p com.tencent.news 100
3、--throttle参数的示例讲解
--throttle用于指定各操作也就是随机事件间的延时
Adb shell monkey -p com.android.calendar --throttle 3000 100 向日历应用发送100次随机事件,每次事件间隔为3秒
4、--pct-touch<percent>参数的示例讲解
用于设定触屏事件生成的百分比
adb shell monkey --pct-touch 50 -p com.android.calendar --throttle 3000 100
向日历应用发送100次随机事件,每次事件间隔为3秒,其中设定触屏的时间占比为50%
5、--pct-motion<percent>参数的示例讲解
用于设定滑动时间生成的百分比,滑动事件是先在某一个位置手指按下,滑动一段距离后再抬起手指的手势
Adb shell monkey --pct-motion 50 -p com.android.calendar --throttle 3000 100
向日历应用发送100次随机事件,每次事件间隔3秒,其中设定滑动的事件占比为50%
6、--pct-trackball<percent>参数的示例讲解
用于设定轨迹球事件生成的百分比,轨迹球事件是包含一系列随机移动和单击事件的事件
Adb shell monkey --pct-trackball 50 -p com.android.calendar --throttle 3000 100
向日历应用发送100次随机事件,每次事件间隔3秒,其中设定轨迹球事件的占比为50%
7、--pct-nav<percent>参数的示例讲解
用于设定基本的导航事件的百分比,基本导航事件是模拟方向性设备输入向上、向下、向左、向右的事件
Adb shell monkey --pct-nav 50 -p com.android.calendar--throttle 3000 100