ADB移动端测试
1、手机系统 ios 和 Android。
Android开源导致碎片化比较严重,(手机品牌众多,系统版本各异,分辨率不统一,主流手机型号上千。无法保证应用、游戏对于所有手机的适配兼容。)bug比较多,而IOS通常bug会少一些。
2、手机端常用测试。
-
手机测试的概念架构
-
Android手机长按home建,会呼出应用列表和切换应用,右滑择会终止应用。
-
分辨率测试,Android手机分辨率有20多种,IOS较少一些。
-
再就是手机操作系统,Android系统太多了,IOS较少,但是升级之后不能够降级。
-
-
怎样进行测试。
-
功能测试:
-
逻辑功能测试:相应的需求文档和UI设计的产品效果图。
-
测试主页面,我的页面,商城页面这些功能是否合理。
-
-
安装与卸载测试:
-
软件安装后是否可以正常运行
-
安装过程中是否可以取消,
-
安装空间不足时,是否有相应提示,
-
是否可以卸载应用(可通过桌面卸载,也可以通过软件卸载。曾发现在IOS手机上有个应用安装时未完全安装,终止安装后,未完成安装的应用图标一直显示在手机上,并且无法成功删除)
-
卸载是否支持取消功能,单击取消后软件卸载功能是否正常,卸载后文件是否全部删除所有的安装文件夹
-
从不同的应用市场下载进行安装测试,比如测试小米市场,华为市场,应用宝,安卓市场,安智市场的安装测试。
-
-
登录注册测试
-
登录用户名和密码错误时,界面有提示信息
-
用户主动退出登陆后,下次进入app时,应该进入登陆界面
-
密码更改后,登录时是否做到了有效数据的校验
-
对于未登录状态时,一些页面的操作,是否做了控制
-
切换账号登录,检验登录的信息是否做到及时更新
-
对于多个端(web、iso、android等)进行操作时,确保数据库操作无误,且每个端可以及时看到数据的更新,一个账号只允许一台机器登陆的软件,需要账号登录多个手机时,是否将原用户踢下线,且能够给出提示信息
-
用户登录状态太久,session会过期,会出现“虽然是登录状态,系统会提示用户没有登陆
-
-
安全性测试——权限测试
-
对于手机权限,如果我们是刚开发不知名的app,权限这块尽量少一些,这些权限在安装的时候都必须用户同意。在Android 6.0之后,权限需要动态的申请,我们测试的时候,需要测试在使用到这些权限的时候,程序员是否做逻辑判断,用户同意权限应该怎么操作,不同意权限又应该怎么操作。
-
-
消息推送测试
-
消息推送,是移动端的一大特色。
-
未锁屏时,应用后台运行,消息推送是否可正常接收
-
未锁屏时,APP客户端使用过程中,可以收到消息提醒,且点击可查看。
-
锁屏时,手机消息栏是否可以接收到消息提醒。且点击可查看。点击后消息栏中消失。
-
精准推送,当推送消息是针对登录用户的时候,需要检查收到的push与用户身份是否相符,没有错误的将其他人的消息推送过来
-
push推送消息是是否能有针对性的推送,如相应内容推送给相应用户(精准推送)
-
退出登录后,是否接受push推送(根据需求来)
-
-
前后台切换测试
-
APP切换到后台,再回到APP,检查是否停留在上一次操作界面;
-
检查功能及应用状态是否正常;
-
程序是否崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候
-
手机锁屏解屏后进入app注意是否会崩溃,功能状态是否正常
-
当APP使用过程中有电话进来中断后再切换到APP,功能状态是否正常
-
当关闭APP进程后,在开启APP,APP能否正常启动
-
对于有数据交换的页面,尤其是有视频图片之类的页面,每个页面都必须要进行前后台切换、锁屏的测试,这种页面最容易出现崩溃
-
-
UI测试(界面测试)
-
确保产品UI符合产品经理制定的原型图与效果图
-
一般涉及界面(如菜单、对话框、窗口和其他可视控件)布局、风格、文字是否正确,页面是否美观,操作是否友好。如:安装app后的加载页显示,分享页面的产品logo显示
-
-
兼容性测试
-
主要考虑手机的版本,型号,分辨率,现在手机碎片化比较严重,各个版本,比如Android,从Android4.0到Android8.0的版本它是不一样的,然后现在各大手机厂商像华为,三星,小米,锤子,魅族,vivo这些厂商都修改android源代码,也是给我们增加和好多工作量,好多时候开发的软件在三星上没问题,但是华为,小米就不行。还有手机分辨率,现在主流的可能是1920 * 1080,但是还有好多其他分辨率,比如720*1280,还有一些更大分辨率的手机,都要考虑这些分辨率的兼容,不然用户视觉体验就不好。
-
兼容测试,公司中会买好多测试机来太让我们进行测试,一般是不同厂商的手机,当然还有第三方云测平台,比如testin还有腾讯wetest,就可以做兼容性测试。可以一次性测试100台测试机,同时会有相应的兼容报告,bug报告。
-
对于IOS,ISO版本有7.1.2、8.3、9.1等;能否适配各种屏幕尺寸。
-
-
网络环境测试
-
测试2G、3G、4G、wifi、有网、无网、弱网情况下应用的运行
-
网络不好时,提交数据是否一直处理提交中,是否会有延迟,数据交换失败是否会有提醒.
-
有网到无网再到有网环境时,数据是否可以自动恢复,正常加载
-
无网络时,各种提示信息是否友好
-
数据本地化是否正确(比如提示当前已断开网络,请检查网络设置;还有从wifi环境切换到4G环境提示是否启用4G网络,会产生扣费。)
monkey测试
-
对于手机测试,除了我们一些常规的功能测试,我们还会做压力测试,比如对于Android手机,我会使用adb指令进行一些相应的操作,比如通过adb查看设置,进入设备,抓取log,我们测试的时候,会使用adb logcat所抓出来的log日志存到电脑,发给开发,方便他们快速解决bug。
-
另外,我还会使用monkey对app进行测试,可以使用monkey对app做压力测试,主要就是测试操作app的时候,程序是否会崩溃。
-
我们使用adb shell monkey 指定对应的app,执行要测试的次数,指定要触摸的比率,超时时间和忽略崩溃信息,就可以执行测试,将测试log存到某个位置,然后把测试出的bug 日志发送给开发。
-
-
-
测试的指令:
-
用
adb shell mokey -p
指定要测试的包名 -
--ignore-crashs 忽略崩溃
-
--ignore-timeout 忽略超时
-
--throttle 38指定延迟时间毫秒
-
-s 指定测试种子 指定测试次数,然后将文件 >输出到磁盘中。
-
-
性能测试
-
对于性能测试,(eclipse和Android studio中本身有检测cpu和内存的工具,也有检测手机内存泄漏的工具)靠工具来测试手机cpu占用,内存占用,电池温度等,以及测试我们的app在后台持续运行的流量消耗和电量消耗问题。
-
-
3、Android SDK
-
Android SDK,(Android Software Development Kit)。软件开发工具包,提供了在Windows/Linux/Mac平台上开发Android应用的开发组件。包含了在Android平台上开发移动应用程序的各种工具集。
-
AVD
-
Android Virtual Device,就是Android运行的虚拟设备,是Android的模拟器识别。建立的Android App要运行,必须创建AVD,每个AVD上可以配置很多的运行项目。
-
AVD即用于Android开发调试的模拟机
-
AVD name:填写的虚拟机名称,纯英文和数字组成。
-
Device:设定模拟的设备,一般选择手机型号:3.2QVGA(ADP2)(320480: mdpi)。
-
Target:安装Android的版本,目前4.0是主流,即可选Android4.0.3 API 15。
-
CPI/ABi:模拟的CPU型号,这里的ARM是手机的CPU型号。
-
Keyboard:务必勾选“Hardware keyboard present”。
-
Skin:务必勾选“Display a skin with hardware controls”。
-
Front camera/Back camera:是否模拟前置和后置摄像头,装有Cam的读者可以考虑。
-
RAM:设置模拟器内存,一般在512~1024M。
-
VM Heap:每一个应用的最大内存空间分配,默认即可。
-
SD Card:选在size上,这个就是在默认目录里自动建立一个模拟SD卡的文件,SD卡的大小随意,也可以不填,不填代表不适用SD卡。
-
-
-
ADB介绍:
-
ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机)
-
ADB的使用是根据adb.exe 文件来进行使用
-
ADB常用指令
1. 查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
adb devices2. 安装软件
adb install -r (APK路径)
-r 代表如果apk已安装,重新安装apk并保留数据和缓存文件。apk路径则可以直接将apk文件拖进cmd窗口,记得加空格。3. 卸载软件
adb uninstall <软件名>
adb uninstall -k <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件
问程序员--com.example.test4. 登录设备shell
adb shell
5. 直接运行设备命令, 相当于执行远程命令
adb shell <command命令>6.查看手机内存情况
adb shell dumpsys cpuinfo -
常用的ADB命令(详)
-
查看设备
adb devices
-
展示出
List of devices attached emulator-5554 device(设备标识)
-
使用adb命令进行安装软件
adb install -r (apk的路径) ===》 adb install -r D:\ceshi\day03\Day3am\wanandroid.apk
-
卸载apk
adb uninstall 包名 adb uninstall -k 包名 (保留配置文件以及缓存文件)
-
列出所有的包名
adb shell pm list package
-
可以列出第三方的包名
adb shell pm list package -3
-
可以列出系统应用的包名
adb shell pm list package -s
-
查看手机内存的命令
adb shell dumpsys meminfo
-
录制视频--录制手机屏幕,视频格式为mp4,存放到手机sd卡里,默认录制时间为180s。
adb shell screenrecord /sdcard/demo.mp4
-
指定视频分辨率大小,参数 --size
adb shell screenrecord --size 1280*720 /sdcard/demo.mp4
-
指定视频的比特率, 参数 --bit-rate--指定视频的比特率为6Mbps,如果不指定,默认为4Mbps
adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4
-
旋转90度,参数: --rotate
adb shell screenrecord --rotate /sdcard/demo.mp4
-
导出视频
adb pull /sdcard/demo.mp4 D:/
-
截图
adb shell screencap /sdcard/1907.png
-
导出图片
adb pull /sdcard/1907.png D:/
-
查看手机日志
adb logcat
-
日志级别
V Verbose --详细 (最低)
D Debug --错误
I Info --信息有误
W Warn --警告
E Error --异常
F Fatal --无效
S Silent (supress all output) 最高 -
将日志文件转换为本地文件 。
adb -s emulator-5554(设备名称) logcat -v time process >d:log.txt(文件存放位置)
-
根据日志级别打印
adb logcat *:w(大于和等于这个级别的)
-
-
4、Monkey
-
介绍 : Monkey 通过使用程序模拟用户对移动端设备操作(单击、拖动、滑动、按键等)进行压力测试,可以使用Monkey命令进行检测多长时间内发生异常错误,测试app 是否会Crash(崩溃)。
-
Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar;
-
Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
-
Monkey 命令启动方式:
-
可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试
-
在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试
-
在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器
-
使用monkey测试手机所有程序
adb shell monkey 100 执行monkey测试100次 针对rom测试
-
-
-p <允许的包名列表
adb shell monkey -p com.example.login 100
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包, monkey将允许系统启动设备中的所有app。
-
显示日志详细程度
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示:
-
Level 0 : adb shell monkey -p com.example.login -v 100 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
-
Level 1 : adb shell monkey -p com.example.login -v -v 100 // 提供较为详细的日志,包括每个发送到Activity的事件信息
-
Level 2 : adb shell monkey -p com.example.login -v -v -v 100 // 最详细的日志,包括了测试中选中/未选中的Activity信
-
-
Monkey日志分析
将log信息写到文档中
adb shell monkey 100 >c:/log/b.txt
-
正常情况, 如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成
-
随机数种子
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 示例:
monkey测试1:adb shell monkey -p com.shjt.map –s 10 100
monkey测试2:adb shell monkey -p com.shjt.map –s 10 100
-
throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
如果不指定这个参数,monkey会尽可能快的 生成和发送消息。
例:
adb shell monkey -p com.example.login --throttle 300 100
表示执行100个伪随机用户事件流,事件间隔为300毫秒。
-
注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。
-
-
pct-touch <percent>
调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)
-
`–pct-touch:触摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和Up(ACTION_UP)的坐标临近,但并非相同。
-
如:
adb shell monkey -pct-touch 67 -v 10
表示执行10个伪随机用户事件流,并调整其中触摸事件的百分比为67%。
-
注:此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。
-
-
pct-motion <percent>
调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)
-
–pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move(ACTION_MOVE)。
-
如:adb shell monkey -pct-motion 67 -v 10
表示执行10个伪随机用户事件流,并调整其中动作事件的百分比为67%。
-
注:这里的移动是直线滑动
-
-
ignore-crashes 虎、
作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
正常操作,不忽略异常
-
ignore-timeouts(ANR)
作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
0:触摸事件百分比,即参数--pct-touch
1:滑动事件百分比,即参数--pct-motion
2:缩放事件百分比,即参数--pct-pinchzoom
3:轨迹球事件百分比,即参数--pct-trackball
4:屏幕旋转事件百分比,
5:基本导航事件百分比,即参数--pct-nav
6:主要导航事件百分比,即参数--pct-majornav
7:系统事件百分比,即参数--pct-syskeys
8:Activity启动事件百分比,即参数--pct-appswitch
9:键盘翻转事件百分比,即参数--pct-flip
10:其他事件百分比,即参数--pct-anyevent
测试实例
adb shell monkey -p com.codeest.geeknews --ignore-crashes --ignore-timeouts --throttle 100 --pct-touch 50 --pct-motion 50 -v -v 5000 >e:\mk.log # --ignore-crashes # --ignore-timeouts # --throttle 100 #延时100毫秒(1s) # --pct-touch 50 #50个随机事件触摸 # --pct-motion 50 #50个随机事件滑动 # -v -v 5000 # 操作5000个随机命令,提供较为详细的日志,包括每个发送到Activity的事件信息。