移动端测试(三)
一、adb****
1、adb简介
即 Android Debug Bridge,它是 Android 开发/测试人员的强大工具。它是一种可以用来操作手机设备或模拟器的命令行工具。
2、手机设备与电脑端连接的步骤(以小米6X手机为例)
step1:在连接手机设备之前,先在电脑的高系统管理设置中,看下SDK环境变量,点击确定即可。
step2:打开手机设置,点击我的设备,在我的设备里点击全部参数,看到MIUI版本一直点击,直到出现开发者模式,返回手机设置找更多设置,点击开发者模式,将USB调试打开。
step3:手机数据线连接电脑端。
step4:打开cmd控制台,输入adb devices,看我们的手机是否与电脑连接成功,如下图所示
3、常用adb命令
adb devices # 显示当前连接的 adb 设备,会打印设备的序列号及其对应的状态,上图也有显示
adb shell # 进⼊ Android 系统的 shell 模式
adb logcat # 打印机器 log ⽇志
adb install [APK路径]
adb uninstall [应⽤包名]
adb shell wm size # 查看屏幕分辨率
adb shell service list # 显示当前运行的系统服务
adb shell dumpsys activity top # 显示当前最前端的 Activity
adb shell cat /proc/cpuinfo # 显示所使用设备的CPU信息
adb shell cat /proc/meminfo # 显示所使用设备的内存使用情况
adb shell ps 查询所有的进程,无#号
adb shell am monitor 获取程序包名
adb shell dumpsys window | findstr mCurrentFocus 获取程序包名
进入到:adb shell,输入命令:pm list packages,不建议使用,包名不好找 获取程序包名
注:#号不能省略!
4、adb应用
针对android:给一个apk文件,通过电脑在手机端可以熟练的安装和卸载
eg1:开发给一个 iBiliPlayer-bili.apk文件,测试人员通过cmd命令,输入adb install [APK路径]命令来进行安装,如下图所示
此时安装成功!
针对IOS手机
步骤:
A、首先把苹果的测试手机序列号告诉开发
B、在测试手机下载testflight的App
C、开发会把测试的app发布到testflight,然后我们通过testflight来安装被测试的app
eg2:如何通过电脑命令卸载app
卸载逻辑:
a.打开app,再使用adb shell am monitor等命令获取被卸载的程序包名
b.使用cmd命令,输入adb uninstall [应⽤包名],来进行卸载。
如下图所示
二、⽇志****
1、常用错误日志信息
空指针:nullpointException
数组越界:ArrayIndexoutof boundsException
多次启动线程:illegalThreadstateException
数字格式化问题 :java.lang.NumberFormatException
内存溢出:java.lang.OutOfMemoryError
文件找不到:java.io.FileNotFoundException
未发现此类:java.lang.ClassNotFoundException: Didn't find class
初始化错误:java.lang.InstantiationException:java.lang.Class<androidx.core.app.
Crash > AndroidRuntime > Exception>Error 的顺序逐个搜索。
注:crash,即崩溃,anr是crash的一种。在程序中可能会出现你未捕获到的异常,这就造成了崩溃。
2、日志应用
eg1:针对android:给一个apk文件,通过电脑在手机端可以熟练的操作log信息到一个具体文件。
步骤如下:a.在XX的目录下创建log.txt的记事本
b.adb logcat > log.txt,然后按下回车键
c.启动app,进行操作
d.操作完成,打开log.txt,里面会有很多日志信息
直接过滤掉的日志信息:adb logcat | findstr 包名 > log.txt
如图所示
eg2:测试app的过程中,出现了闪退,此时你会怎么办?
a.截屏/录频记录下闪退的交互
b.同样的操作操作的时候,使用adb logcat | findstr 包名 > log.txt,把错误日志信息重定向到日志文件里面
c.把录频的交互操作以及错误的日志信息,反馈给开发。
三、Monkey****
1、常见monkey命令
adb shell monkey 启动的命令
adb shell ps | grep monkey 查询monkey的pid,grep是针对苹果系统
adb shell ps | findstr monkey 查询monkey的pid,findstr是针对window系统
adb shell kill pid 停止monkey进程
adb shell monkey -v 10 10条随机事件
adb shell ps | findstr 被测试程序包名 获取进程ID
adb shell dumpsys meminfo 进程ID 获取内存信息
adb shell top -n 1 | findstr 进程ID 获取cpu消耗信息
adb shell dumpsys battery 获取电量信息
adb shell dumpsys gfixinfo 进程ID 获取GPU信息
adb shell cat /proc/pid/net/dev 获取流量信息
注:pid是在手机以及电脑上,任何运行的一个程序都是一个进程,每个进程都是有独立的pid。
2、monkey应用
eg1:针对android:给一个apk文件,通过电脑在手机端可以熟练的输出进程ID。
步骤:
step1:启动monkey模式,如图所示
step2:在cmd里输入如下命令:adb shell ps | findstr 被测试程序包名(包名获取:adb shell am monitor)如图所示
step3:上图即可看出进程ID
eg2:对某一款app进行monkey测试。
步骤:以小米6X为例
step1:执行之前将手机调试在如下模式
注:java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission ,是app安全权限问题。
step2:输入命令:adb shell monkey -p 输入获得的包名 --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 12358 --throttle 200 --ignore-crashes --ignore-timeouts -v 输入次数>输入根部目录
结果:停不下来
示例:adb shell monkey -p com.parkingwang.business --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 12358 --throttle 200 --ignore-crashes --ignore-timeouts -v 80000>D:\test\tools\app\log.txt
step3:如下图所示,让其结束进程
step4:打开D:\test\tools\app\log.txt和D:\test\tools\app\result.txt
step5:以notepad++形式编辑 monkey.bat,只需改正根目录即可。
step6:打开result.txt文件即可看到结果如下:
补充:
1、全球三大操作系统
第一、unix:ios,macos ,高端的小型服务器
第二、linux:是在unix的思想延伸下开发的一个操作系统、android、redhat
第三、window
2、移动测试方向
a、客户端的专项测试,就需要非常熟悉android的源码以及ios的源码,以及内部架构
b、移动端的自动化测试:appium
c、手机终端的测试,比如测试相机
d、app的常规功能测试