App本身性能数据获取(cpu 内存 帧率 启动时间 流量 电量)
Monkey随机压力测试(android手机压测)
01 Android SDK
Android SDK,即Android Software Development Kit,是android的软件开发工具包。
它提供了在Windows/Linux/Mac平台上开发Android应用的开发组件。包含了在Android平台上开发移动应用程序的各种工具集。
0 2 解压并配置SDK
使用解压工具(如360压缩,好压,快压等)解压AndroidSDK.rar到没有中文的目录下
配置环境变量:
* 新建ANDROID_HOME : G:\software\Android\sdk
* path添加三个变量
%ANDROID_HOME%
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
验证:adb(只要不提示不是内部或外部命令,表示配置成功
03 安卓adb
ADB全称Android Debug调试 Bridge桥, 是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的andriod设备(手机 平板 电视 智能导航...)
它的主要功能有:
-
运行设备的shell(命令行)
-
管理模拟器或设备的端口映射
-
计算机和设备之间上传/下载文件
-
将本地apk软件安装至模拟器或android设备
ADB常用指令
查看设备:adb devices
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
安装软件
adb install <apk文件路径>
adb install -r apk文件路径 --覆盖安装
这个命令将指定的apk文件安装到设备上.
卸载软件
adb uninstall <软件名> 问开发
adb uninstall -k <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件
问程序员--com.example.test
登录设备shell
adb shell
adb shell <command命令>
这个命令将登录设备的shell.
后面加<command命令>将是直接运行设备命令, 相当于执行远程命令
查看手机日志:adb logcat
获取某个应用的日志输出到本地文件中
adb logcat -v time process | findstr 包名> C:/log/aa.txt(v表示详细程度-v --v -v)
有多台设备时adb选择设备
adb -s 设备名称 logcat -v time process | findstr 包名>C:/log/aa.txt
显示所有优先级大于等于"warning"的日志
adb logcat *:W
日志等级:
-- V : Verbose (明细);
-- D : Debug (调试);
-- I : Info (信息);
-- W : Warn (警告);
-- E : Error (错误);
-- F: Fatal (严重错误);
-- S : Silent(Super all output) (最高的优先级, 可能不会记载东西)
随机压力测试-Monkey
Monkey介绍
Monkey就是猴子,Monkey测试,就像一只猴子在电脑面前,乱敲键盘在测试。猴子什么都不懂,只知道乱敲(随机测试)
通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试(足够多次),检测程序多久的时间会发生异常
Monkey用来做什么
Monkey 主要用于Android 的随机压力测试,是一个自动的压力测试小工具,主要目的就是为了测试android app是否会Crash(崩溃).
Monkey 命令
使用monkey测试手机所有程序
adb shell monkey 100 执行monkey测试100次 针对rom测试或者
Monkey实例
用monkey 命令 对登录apk进行 性能测试
adb shell monkey -p com.example.login --ignore-crashes --ignore-timeouts --throttle 100 --pct-touch 50 --pct-motion 50 -v -v -v -s 666 1000 >c:\login\c.txt
Monkey异常日志分析
Monkey 测试出现错误后,一般的分析步骤
看Monkey的日志
-
程序无响应的问题: 在日志中搜索 "ANR"
-
崩溃问题:在日志中搜索 CRASH/Exception(例如果出现空指针NullPointerException)
Monkey 执行中断,在log最后也能看到当前执行次数
获取app性能数据
CPU
adb shell top 获取全部cpu
-
PID : progress identification,应用程序ID
-
S : 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
-
#THR : 程序当前所用的线程数 thread
-
VSS : Virtual Set Size虚拟耗用内存(包含共享库占用的内存)
-
RSS : Resident Set Size实际使用物理内存(包含共享库占用的内存)
-
PCY : 前台(foreground)和后台(background)进程
-
UID : User Identification,用户身份ID
-
Name : 应用程序名称
查看手机整个cpu消耗情况
adb shell dumpsys cpuinfo
查看某一个应用的cpu使用情况
adb shell dumpsys cpuinfo | findstr com.jingdong.app.mall
内存
查看某个应用内存使用情况
adb shell dumpsys meminfo 包名
-
dalvik : dalvik使用的内存
-
native : native堆上的内存,指C\C++堆的内存(android 3.0以后bitmap就是放在这儿)
-
other : 除了dalvik和native的内存,包含C\C++非堆内存······
-
Pss : 该内存指将共享内存按比例分配到使用了共享内存的进程
-
allocated : 已使用的内存
-
free : 空闲的内存
-
private dirty : 非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使你的进程已经退出,该内存也不会被释放)
-
share dirty : 共享,但有不能被换页出去的内存
启动时间
手机APP的启动时长是一个很容易被用户感知的性能指标,启动时长过长会让用户极不愿意继续等待。因此启动时长是一项比较靠前的性能指标。
APP的启时长分为两种情况,
-
一种是冷启动时间
(通常是系统重启,即在启动前没有该App进程的情况)
-
一种是热启动,即App从后台被切换到前台
(点back退出后再点击图标启动)
adb指令启动
adb shell dumpsys activity | findstr mFocusedActivity 查看当前显示的界面名字及所属包名
adb shell am start -W com.jingdong.app.mall/.main.MainActivity
WaitTime 就是总的耗时,包括前一个应用Activity pause的时间和新应用启动的时间;
ThisTime 表示一连串启动Activity 的最后一个 Activity 的启动耗时
TotalTime表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用Activity pause 的耗时。也就是说,一般只要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时。
总结:
这种测试方法简单容易,并且可以准确的计算出系统启动这个Activity的时间。但是缺点是不包括点击icon到系统接收到消息的时间,也就是说这个时间并不能完整的模拟用户操作场景的启动时间
电量
有的手机设置菜单里面会有流量和电量统计类,只需在测试前后记录下电量值,便可获取消耗电量数值。
帧率--有无卡顿
进入开发者选项 开启GPU呈现分析
各种颜色的线表示渲染这一帧用了多长时间,时间越长表示卡顿明显,绿色横线为标准线,app流畅运行应该在标准线以下
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。