App性能测试之iTest
本文主要介绍下App性能测试工具iTest_V4.7的使用。
功能简介
1、监控Andorid系统(支持手机,平板,电视,车机等智能终端设备)以及应用app的cpu、内存、流量、电池、帧率、页面耗时等数据;
2、悬浮框实时显示被测应用或者整机的状态指标;
3、数据走势图展示统计结果;
4、数据自动保存至文本,可快速导入Excel;
5、支持多进程应用的性能监控,例如灵犀语音助手;支持单进程性能监控;支持自定义进程性能监控
6、支持性能监控告警;
7、支持手工测试和自动化测试,自动化测试时,可发送adb shell命令遥控iTest。
8、获取android底层的linux进程占用的cpu和内存。
9、支持查看设备基本信息、设备的动态信息
10、支持cpu模拟、内存模拟、弱网模拟等极限环境模拟
11、支持logcat日志本地获取
12、支持应用安装包离线分析
13、支持monkey
基本功能使用说明
1、手工测试方式
1) 授权
自android6.0以后,谷歌对权限做了一些管控,应用在需要用户授权的情况下,功能才能正常的运行;因此为了确保iTest能够正常的运行,请按照iTest提示对iTest进行授权:

图1 存储、电话权限

图2 悬浮窗权限

图3 Assist服务启动

图4 辅助功能权限

图5 开启GPU
2)用户注册登录功能
打开iTest应用后,页面跳转至登陆页面,请填写用户名密码进行登录。账号可以直接登录iTest服务端。

图6 登录页面
如果没有登录账号,请点击注册按钮来进行用户注册,其中用户名、密码、邮箱是必选的,qq和微信可二者选一进行填写,注册完成后请登录邮箱激活账号。

图7 注册页面
3)选择被监控的应用
进入首页,先点击“添加”按钮,从跳入的监控应用界面中找到并点击被测应用,或在搜索框中输入应用的名称,或者只输入应用名称中的个别文字,即可筛选。

图8 首页

图9 监控应用页面
4)选择监控指标
在首页中,指标默认已选择cpu、内存、网络三项,点击分享解锁后,可解锁更多指标以及小工具,请根据自己的场景测试需要,选择需要监控的指标

图10 分享前指标

图11 分享后指标
Cpu: 如果被测对象为整机,则数据表示为整机的cpu占用百分比;如果被测对象为应用,包含应用的CPU占用百分比与全局CPU占用百分比,对于单进程应用,该数据表示该应用的CPU占用情况;对于多进程应用,根据您设置的进程筛选规则,如果为根据包名筛选进程,该数据表示应用主进程的CPU占用情况,如果为根据uid筛选进程,该数据表示应用所有的进程cpu占用情况,如果为根据配置文件筛选进程,该数据表示配置的进程cpu占用情况,当发生进程切换时,iTest能够自动切换到新的进程数据。
内存:如果被测对象为整机,则数据表示为整机的内存占用情况和内存剩余情况;如果被测对象为应用,包含应用的内存占用与全局内存剩余情况,对于单进程应用,该数据表示该应用的内存占用情况;对于多进程应用,根据您设置的进程筛选规则,如果为根据包名筛选进程,该数据表示应用主进程的内存占用情况,如果为根据uid筛选进程,该数据表示应用所有的进程内存占用情况,如果为根据配置文件筛选进程,该数据表示配置的进程内存占用情况,当发生进程切换时,同cpu一样,iTest能够自动切换到新的进程数据。应用内存指标包括两部分,进程的PSS(Proportional Set Size,即实际使用内存)内存、Private Dirty(私有内存)内存。
网络:包含应用上下行速率与累计流量以及全局上下行速率与累计流量。属于应用维度数据,根据监控对象决定。点击右侧清零按钮可以清空累计数据。
电池:包含设备瞬时电流、电流均值以及电池的温度。属于全局维度数据。点击右侧清零按钮可以清空电流累计数据。
Cpu温度:该数据表示cpu的温度,属于全局维度数据,部分设备是以电池温度为准。
帧率:包含应用实际帧率,延迟帧数、1秒内单帧最长延迟时间与延迟帧数占所有帧数的百分比。属于应用维度数据,即根据当前窗口所在activity获取。目前iTest是根据设备gfxinfo信息计算1秒内超时帧时间,从而反推出实际帧率,所以在接近静止的情况下, 部分帧率可能显示有误。推荐在滑动或页面切换等动态场景下进行帧率测试。
响应耗时:包含应用点击的响应耗时与刷新耗时数据。属于应用维度数据,基于当前页面所在activity。用户点击控件(记录时间a)界面发生变化(记录时间b)页面停止变化(记录时间c),其中b-a为响应耗时,c-a为刷新耗时。
5) 进程筛选设置
进程筛选,在性能监控中,你或许只关注应用的主进程性能,或许你关注应用的所有进程性能,也或许你只关注应用所有进程中的几个进程的性能,那么如何才能做到这些场景下的性能监控呢?因此我们提供了以下几种进程筛选方式。
根据包名筛选
通过包名获取到被监控应用的主进程,此时监控到的性能数据为应用主进程的性能数据
根据uid筛选
通过包名获取到主进程后得到了主进程的uid,通过uid筛选出应用的子进程信息,通过此种方式,可以监控到应用的所有进程性能数据
根据配置文件筛选
配置文件ThreadFilter.txt内容格式如图所示,FilterHead代表某App监控的开始部分,其中的内容每行代表一个进程,FilterTail代表该App监控的设置结束部分,当然对于多App和单app多进程监控需求同样适用。配置好ThreadFilter.txt文件后,需要将该文件放置到手机/sdcard/AndroidPropertyTool4/目录下即可,详细见ThreadFilter详解
6)场景设置
在启动性能监控前,在图7中标记处输入场景标记。

