zoukankan      html  css  js  c++  java
  • APP非功能测试

    1、移动APP启动时间测试

    问题:如何获取启动时间?

    答:通过adb的logcat来获取Activity启动时间。用户体验时间=Activity启动时间+启动中异步UI绘制的时间。

    启动时间的测试主要涉及2种场景(启动方式):热启动和冷启动。

    • 冷启动:手机系统中没有该APP的进程,也就是首次启动。点击APP图标,启动应用的时候没有该应用的进程存在。
    • 热启动:手机系统中有该APP的进程,即APP从后台切换到前台。点击APP图标,启动应用的时候后台已经有该应用的进程存在了。

    APP启动时间测试方法:

    1、adb命令,如adb logcat、adb shell am start、adb shell screen-record。

    1.1 以com.android.browser这个包名为例,adb shell am start执行命令如下:

    adb shell
    am start -W -n com.android.browser/.BrowserActivity(回车后观察模拟器)
    
    -W :启动完成之后,返回启动耗时。
    -n:后面跟的是需要启动的APP的包名和lauchActivity。 

    1.2 以com.android.browser这个包名为例,adb logcat执行命令如下:

    1、先kill掉该应用,执行命令:adb logcat > d:	estresult.txt
    2、启动应用,待加载完成后ctril+c停止,使用find过滤启动时间,testresult_2.txt是最终我们想要的启动时间,相加其中的时间。
    3find “Displayed”d:	estresult.txt >d:	estresult_1.txt
    4find “com.android.browser”d:	estresult.txt >d:	estresult_2.txt

    1.3 以com.android.browser这个包名为例,adb shell screen-record执行命令如下:

    1、把待测手机连上计算机,执行录制命令:adb shell screenrecord /sdcard/demo.mp4>启动app>按ctrl+c结束
    2、adb pull screenrecord /sdcard/demo.mp4 d:
    ecord命令导出视频到D盘的record文件夹下
    3、使用视频软件打开该视频并进行播放分析(如KMPlayer)
    4、视频中ICON变亮作为开始时间,将APP完全启动后的时间作为终止时间。用户体验时间=终止时间-开始时间

    2、代码里打点(埋点),代码里插入时间并打印Log.e。

    3、高速相机、秒表

    4、三方工具或云测平台

    2、移动APP流量测试

    流量:指能够连接网络的设备在网络上所产生的数据流量。

    一般对于APP测试的流量,主要关注的是用户层面的流量,需要考虑2种场景:活动状态、静默状态。

    • 活动状态:用户对APP操作而直接导致的流量消耗。
    • 静默状态:用户没操作APP,APP处于后台状态时流量的消耗。

    对于Android系统下流量的测试方法:

    1、通过Tcpdump抓包,然后利用wireshark分析。

    2、查看linux流量统计文件

    3、利用类似DDMS的工具查看流量

    4、利用Android API来统计,通过Android API的TrafficStats类来统计,该类提供了很多不同方法来获取不同角度的流量数据。

    5、三方工具或者云测平台。

    使用比较多的linux流量统计文件为例,以test.apk这个应用为例,查看这个应用的流量:

    1、通过ps | grep com.android test命令获取pid。
    
    2、通过 cat /proc/{pid}/status 命令获取uid,其中{pid}替换为第一步获取的pid值。
    
    3、通过cat /proc/uid_stat/{uid}/tcp_snd命令获取发送的流量(单位bytes),其中{uid}替换为第二步的值。
    
    4、通过cat /proc/uid_stat/{uid}/tcp_rcv命令获取接收的流量(单位bytes),其中{uid}替换为第二步的值。 

    3、移动APP CPU测试

    测试一款APP在各种场景下CPU的占用率情况也是比较重要的指标,CPU占用率较高会影响使用流畅度。

    一般APP在手机上的CPU占用率主要考虑2种场景:

    • 活动状态:用户对APP操作而直接导致的流量消耗。
    • 静默状态:用户没操作APP,APP处于后台状态时流量的消耗。

    对于APP CPU测试方法如下:

    1、三方工具,如腾讯GT、网易Emmagee、阿里易测、手机自带监控等。

    2、dumpsys命令。如adb shell dumpsys cpuinfo | grep {PackageName}.

    3、top命令。如adb shell top | grep {PackageName}.

    4、移动APP电量测试

    电量测试其实是评估消耗电量快慢的一种方式。

    电量测试的测试场景主要有:

    • 待机:包括无网络待机、Wi-Fi待机、3G待机等。
    • 静默状态:打开APP之后并不操作,让后台运行。
    • 活动状态:不断地进行某些场景的操作,除了常规操作外,还应该包括看视频、灭屏下载、唤醒等。

    对于APP 电量测试方法:

    1、通过硬件进行测试。比如,耗电量测试仪、腾讯自己制作的电量宝。

    2、通过adb shell dumpsys batterystats命令。

    3、三方工具或者云测平台。

    5、移动APP测试工具和云测平台

    1、腾讯GT: http://gt.qq.com ,即可对APP进行快速性能测试(CPU、内存、流量、电量、帧率/流畅度等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等。

    2、Emmagee:http://github.com/NetEase/Emmagee, 监控制定被测应用在使用过程中占用机器的CPU、内存、流量资源的使用情况并记录下来,同时可以通过excel来做出统计图的形式。

    3、EasyTest易测:在手机端完成实时性能数据的监控、弱网环境的模拟、手机抓包、Monkey测试等。

    6、移动APP内存测试

    内存泄露是什么?

    内存泄漏:进程中某些对象已经没有使用价值了,但是他们却可以直接或间接地被引用从而导致无法被GC回收。当积累超过Dalvik堆大小时就会发生内存泄露。

    内存泄露常见的分析方法:

    1、在adb shell 下运行命令dumpsys meminfo [应用包名],可以观察到内存的使用情况。一般观察PSS Total和Heap Size Total.其中Dalvik就是Java堆,它不能超过最大限制,查看最大限制可以用命令getprop |grep heapgrowthlimit.

    2、DDMS和MAT.DDMS可动态查看某进程占用内存的情况,而MAT可以对dump出来hprof进行分析。

    3、Android Studio和MAT.适合有源码的情况。

    4、日志和必要的监控。

    内存泄露步骤如下:

    1、运行被测APP并持续操作

    2、在DDMS中的VM heap标签页里查看消耗。其中有一个按钮Cause GC,方便观察内存的回收情况。如果多次进行发现内存还是在不断增大,可回收的越来越少,那就有可能存在内存泄露。也可以通过data object中的Total Size来进行判断。

    3、当发送内存泄露或者持续增长的时候可以通过DDMS的Dump hrof file功能捕获内存快照。

    4、通过命令hprof-conf [inputfile][outputfile]转化为标准的hprof文件

    5、使用MAT打开标准的hprof文件并进行分析。

    6、如果MAT分析不出什么来,可以通过dumpsys meminfo 观察Native Heap的Pss Total和Heap Alloc,如果他们一直在增长,可能是Native层出现了问题,需要去排查JNI、SO库相关的代码。

  • 相关阅读:
    数据的输入输出
    运算符和表达式
    深入理解Magento – 第三章 – 布局,块和模板
    压抑中......
    css控制图片自适应大小
    问来北京的追求是什么
    magento目录结构精编版
    无所事事的日子。
    jQuery实现等比例缩放大图片让大图片自适应页面布局
    MVC 小常识
  • 原文地址:https://www.cnblogs.com/wendyw/p/12590412.html
Copyright © 2011-2022 走看看