• APP专项测试方法汇总


    APP专项测试:
    系统:安卓、苹果(Android IOS)

    1、应用性能测试(CPU 内存 电量 流量 温度)
    1)CPU:空闲 中等消耗 高消耗,检测cpu的运行情况

    adb shell
    dumpsys cpuinfo |grep packagename

    -t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量
    top -m 5 -s cpu

    2)内存
    adb shell
    dumpsys meminfo packagename | pid

    最大堆内存大小
    getprop |grep dalvik.vm.heapgrowthlimit

    AndroidManifest.xml
    android:largeHeap="true"
    android:debuggable="true"

    procrank命令
    adb shell
    procrank

    3)电量
    方式1:使用手机上自带电量监测工具 手机助手 gsam battery monitor gt工具
    方式2:使用硬件将电量表串在电源和手机之间,需取出下手机电池
    方式3:需要在安卓5.0以上系统

    清理干扰数据
    adb shell dumpsys batterystats --enable full-wake-history

    adb shell dumpsys batterystats --reset
    初始化电量统计数据

    获取adb报告数据
    adb shell bugreport >bugreport01.txt

    或者放到目录:sdcard0为sd卡的目录名称 /storage/sdcard0/Download/bs
    获取整个设备的电量数据
    adb shell dumpsys batterystats >batterystats01.txt

    获取指定APP应用的电量数据
    adb shell dumpsys batterystats com.android.browser >batterystats02.txt

    historian.py文件与电量数据文件需在同一目录,使用python工具转换成html文档
    python historian.py batterystats01.txt >batterystats01.html
    python historian.py batterystats02.txt >batterystats02.html
    python historian.py -a bugreport01.txt > br01.html

    4)流量
    静默:不操作APP时的流量
    动态操作:操作APP时的流量
    与竞品分析、版本对比

    观察wlan0的流量,vivo手机可先打开飞行模型在关闭分型模式,则流量被情况了。
    方式1:
    adb shell
    cat /proc/进程名/status |grep Uid

    方式2:
    cat /proc/uid_stat/uid/tcp_snd
    cat /proc/uid_stat/uid/tcp_rcv

    方式3:
    cat /proc/pid/net/dev

    方式4:
    tcpdump+wireshark
    adb push tcpdump包 /data/local/tcpdump
    adb shell chmod 6755 /data/local/tcpdump
    cd /data/local
    tcpdump -s 0 -w /sdcard/Download/tcpdump.pcap -v
    adb pull /sdcard/Download/tcpdump.pcap d:
    用wireshark工具打开pcap文件,并进行分析

    方式5:
    TrafficStats类

    方法6:适合所有机型
    adb shell cat /proc/net/xt_qtaguid/stats | grep (uid#)

    减少流量的方式:(关注流量、电量、用户等待3个大方面)
    1)优化网络连接
    减少Radio的活跃时间,即减少网络数据获取的频次。
    减少获取数据包的大小。

    2)压缩数据
    进行数据的压缩,对request和response采用Gzip压缩。

    3)使用高效率的协议传输和处理数据
    建议考虑采用protocl Buffer代替JSON

    4)图片大小优化
    在需要获取图片的时候,告知服务器需要的图片高度,以便服务器给出合适的图片。
    app把图片数据传递给app端时,最好使用JPG图片,把图片压缩成app端需要的尺寸后,再传给app端。

    5)使用缓存
    有网络是根据设置的Cache Contorl时间来判断是使用缓存,还是做网络请求。
    没有网络时直接使用缓存。
    1)请求客服端配置缓存目录OkHttp缓存目录
    2)Request中需带有Cache-Control的header,以便请求时是否使用缓存。
    3)Response中需带有Cache-Control的header,以告知客服端是否使用缓存,及缓存失效的时间。
    注意:在加入interceptor时,使用的是addNetworkInterceptor方法,而非 addInterceptor方法。

    6)打包网络请求
    打包网络请求:1个界面需要请求多个接口,或是网络良好下,处于Wifi时我们想获取更多数据。
    界面上处理后的结果先呈现给用户,而不不自动加载图片,使用JobScheduler在网络较好的情况下进行打包请求。

    7)监听设备状态
    休眠状态、充电状态、网络状态
    结合JobScheduler来根据实际情况做网络请求,连接Wifi时下载缓存到本地,新闻类的app可以在充电。

    8)利用增量升级实现app的更新

    9)减少app的大小,可有效减少流量消耗。

    10)文件上传下载处理
    从服务器上下载或是上传文件到服务器时,应支持断点续传功能。

    2、APP启动、加载时间(冷启动 热启动)
    冷启动:首次安装应用启动后的测试
    热启动:已经安装应用,并使用多次后,启用应用的测试

    方式1:
    高速相机 3秒表 云测平台

    方式2:
    adb shell
    am start -W -n 包名/Activity名 关注ThisTime项,本次APP启用所花费的时间,单位毫秒
    am start -W -n com.android.browser/.BrowserActivity

    logcat >d: ime.txt
    findstr "Displayed" d: ime.txt >d: ime1.txt
    findstr "包名" d: ime1.txt >d: esult.txt

    3、页面渲染(gpu fps)
    屏幕上的像素在同一帧时间内被绘制了多次
    蓝1X、淡绿2X、淡红3X、深红4X
    开始GPU:开发者选项->显示/GPU过度绘制

    4、手机卡顿(TraceView)
    方法1:DDMS工具
    采集程序的方法的执行耗时、调用关系、调用次数、资源占用情况
    选择某个被测应用,点击Start Method Profiling,红点变成黑点,处于信息采集状态;
    在TraceView界面中,分为时间线界面、分析界面;
    消耗CPU的情况:关注Cpu Time/Call列中,消耗时间最大的函数
    调用次数的情况:关注Call+Recur Calls/Total,调用次数最大、CPU耗时最大的函数

    方法2:埋点
    在代码中埋点,之后操作应用,生成trace文件,使用monitor工具进行分析
    在AndroidManifest.xml文件配置sd卡读写权限
    <user-permission android:name="android.permission.WRITE_EXTERAL_STORAGE"/>
    <user-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    埋点开始:
    onCreate Debug.StartMethodTracing("/storage/sdcard/xxx.trace");
    埋点结束:
    onStop或onPause或onDestory Debug.StopMethodTracing();

    5、内存泄漏 抖动(根据场景收集应用消耗手机内存、需收集3次的内存数据)
    测试的情况:虚拟机、联机
    虚拟机测试:
    android list avd
    emulator @avdname
    ddms

    联机测试:
    在手机中安装Android驱动
    手机设置成USB调试模式
    应用配置文件设置
    AndroidManifest.xml android:debuggable="true"

    在ddms中,点击某个进程,点击show heap updates,再点击GC按钮,多次操作后观察 data object中的Total Size大小变化趋势,如果发现内存泄漏,则需dump文件
    Dump HPROF file按钮进行dump操作;
    利用hprof-conv 转换成hprof文件。再导入到mat工具中进行分析。

    6、弱网测试
    Network Emulator Toolkit工具
    关注:卡死 崩溃 无响应 闪退 业务交互数据的正确性

    7、代码静态扫描
    使用lint工具(ADT工具自带,分析出代码结构上的问题,可自定义检查的规则)
    lint --list
    lint --show

    findbugs 可发现java代码层面的问题

  • 相关阅读:
    【设计模式+原型理解】第四章:函数的三种角色+原型链终结版
    【设计模式+原型理解】第三章:javascript五种继承父类方式
    【设计模式+原型理解】第二章:基于构造函数扩展出来的原型模式
    【设计模式+原型理解】第一章:使用Javascript来巧妙实现经典的设计模式
    【Javascript】JS遍历数组的三种方法:map、forEach、filter
    mysql_8.0.12环境配置
    Vue搭建环境
    Flask学习:根据WTF实现登录
    Flask学习:简单的实现登录功能(表单,消息显示)
    Flask学习:模板的使用(变量,控制器,过滤器)
  • 原文地址:https://www.cnblogs.com/NiceTime/p/6624200.html
Copyright © 2020-2023  润新知