图12 场景标记
7)其他设置
点击首页左上角的菜单图标,可进入菜单,见图8。点击“设置”即可选择您要设置的参数。见图9。

图13 菜单图

14 设置界面
在图14中参数简介:
监控间隔:默认每隔1000毫秒记录一组数据;
显示悬浮框:悬浮框位于屏幕左上方,实时显示记录的数据,6.0以后系统需要将悬浮窗权限打开,进入iTest后,根据应用提示即可;
横屏显示:默认关闭,竖屏显示,
设置告警规则:触发告警条件,执行告警策略。
设置监控进程规则:默认根据uid进行筛选
8)启动监控/停止监控
点击“启动监控”按钮,测试开始,按钮自动变成“停止监控”;
点击“停止监控”按钮,测试停止,按钮自动变成“开始监控”。
9)查看数据走势图
在主页上,点击左上角的菜单按钮,或向右滑动屏幕进入菜单或者直接点击主页“趋势图”按钮,进入数据管理页面;
点击列表中的
,查看数据趋势图;
点击数据走势图页面上方的下拉框选项
,可以查看相应的数据走势图;

图15 CPU图

图16 内存图
10)数据管理
数据存在android的外置存储空间中(一般是指/sdcard目录)
例如:
/sdcard/AndroidPropertyTool4/handTest/cup_com_baidu_BaiduMap.txt //被测应用的cpu
/sdcard/AndroidPropertyTool/handTest/cpuSystem.txt //系统cpu
/sdcard/AndroidPropertyTool/ handTest/pss_com_baidu_BaiduMap.txt //被测应用的private dirty内存
/sdcard/AndroidPropertyTool/ handTest/privateDirty_com_baidu_BaiduMap.txt /被测应用的pss
/sdcard/AndroidPropertyTool/handTest/pssSystemLeft.txt //系统剩余pss
/sdcard/AndroidPropertyTool/handTest/upflow_com_baidu_BaiduMap.txt //上行速率
/sdcard/AndroidPropertyTool/handTest/downflow_com_baidu_BaiduMap.txt //下行速率
/sdcard/AndroidPropertyTool/handTest/upflowSum_com_baidu_BaiduMap.txt //上线累计
/sdcard/AndroidPropertyTool/handTest/downflowSum_com_baidu_BaiduMap.txt //下行累计
/sdcard/AndroidPropertyTool/handTest/batteryAvg.txt //平均电流
/sdcard/AndroidPropertyTool/handTest/batteryTemperature.txt //电池温度
/sdcard/AndroidPropertyTool/handTest/batteryInstant.txt //瞬时电流
/sdcard/AndroidPropertyTool/handTest/fps.txt
/sdcard/AndroidPropertyTool/handTest/fpsJunkCount.txt
/sdcard/AndroidPropertyTool/handTest/fpsMaxJunk.txt
/sdcard/AndroidPropertyTool/handTest/fpsJunkPercent.txt
/sdcard/AndroidPropertyTool/handTest/cpuTemperature.txt
/sdcard/AndroidPropertyTool/handTest/response.txt
/sdcard/AndroidPropertyTool/handTest/refresh.txt
/sdcard/AndroidPropertyTool/ handTest /uplaodSetting.json//上传功能的标记文件,可忽略
/sdcard/AndroidPropertyTool/handTest/upload.tmp //上传标记文件,可忽略
其中com_baidu_BaiduMap(百度地图)为被测试应用的包名。
备注:
系统会将旧数据文件保存在带时间戳的目录中,例如:
/sdcard/AndroidPropertyTool4 /handTest_2020-01-01-12-12-12-357
在“数据管理”界面,可上传、查看、删除所有数据:

