APP性能测试Monkey随机压力测试(android手机压测)
App本身性能数据获取(cpu 内存 帧率 启动时间 流量 电量)
Monkey随机压力测试(android手机压测)
1.Android SDK
Android软件开发包是移动设备应用软件开发的基础支持库。
它基于Windows、Linux和Mac OS平台提供了为开发Android应用程序设计的完整功能模块集合。这些功能模块旨在满足开发者在跨平台移动应用构建过程中的多样化需求,并且特别关注于提供高效的跨平台解决方案以提升用户体验。这些工具集不仅涵盖了基础功能的实现,还集成了一系列高级特性以支持复杂的应用程序设计需求。
2.解压并配置SDK
通过解压工具(如360Compress、GoodPress、FastPress等),将AndroidSDK.rar进行解压至无中文目录中
配置环境变量:
-
新建ANDROID_HOME : G:\software\Android\sdk
-
path添加三个变量
%ANDROID_HOME%
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
验证:adb(只要不提示不是内部或外部命令,表示配置成功
3.安卓adb
Android Debug Bridge(ADB)全称Android Debug Bridge,并属于android SDK中的一个重要工具。通过该工具可以通过直接对安卓模拟器或真实设备进行操作和管理。支持的操作设备包括智能手机、平板电脑、电视机以及智能导航设备等。
它的主要功能有:
-
运行设备的shell(命令行)
-
管理模拟器或设备的端口映射
-
计算机和设备之间上传/下载文件
-
将本地apk软件安装至模拟器或android设备
3.1 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) (最高的优先级, 可能不会记载东西)
| adb start-server adb启动 adb kill-server 停止adb adb shell pm list packages 所有应用 adb shell pm list packages -s 系统应用 adb shell pm list packages aaa 查看包名包含字符串 aaa 的应用列表 adb shell pm clear com.baidu.com 清除应用数据和缓存 |
|---|
随机压力测试-Monkey
1. Monkey介绍
Monkey本质上就是一只猕猴,在进行相关研究时会采用 Monkey 测试操作。这种测试通常模拟猴子在虚拟环境中运行于电脑上并进行键盘随机按键的行为作为测试手段。这些行为纯属随机按键操作,并没有任何特定意图。
采用Monkey程序模拟用户触摸屏幕、滑动Trackball以及按键等多种交互操作,在足够多的次数中对设备上的应用程序执行压力测试,并检测该程序在多长时间长度内会出现异常情况。
1. **Monkey用来做什么**
Monkey是一种专门用于Android系统进行随机压力测试的工具。它不仅具备高度自动化能力,还提供了一套简便的操作界面。其核心功能是检测Android应用在运行过程中是否会遇到Crash(崩溃)的情况。
1. **Monkey 命令**
- 使用monkey测试手机所有程序
adb shell monkey 100 执行monkey测试100次 针对rom测试或者
- Monkey实例
用monkey 命令 对登录apk进行 性能测试
ADB shell monkey运行参数配置如下:
忽略Crashes和Timeouts
以1秒的速度进行速率控制
触控占50%,运动占50%
多次执行
设置为666和1000
1. **Monkey异常日志分析**
Monkey 测试出现错误后,一般的分析步骤
看Monkey的日志
1. 程序无响应的问题: 在日志中搜索 “ANR”
2. 系统崩溃问题:通过查看日志信息定位系统崩溃的情况(如潜在的空指针异常)
Monkey 执行中断,在log最后也能看到当前执行次数
-
获取app性能数据
1. 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
1. **内存**
- 查看某个应用内存使用情况

adb shell dumpsys meminfo 包名
dalvik : dalvik使用的内存
native表示在C/C++程序中用于内存管理的栈空间(其中bitmap类的数据通常存储在这里)。
other : 除了dalvik和native的内存,包含C\C++非堆内存······
Pss : 该内存指将共享内存按比例分配到使用了共享内存的进程
allocated : 已使用的内存
free : 空闲的内存
改写说明
share dirty : 共享,但有不能被换页出去的内存
1. **启动时间**
手机APP的启动时长是用户最容易直观感知的一个重要性能维度,在实际应用中发现当启动时间持续过久则会显著影响用户体验。由此可见,在所有关键绩效指标中,启动时间都处于优先位置。
APP的启时长分为两种情况,
一种是冷启动时间(通常是系统重启,即在启动前没有该App进程的情况),
一种是热启动(hot start),亦称为程序重启机制,在这种模式下App会自动从后台运行并切换至前台界面。
- adb指令启动
在ADB shell环境下使用dumpsys命令获取所有活动信息后,在此基础上应用findstr命令筛选出当前处于焦点状态的任务及其所属软件包。
adb shell am start -W com.jingdong.app.mall/.main.MainActivity
WaitTime 即总耗时, 其中包含了前一活动Activity执行暂停所占用的时间段以及新应用启动所需的时间段;
ThisTime 表示一连串启动Activity 的最后一个 Activity 的启动耗时
TotalTime代表新应用启动所需的总时间。需要注意的是,在此处并未计入上一Activity处于pause状态时所消耗的时间。综上所述,在实际分析中我们通常只需关注这一指标即可。而这一数值准确反映了当前应用的实际启动时间。
这种测试方案较为简便,并且能够精确地计算出系统启动该Activity所需的时间。然而,其不足之处在于未考虑用户从点击图标到系统接收到消息这一时间段的影响,在实际应用中可能无法完整地模拟用户操作流程中从点击图标到消息接收的时间过程。
1. **电量**
部分手机的设置菜单中包含流量与电量统计项,在测试前与测试后分别监测并记录设备的电量值,并计算总消耗量。
1. **帧率--有无卡顿**
进入开发者选项 开启GPU呈现分析
不同颜色线条显示该帧渲染所需的时间长短,耗时越多则表明存在卡顿现象;其中绿色线条作为基准参考线,应用正常运行应在基准线下方
