zoukankan      html  css  js  c++  java
  • 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:ceshiday03Day3amwanandroid.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的事件信息。
    没有结果就是最好的结果。 -Linux哲学
  • 相关阅读:
    iPhone/iOS图片相关(读取、保存、绘制、其它相关)
    NData转化
    UIScrollView小记
    ios学习--结合UIImageView实现图片的移动和缩放
    iphone UIScrollView缩放
    在scrollview中双击定点放大的代码
    IOS 程序内部切换语言 的一种方法
    SAP Hybris Discount group,折扣组,折扣记录,用户组几组概念的关联
    Hybris产品主数据的价格折扣维护
    Hybris订单价格的折扣维护
  • 原文地址:https://www.cnblogs.com/Stubbornlyn/p/13158683.html
Copyright © 2011-2022 走看看