图17 数据管理界面
2、自动测试方式
本工具支持以adb shell命令的形式启动和运行。需要注意的是,office系列软件可能会更改命令中的字符,导致命令不可用!请手工输入命令,或从附带的command文本中复制;另外iTest启动后默认在未登陆的情况下进入登陆页面,因此确保已经登陆,并且将相关权限打开,具体见2.1.1授权介绍
1)启动首页
adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER –n iflytek.testTech.propertytool/.activity.BootActivity
2)开启监控
依次执行如下两条命令,注意替换红字部分:
adb shell am broadcast -a changedir --es savedir handTest(默认即是handTest目录,如不做修改,可忽略执行)
adb shell am broadcast -a monitorStart --es monitor cpu,pss,net,battery,cpuTemp,fps,response --es pkg com.example.test --ei interval 1000
monitor:监控的指标,多指标情况下使用英文逗号分隔(cpu, pss,net,battery,cpuTemp,fps,response)
pkg:包名, 可用英文的逗号分隔多个包名。
interval:间隔(毫秒)
3)结束监控
adb shell am broadcast -a monitorFinish
4)打开或者关闭悬浮窗,在开启监控前执行
adb shell am broadcast -a enableFloatWindow // 开启
adb shell am broadcast -a disableFloatWindow // 关闭
5)其他命令见command
其它功能
1、设备基本信息
从菜单中,点击“设备基本信息”,即可进入设备基本信息页面。点击导出按钮,设备基本信息可导出为txt文本。

图18 展开的菜单图

19 设备基本信息页面
2、设备动态信息
从菜单中,点击“设备动态信息”,即可进入设备动态信息页面。点击导出按钮,设备动态信息可导出为txt文本。
注意,由于数据是动态获取并显示的,在部分数据的获取上比较耗时,请等待若干秒。

图20 设备动态信息页面
3、意见反馈
如果发现工具的bug,或有任何改进意见,请从菜单中点击“意见反馈”,进入意见反馈页面来告知我们。也可以根据“关于”页面中提供的联系方式联系我们。谢谢!

图21 意见反馈页面

图22 关于页面
4、工具箱
工具箱中包含了一些小工具,通过在首页完成分享后即可解锁更多的小工具

图23 工具箱
5、发现
6、版本新增了发现功能,在这里你可以学习别人的玩法,也可以将自己的玩法发布供别人学习。

图24 发现图

