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

总结:

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

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

软件测试面试文档

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

视频文档获取方式:

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

相关推荐
无极程序员1 小时前
PHP常量
android·ide·android studio
萌面小侠Plus2 小时前
Android笔记(三十三):封装设备性能级别判断工具——低端机还是高端机
android·性能优化·kotlin·工具类·低端机
慢慢成长的码农2 小时前
Android Profiler 内存分析
android
大风起兮云飞扬丶2 小时前
Android——多线程、线程通信、handler机制
android
L72562 小时前
Android的Handler
android
清风徐来辽2 小时前
Android HandlerThread 基础
android
HerayChen3 小时前
HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
android·macos·智能手机
顾北川_野3 小时前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
hairenjing11233 小时前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小黄人软件4 小时前
android浏览器源码 可输入地址或关键词搜索 android studio 2024 可开发可改地址
android·ide·android studio