安卓Android压力测试与性能测试详解!

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流畅运行应该在标准线以下

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

相关推荐
轻口味7 分钟前
Android SharedPreference详解
android·开发语言
编程乐学3 小时前
网络资源模板--Android Studio 零食工坊(商城)
android·android studio·商城·大作业·安卓课设·购物商城
洞窝技术3 小时前
Android 15适配方案及常见问题
android
人工智能的苟富贵3 小时前
全面解析 iOS 和 Android 内嵌 H5 页面通信与交互实现方案
android·javascript·ios·交互
机器之心3 小时前
迈向多语言医疗大模型:大规模预训练语料、开源模型与全面基准测试
android·人工智能
夜未央ぴ陌上花开丶3 小时前
Android mqttv5
android
草明3 小时前
AndroidManifest.xml 文件中的 package 属性不再是强制要求定义
android·xml·react native
匆忙拥挤repeat5 小时前
Android 简单实现联系人列表+字母索引效果
android
Studying 开龙wu5 小时前
4.3章节python中循环结构:两种类型:for 循环和 while 循环用法
android·java·python