图25 添加发现
iTest数据上传功能
iTest服务端地址http://itest.iflytek.com/,iTest客户端默认是在连接有效的wifi且已经登录的情况下在性能监控结束的时候自动上传至服务端,如果没有登录,将会跳转至登录页面,完成登录后,在数据管理页面手动上传测试数据
iTest使用注意事项
1、常见问题
电池电流,因MTK平台不区分充放电,都为负数;高通平台小于0处于放电状态,大于0为充电状态
如果遇到监控cpu与top命令获取的不一样或者监控内存与dumpsys meminfo命令获取的不一样,在小范围内的误差是正常的不影响性能结果,若误差较大的情况下,请使用其他监控工具做对比
由于流量监控功能不完善,导致耗电量统计时,无法统计UDP流量对应的耗电量。
长时间运行后, iTest可能会被系统杀死。解决方案:将iTest.apk放置在/system/app目录下,并赋root权限。
iTest受系统休眠影响,可能会暂停记录数据,请测试之前正确设置手机参数
2、FAQ
App性能测试之iTest的更多相关文章
- Android App性能测试之adb命令
本篇文章总结了Android App性能测试过程中常用的adb命令.通过这些adb命令,可以查看App的性能数据,为评判性能好坏作参考. CPU相关 显示占用CPU最大的5个应用 adb shell ...
- Android App性能测试之二:CPU、流量
CPU---监控值的获取方法.脚本实现和数据分析 1.获取CPU状态数据 adb shell dumpsys cpuinfo | findstr packagename 自动化测试脚本见cpustat ...
- App性能测试之启动时间(安卓)手动+脚本
这个测试可以使用adb工具,adb的安装方式 测试策略 安装后首次启动 常规冷启动 热启动(一般这个都很少测试) 针对1和2的测试方法 步骤1:在cmd中输入如下命令 adb logcat * > ...
- Android APP 性能测试之 GT 工具
一.介绍: GT(随身调)是 APP 的随身调测平台,它是直接运行在手机上的"集成调测环境"(IDTE, Integrated Debug Environment).利用 GT,仅 ...
- APP性能测试之卡顿比(FPS)
fps概念: FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数.FPS是测量用于保存.显示动态视频的信息数量.每秒钟帧数愈多,所显示的动作就会愈流畅. 卡顿人体感觉标准 ...
- APP性能
一.APP性能维度分析 APP类型众多,根据具体类型划分,性能指标的维度和优先级各不相同.视频类APP归属于娱乐游戏型的APP,因此性能测试维度优先级排序为:流畅度.crash.内存.流量.响应时长 ...
- [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)
[Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)开学典礼](https://ke.qq.com/course/453802)**测试交流群:549376944**0 ...
- APP 性能分析工作台——你的最佳桌面端性能分析助手
目前 MARS-App 性能分析工作台版本为开发者提供Fastbot桌面版的服务. 旨在帮助开发者们更快.更便捷地开启智能测试之旅,成倍提升稳定性测试的效率. 作者:字节跳动终端技术--王凯 背景 F ...
- fir.im Weekly - 如何进行 Android App 性能优化
关于 Android App 的优化,@anly-jun 用 3 个月完成了这一系列文章,从 性能分析工具 到 ANR .Layout .消除卡顿 到 内存优化.内存分析工具大概十五六篇,并对此做一个 ...
- Android APP性能分析方法及工具
近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借 ...
随机推荐
- MySQL四种日志binlog/redolog/relaylog/undolog
优质博文:IT-BLOG-CN 一.binlog binlog记录数据库表结构和表数据变更,比如update/delete/insert/truncate/create,它不会记录select.存储着 ...
- 方差分析2——双因素方差分析(R语言)
双因素方差分析(Double factor variance analysis) 有两种类型:一个是无交互作用的双因素方差分析,它假定因素A和因素B的效应之间是相互独立的,不存在相互关系:另一个是有交 ...
- 二进制安装Kubernetes(k8s)IPv4/IPv6双栈 v1.24.0
二进制安装Kubernetes(k8s) v1.24.0 IPv4/IPv6双栈 介绍 kubernetes二进制安装 1.23.3 和 1.23.4 和 1.23.5 和 1.23.6 和 1.24 ...
- [Linux]CentOS7搭建/配置:YUM仓库/源[本地源/Web源(Apache HTTP(D))/自建源仓库]
若想搞懂整个配置过程和原理,就按照章节(1 / 2)一步一步地来. 若想直接一步到位,不想花过多时间,尽快配好,就直接看附件章节. 什么是yum源? Yum(全称为 Yellow dog Update ...
- Schillace法则:使用LLM创建软件的最佳实践
LLM(大语言模型)的发展正在改变软件开发的方式. 以前,开发人员需要编写大量的代码来实现其意图,但现在,随着语言模型的发展,开发人员可以使用自然语言来表达他们的意图,而无需编写大量的代码.这使得软件 ...
- 3.载荷和结果实体类以及Jwt
1.昨天为了将两个项目推送到远程仓库,了解了一下分支,将一个小工程作为一个分支,这是发生在git add .,git commit -m "描述"以及git reomte add ...
- Spring源码系列:初探底层,手写Spring
前言 在学习Spring框架源码时,记住一句话:源码并不难,只需要给你各种业务场景或者项目经理,你也能实现自己的Spring.虽然你的实现可能无法与开源团队相媲美,但是你肯定可以实现一个0.0.1版本 ...
- laravel 中使用的 PDF 扩展包 laravel-dompdf 和 laravel-snappy
这两天项目中需要将HTML页面转换为PDF文件方便打印,我在网上搜了很多资料.先后尝试了laravel-dompdf和laravel-snappy两种扩展包,个人感觉laravel-snappy比较好 ...
- nginx配置phpcms v9伪静态规则 phpcms伪静态 404 Not Found
location / { if (!-f $request_filename){ rewrite (.*) /index.php; } rewrite ^/caipu-([0-9]+)-([0-9]+ ...
- C 语言版线程池
一.初始线程池 1.1 何为线程池? 我们先来打个比方,线程池就好像一个工具箱,我们每次需要拧螺丝的时候都要从工具箱里面取出一个螺丝刀来.有时候需要取出一个来拧,有时候螺丝多的时候需要多个人取出多个来 ...