ADB移动端测试


1、手机系统 ios 和 Android。

Android开源导致碎片化比较严重,(手机品牌众多,系统版本各异,分辨率不统一,主流手机型号上千。无法保证应用、游戏对于所有手机的适配兼容。)bug比较多,而IOS通常bug会少一些。

 

 

2、手机端常用测试。

  1. 手机测试的概念架构

    • Android手机长按home建,会呼出应用列表和切换应用,右滑择会终止应用。

    • 分辨率测试,Android手机分辨率有20多种,IOS较少一些。

    • 再就是手机操作系统,Android系统太多了,IOS较少,但是升级之后不能够降级。

       

  2. 怎样进行测试。

    • 功能测试:

      • 逻辑功能测试:相应的需求文档和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平台上开发移动应用程序的各种工具集。

     

  1. 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卡。

  2. ADB介绍:

    1. ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机)

    2. ADB的使用是根据adb.exe 文件来进行使用

    3. ADB常用指令

       1. 查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
       adb devices

       

       2. 安装软件
        adb install -r (APK路径)
       -r 代表如果apk已安装,重新安装apk并保留数据和缓存文件。apk路径则可以直接将apk文件拖进cmd窗口,记得加空格。

       

       3. 卸载软件
        adb uninstall <软件名>
        adb uninstall -k <软件名>
       
        如果加 -k 参数,为卸载软件但是保留配置和缓存文件
       问程序员--com.example.test

       

       4. 登录设备shell
        adb shell
       

       

       5. 直接运行设备命令, 相当于执行远程命令
       adb shell <command命令>

       

       6.查看手机内存情况
       adb shell dumpsys cpuinfo

       

    4. 常用的ADB命令(

      1. 查看设备

        adb devices

      2. 展示出

        List of devices attached emulator-5554 device(设备标识)

      3. 使用adb命令进行安装软件

        adb install -r (apk的路径) ===》 adb install -r D:\ceshi\day03\Day3am\wanandroid.apk

      4. 卸载apk

        adb uninstall 包名 adb uninstall -k 包名 (保留配置文件以及缓存文件)

      5. 列出所有的包名

        adb shell pm list package

      6. 可以列出第三方的包名

        adb shell pm list package -3

      7. 可以列出系统应用的包名

        adb shell pm list package -s

      8. 查看手机内存的命令

        adb shell dumpsys meminfo

      9. 录制视频--录制手机屏幕,视频格式为mp4,存放到手机sd卡里,默认录制时间为180s。

        adb shell screenrecord /sdcard/demo.mp4

      10. 指定视频分辨率大小,参数 --size

        adb shell screenrecord --size 1280*720 /sdcard/demo.mp4

      11. 指定视频的比特率, 参数 --bit-rate--指定视频的比特率为6Mbps,如果不指定,默认为4Mbps

        adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4

      12. 旋转90度,参数: --rotate

        adb shell screenrecord --rotate /sdcard/demo.mp4

      13. 导出视频

        adb pull /sdcard/demo.mp4 D:/

      14. 截图

        adb shell screencap /sdcard/1907.png

      15. 导出图片

        adb pull /sdcard/1907.png D:/

         

      16. 查看手机日志

        adb logcat

      17. 日志级别

         V    Verbose --详细 (最低)
         D Debug --错误
         I Info --信息有误
         W Warn --警告
         E Error --异常
         F Fatal --无效
         S Silent (supress all output) 最高

         

      18. 将日志文件转换为本地文件 。

        adb -s emulator-5554(设备名称) logcat -v time process >d:log.txt(文件存放位置)

      19. 根据日志级别打印

        adb logcat *:w(大于和等于这个级别的)

4、Monkey

  1. 介绍 : Monkey 通过使用程序模拟用户对移动端设备操作(单击、拖动、滑动、按键等)进行压力测试,可以使用Monkey命令进行检测多长时间内发生异常错误,测试app 是否会Crash(崩溃)。

  2. Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar;

  3. Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;

  4. Monkey 命令启动方式:

    1. 可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试

    2. 在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试

    3. 在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器

    4. 使用monkey测试手机所有程序

    adb shell monkey 100 执行monkey测试100次 针对rom测试

  5. -p <允许的包名列表

    adb shell monkey -p com.example.login 100

    用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包, monkey将允许系统启动设备中的所有app。

  6. 显示日志详细程度

    用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示:

    1. Level 0 : adb shell monkey -p com.example.login -v 100 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

    2. Level 1 : adb shell monkey -p com.example.login -v -v 100 // 提供较为详细的日志,包括每个发送到Activity的事件信息

    3. Level 2 : adb shell monkey -p com.example.login -v -v -v 100 // 最详细的日志,包括了测试中选中/未选中的Activity信

  7. Monkey日志分析

    将log信息写到文档中

    adb shell monkey 100 >c:/log/b.txt

 

  1. 正常情况, 如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成

  2. 随机数种子

    用于指定伪随机数生成器的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

  3. throttle <毫秒>

    用于指定用户操作(即事件)间的时延,单位是毫秒;

     

    如果不指定这个参数,monkey会尽可能快的 生成和发送消息。

     

    例:adb shell monkey -p com.example.login --throttle 300 100

    表示执行100个伪随机用户事件流,事件间隔为300毫秒。

    • 注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。

     

 

  1. pct-touch <percent>

    调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)

    1. `–pct-touch:触摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和Up(ACTION_UP)的坐标临近,但并非相同。

    2. 如:adb shell monkey -pct-touch 67 -v 10

      表示执行10个伪随机用户事件流,并调整其中触摸事件的百分比为67%。

     

    • 注:此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。

 

  1. pct-motion <percent>

    调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)

    1. –pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move(ACTION_MOVE)。

    2. 如:adb shell monkey -pct-motion 67 -v 10

      表示执行10个伪随机用户事件流,并调整其中动作事件的百分比为67%。

    • 注:这里的移动是直线滑动

  2. ignore-crashes 虎、

    作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

     

    正常操作,不忽略异常

  3. 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的事件信息。

 

posted @ 2020-06-18 17:23  ʚ追寻家ɞ  阅读(343)  评论(0编辑  收藏  举报