• 移动app测试


    一、环境搭建

    1、模拟器环境

    1)内网环境配置

    1.安装phpstudy
    2.将ecshop压缩包解压,将解压后的子文件夹upload的所有内容复制粘贴到phpstudy安装目录的WWW目录下
    3.将ecmobile文件夹放入phpstudy安装目录的WWW目录下
    4.浏览器输入localhost,按步骤安装ecshop站点
    5.使用adb pull /system/etc/hosts e:hosts此命令将hosts文件导入到windows系统的e盘下进行修改
    6.在hosts文件中添加两行内容
    第一行:10.0.3.2       shop.ecmobile.cn
    第二行:此行是空行,不输入任何内容
    7.使用adb remount命令获取修改安卓系统内目录权限
    8.使用adb push e:hosts /system/etc/hosts 此命令将windows环境下已修改的文件hosts覆盖安卓系统的hosts文件
    9.使用adb install e:ECMobile3.2.apk 此命令安装ecmobile软件,双击运行,有内容说明环境搭建成功
    

    2)adb命令 Android Debug Bridge(安卓调试桥)

    adb devices检查电脑上连接的设备
    adb install安装apk文件
            如果有多台设备,adb -s 设备id install
    adb uninstall卸载app包名
            需要知道app对应的包名称
            aapt命令:aapt d badging e:ecmobile.apk | find "package"
    adb shell    
        常见目录:
            /data/app(了解),放上传的apk文件
            /data/dalvik-cache(了解),放app的可执行程序dex文件
            /data/data/包名(重要),每个app对应的文件夹
                shared_prefs,放用户设置,是否第一次运行
                databases目录,app对应数据库,sqlite数据库,可用navicat打开
    
    adb pull
        从android系统中取文件
        adb pull /data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml d:userInfo.xml
    
    adb push
        将文件传到android系统中
        adb push d:userInfo.xml /data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml
    
    常见问题:
        输入adb,命令找不到,路径,可将adb的路径加入环境变量path
        权限拒绝,chmod修改权限
        修改firstrun的值后,ecmobile退出后再进入发现没变化,需要用kill杀掉ecmobile对应进程
        用adb pull从android系统中取文件时提示文件不存在,使用adb root以root用户重启adb,然后再pull
        开机白屏,升级显卡驱动,虚拟机与模拟器版本不兼容
    

    2、真机环境

      wifi接入内网局域网,跟模拟器环境一样。

    mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
    chmod 777 /system
    修改hosts文件覆盖到Android系统中
    服务端地址(pc端IP)  shop.insthub.ecmobile
    

    二、app常见测试类型

      功能测试+专项测试

    1、安装测试

      安装前,检查文件是否齐全,检查杀毒软件是否认为该安装包是病毒,apk文件病毒检查。

      安装中,安装方式、途径多样,应用商店安装,adb安装,上传apk文件到sd卡安装,浏览器下载安装。

      安装后,运行检查,安装后文件是否正确,权限检查,欢迎界面检查。

      升级,通过adb升级,应用商店,网页下载升级,低版本、同版本、高版本覆盖安装,考虑有无缓存数据或存储数据。

    2、卸载测试

      通过adb卸载,第三方应用卸载,系统进行卸载。

    3、功能测试

      单功能测试,针对单个功能进行测试,重点在于各种异常情况;

      功能交互测试,针对功能之间的相互影响进行测试;

      业务流程测试,针对业务流进行测试,需要考虑基本流和特殊流。

    1)手机app分类

      native app原生app,无法用fiddler抓包。特别为某种操作系统开发的app。不需要安装,直接安装在设备里,可以调用手机终端的硬件设备。ios的Camera。Android的KeePassDroid。良好的用户体验,速度快,性能好,可线下使用,开发成本高。eg:照相机、相册、短信、通讯录。

      web app,需要用到网络。不需要下载,不能调用手机终端的硬件设备。eg:android的google。可以实现跨平台开发。

      hybrid app混合app,需要下载安装,facebook,百度搜索。

      app主要用于前端展示使用,数据仍由服务器处理,处理之后下发到前端,常用的数据格式json。

    2)业务测试,fiddler使用

      fiddle环境配置,进入fiddle-Tools-options-connections页面进行相关配置,端口号设为8888。安卓系统网络配置,选择代理服务,ip输入10.0.3.2,端口号设为8888,保存退出设置。打开ecmobile有数据,fiddle中有抓取到包,说明环境配置成功。

      inspector,json数据格式,JavaScript Object Notation,(JS 对象标记)。需要检查每个字段属性的值是否正确。响应数据需要注意是否有压缩。

      autoresponder,fiddler将假数据作为响应发给app,原理:fiddle将服务端处理的响应数据保存,自己给app一个假的响应数据。步骤,将真实的响应数据保存作为修改对象,对保存的响应数据设置自动响应规则做测试。

      filters,过滤器,根据host过滤。

    3)功能交互

      与手机系统功能的交互,短信、来电、闹钟,eg:通话时,使用ecshop。与手机管理软件或安全软件的交互,权限,休眠,关闭网络。

    4)操作方式

      屏幕旋转测试,锁屏键、home键、back键测试,滑屏、长按、双击、多点触控。

    通知栏测试

    双卡双待测试

    android四大组件:

    activity 界面:
        catlog的工具查看android的日志,通过包名查看,displayed关键字
        一个activity对应一个界面,一个界面可以对应多个activity
        查看进程:ps | grep ecmobile
        用户id:/data/system/packages.list,列:包名、用户id、调试标记、包的数据路径,
            用户 id,可以很好的把不同 app隔离开,方便通过权限控制来保护各个 app 的数据。
        packages.xml记录系统当中安装APK的所有属性,权限等信息。
            当系统中的APK安装、删除、升级时,文件被更新
    
    service 后台服务:
        微信消息提醒,微信后台service在运行
    
    broadcast receiver 广播:
        锁屏、home键、back键会发出广播
        点击解锁,fiddle抓包
    
    content provider app间数据共享
    

    4、性能测试

      包含:负载测试(测试系统能力)、容量测试(测试数据库的最佳容量)、压力测试(测试耐力)、并发测试、配置测试、基准测试。

      针对:响应时间、资源消耗、吞吐量。

    1)时间

      通过activity的时间来做估算(日志中displayed关键字查看),可进行多次平均。

      启动时间:首次启动时间,安装好app后第一次运行的启动时间。非首次启动时间,冷启动时间,热启动时间。冷启动时间,app对应进程未运行,可以在安卓系统中用kill杀死进程,kill 进程号。热启动时间,app对应进程处于运行状态。

      切换时间:不同界面切换。

    2)存储空间

      Android内存:native堆内存、dalvik堆内存:

    native:/data/data/app包名/lib中.so文件产生
    dalvik:运行java程序时产生
        头部限制:/system/build.prop
         cat build.prop | grep heap
        超过最大内存heapgrowthlimit,可能产生内存溢出,OOM
    

      内存占用:

    查看每个应用内存(Pss字段)的使用情况:
    adb shell procrank
    adb shell top -n 400 | grep packagename
    adb shell dumpsys meminfo | grep packagename
    
    当app打开某个超大的图片时可能产生内存溢出
    app要使用的内存空间超过heap堆内存设置
    

      GC(垃圾回收):

    挂载块设备文件mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
    修改权限chmod 777 /system
    生成GC日志文件logcat -v time -v threadtime | grep GC>GCFile.txt
    生成的GCFile文件需要在外部利用adb pull导出
    

      运行空间占用:

    主要关注/data/data/包名 目录空间大小
    du -sH  其值不断变化,需要多次获取
    

    3)CPU(中央处理器)占用

      emmagee:APP性能测试工具,/sdcard导出.csv文件到windows目录下。

      GT、百度的测试助手、公司研发的平台等。

    4)GPU(图形处理器)占用

      关注点,GPU过度绘制。界面区域重复绘制多次,造成GPU占用过多。浪费GPU资源,产生无效的电量消耗。

    5)功耗

      安装功耗:安装前测试电量与安装完成后测试电量相减。

      待机功耗、使用功耗

    还有

      流量,使用中流量、待机流量。性能测试需要进行横向和纵向的对比,横向:竞争对手,纵向:以前版本,形成基准。

    5、兼容性测试

      环境兼容性,操作系统、浏览器、屏幕尺寸。

      android系统碎片化,开源,各厂家的软硬件不同。屏幕尺寸,4 寸屏、5 寸屏等。屏幕像素,像素的大小,像素越大,屏幕越清晰;屏幕分辨率,长和宽上像素的多少。权限设置,不同用户对于设备权限的控制不一定相同,eg:用户会禁止所有非系统应用使用摄像头等。

      查看点击<手机覆盖分析>

      借助于云测平台,阿里云mqc、百度云测、testin、腾讯优测、公司研发的平台等。

    6、易用性测试

      操作是否便捷。按钮点击范围是否合理,打开显示布局边界。

      界面是否美观易懂。图标是否准确。

    7、可靠性测试

      稳定性测试。成熟性,软件内部问题处理的能力。容错性,软件外部问题处理的能力。易恢复性。

      异常测试。断电、断网、数据丢失、程序异常退出。

    1)稳定性测试

      点击查看<monkey测试>

    是Android中一个命令行工具,可以运行在模拟器或实际设备中,
    是Android自动化测试的一种手段
    monkey通过向系统发送伪随机的用户事件流,如按键输入、
    触摸屏输入、手势输入等,实现对app的稳定性测试
    adb shell monkey -p 包名 --throttle 500 -s 9 -v -v -v 30000>G:monkey_log.txt
    在monkey_log文件最后一行出现monkey finished,表示设备运行正常
    日志中遇到Crash或者ANR(Application Not Responding),自动终止运行
    一般情况:3万次以内出现Crash,认为系统可靠性比较糟糕
    可通过simiasque避免monkey操作通知栏,导致无效测试
    

    2)异常测试

      断电重启、网络中断、程序异常退出、Apk文件名包含中文、清除缓存。eg:app无法访问网站,首页显示以前的数据,网络恢复后,首页不会进行更新,仍然显示以前的数据。

    8、网络测试

      网络分类。WiFi 强、弱,2G,3G,4G。

      不同网络间切换。

      关注。不同网络下app的使用(可通过微软的network emulator模拟):上行速率、下行速率、延时、丢包率。网络切换下app的使用。弱网/无网测试。

    笔记

    2020-01-12

  • 相关阅读:
    压缩感知中的lp球:p范数最优化为什么总会导致一个稀疏的解的原因
    有限等距性质RIP
    P问题、NP问题、NPC问题
    浅读K-means
    Python初学——pickle & set
    Python初学——窗口视窗Tkinter
    Python初学——多进程Multiprocessing
    暴力【bzoj2208】: [Jsoi2010]连通数
    打表数学【bzoj2173】: 整数的lqp拆分
    最短路【bzoj1726】: [Usaco2006 Nov]Roadblocks第二短路
  • 原文地址:https://www.cnblogs.com/yuntimer/p/12184522.html
Copyright © 2020-2023  润新知