如何进行App性能测试?iTest工具助力你轻松实现!

引言

如何使用iTest工具进行App性能测试。

在如今这个高度竞争的移动应用市场中,用户对于应用程序的体验需求越来越高,而良好的性能表现则是实现这一目标的关键。

因此,App性能测试已经成为了开发人员必备的技能之一。然而,很多人并不知道该选择哪种测试工具,以及如何进行有效的测试。

这篇引流文章将为你介绍iTest工具的基本功能、使用方法和测试技巧,帮助你更加轻松地进行App性能测试,从而提高应用程序的质量和性能。

读完这篇文章,你也可以成为一名顶尖的应用程序测试专家!

功能简介

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受系统休眠影响,可能会暂停记录数据,请测试之前正确设置手机参数

 感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/703680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕

一、电路接法 电路接法参照江科大视频。 二、相关代码及文件 说明:代码采用hal库,通过修改江科大代码实现。仅OLED.c文件关于引脚定义作了hal库修改,并将宏定义OLED_W_SCL(x)、OLED_W_SDA(x)作了相关修改。 1、OLED.c void OLED_I2C_Init(voi…

【汽车电子】万字详解汽车标定与XCP协议

XCP协议基础 文章目录 XCP协议基础一、引言1.1 什么是标定1.2 什么时候进行标定1.3 标定的意义 二、XCP协议简介2.1 xcp简介2.2 XCP如何加快开发过程?2.3 XCP的主要作用 三、XCP工作过程3.1 工作过程3.2 通讯模型3.3 测量与标定 四、XCP报文解析4.1 数据包报文格式4…

【C++进阶】STL容器--stack和queue深度剖析优先队列适配器原理

目录 前言 1. 容器的使用 1.1 stack 1.2 queue 2. 什么是适配器 3. stack&&queue底层实现 4. deque的简单介绍 4.1 deque的缺陷 5. priority_queue 思考 6. priority_queue的实现 前言 栈和队列在C语言中大家都有所了解,C语言的栈和队列都是我们手动去…

js:通过input标签或Drag拖拽文件实现浏览器文件上传获取File文件对象

文档 https://developer.mozilla.org/zh-CN/docs/Web/API/Filehttps://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement/drag_event 通过读取文件可以获取File对象的信息 lastModified: 1707210706000 lastModifiedDate: Tue Feb 06 2024 17:11:46 GMT0800 (中国标准…

NeurIPS 2023 Spotlight | VoxDet:基于3D体素表征学习的新颖实例检测器

本文提出基于3D体素表征学习的新颖实例检测器VoxDet。给定目标实例的多视图,VoxDet建立该实例的三维体素表征。在更加杂乱的测试图片上,VoxDet使用体素匹配算法检测目标实例。实验表明,VoxDet中的三维体素表征与匹配比多种二维特征与匹配要更…

Linux进程 ----- 信号处理

前言 从信号产生到信号保存,中间经历了很多,当操作系统准备对信号进行处理时,还需要判断时机是否 “合适”,在绝大多数情况下,只有在 “合适” 的时机才能处理信号,即调用信号的执行动作。 一、信号的处理…

linux系统---nginx基础

目录 一、Nginx的概念 二、Nginx常用功能 1、HTTP(正向)代理,反向代理 1.1正向代理 1.2 反向代理 2、负载均衡 2.1 轮询法(默认方法) 2.2 weight权重模式(加权轮询) 2.3 ip_hash 3、web缓存 三、基础特性 四…

基于SpringBoot+Apache ECharts的前后端分离外卖项目-苍穹外卖(十八)

数据展示 1. Apache ECharts1.1 介绍1.2 入门案例 2. 营业额统计2.1 需求分析和设计2.1.1 产品原型2.1.2 接口设计 2.2 代码开发2.2.1 VO设计2.2.2 Controller层2.2.3 Service层接口2.2.4 Service层实现类2.2.5 Mapper层 2.3 功能测试 3. 用户统计3.1 需求分析和设计3.1.1 产品…

【人脸朝向识别与分类预测】基于PNN神经网络

课题名称:基于PNN神经网络的人脸朝向识别分类 版本日期:2024-02-20 运行方式:直接运行PNN0503.m文件 代码获取方式:私信博主或 QQ:491052175 模型描述: 采集到一组人脸朝向不同角度时的图像,图像来自不…

【Spring】事务总结

目录 1. 什么是事务? 2. 事务的特性(ACID)了解么? 3. 详谈 Spring 对事务的支持 3.1. Spring 支持两种方式的事务管理 1).编程式事务管理 2)声明式事务管理 3.2. Spring 事务管理接口介绍 3.2.1. PlatformTransactionManager:事务管理…

投资黄金在哪里买比较好?

黄金,作为一种传统的避险资产,历来受到投资者的青睐。在全球经济波动的大背景下,黄金的价值愈发凸显。那么,投资黄金在哪里买比较好呢?本文将重点探讨在香港黄金平台投资黄金的优势,并以金田金业为例&#…

Powershell中conda init失效、无法使用conda activate的问题

起因 近期折腾了一下Windows Terminal,安装配置了Powershell 7.3,然后发现conda activate在Powershell中用不了了,conda init powershell不起作用,conda init cmd.exe没有问题 分析 因为powershell的profile.ps1文件路径中存在…

ELK 简介安装

1、概念介绍 日志介绍 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据。 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。 日志…

网络层的DDoS攻击与应用层的DDoS攻击之间的区别

DDoS攻击(即“分布是拒绝服务攻击”),是基于DoS的特殊形式的拒绝服务攻击,是一种分布式、协作的大规模攻击方式,主要瞄准一些企业或政府部门的网站发起攻击。根据攻击原理和方式的区别,可以把DDoS攻击分为两…

The Grapes NFT 概览与数据分析

作者:stellafootprint.network 编译:cicifootprint.network 数据源:The Grapes NFT Collection Dashboard The Grapes 是一个有趣且具有吸引力的 NFT 收藏集合,包含 3,333 个精心制作的 NFT。这个 NFT 项目会在 2024 年再创高…

linux僵尸进程

僵尸进程(Zombie Process)是指在一个进程终止时,其父进程尚未调用wait()或waitpid()函数来获取该进程的终止状态信息,导致进程的资源(如进程表中的记录)仍然保留在系统中的一种状态。 当一个进程结束时&am…

GO数组解密:从基础到高阶全解

在本文中,我们深入探讨了Go语言中数组的各个方面。从基础概念、常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南。无论您是初学者还是经验丰富的开发者,这篇文章都将助您更深入地理解…

java使用Swagger文档报错“java.lang.NullPointerException: null”

java使用Swagger文档报错 一、问题二、解决1、报错2、源码3、方法 一、问题 java项目引入Swagger文档,后期因为一些原因导致Swagger文档不能使用,但是不影响项目运行和正常使用,但每次启动都会报错。 原因有可能是: 1、一个实体类…

【HMAC-SHA1算法以及工作原理】

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要知识图谱总结 简述概要 连接HMAC-SHA1工作原理以及工具代码 知识图谱 HMAC(Hash-based Message Authentication Code,基于散列的消息认证码)是一种结合了密钥和消息的认证方法…

刚拿到的《HarmonyOS应用开发者高级认证》,全网整理的题目,将近300题,100%通过

刚拿到《HarmonyOS应用开发者高级认证》,现在把题目和答案分享一下,这些题目是我根据其他网站整理的,宁滥勿缺,有个别题目是重复的,抽半天时间看一下,应该是稳过的。当然建议还是先跟着文档学一下鸿蒙或者看…