如何进行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,一经查实,立即删除!

相关文章

Visual Studio快捷键记录

日常使用Visual Studio进行开发,记录一下常用的快捷键: 复制:CtrlC剪切:CtrlX粘贴:CtrlV删除:CtrlL撤销:CtrlZ反撤销:CtrlY查找:CtrlF/CtrlI替换:CtrlH框式选…

(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 (中国标准…

LeetCode 2997.使数组异或和等于K的最少操作次数

给你一个下标从 0 开始的整数数组 nums 和一个正整数 k 。 你可以对数组执行以下操作 任意次 : 选择数组里的 任意 一个元素,并将它的 二进制 表示 翻转 一个数位,翻转数位表示将 0 变成 1 或者将 1 变成 0 。 你的目标是让数组里 所有 元素…

Python3 运算符

什么是运算符? 举个简单的例子: 4 5 9 例子中,4 和 5 被称为操作数, 称为运算符。 Python 语言支持以下类型的运算符: Python算术运算符 以下假设变量 a10,变量 b21: 运算符描述实例加 - 两个对象相加a b 输…

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缓存 三、基础特性 四…

前端开发中基于Web Speech API(speechSynthesis接口)实现文字转语音功能

文章目录 一、Web Speech 的概念及用法二、Web Speech 的 API 接口1、SpeechSynthesis属性方法 2、SpeechSynthesisUtterance属性方法 三、Web Speech 的 用法用法演示一用法演示二htmljs 四、扩展 一、Web Speech 的概念及用法 在开发业务系统时,有时候可能需要使…

基于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 产品…

chrome闪退后打不开问题 打开立即闪退

今天刚遇到,大概率是某些网站引起的闪退,重启和清理也不能解决问题 网上到处都是答非所问,还有什么打开chrome再进行设置这种回答 在此解决下 注意该方法根据我测试,唯一会损失的是chrome扩展,可以提前去 C:\Users…

【人脸朝向识别与分类预测】基于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:事务管理…

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

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

C++面试基础:如何高效利用CPU缓存

目录 局部性原理(Locality Principle) 数据结构的布局 缓存友好的算法 缓存大小和关联性 避免随机访问 使用缓存友好的数据结构 总结 高效利用CPU缓存是编写高性能C代码的关键之一。以下是一些在面试中可能会讨论到的方法。 局部性原理(Locality Principle) 时间局部性…

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攻击分为两…