如何进行App性能测试?SoloPi是最佳选择!

news2024/9/21 0:27:06

目录

引言

SoloPi简介

SoloPi特点

SoloPi的主要功能

下载SoloPi

安装SoloPi

使用SoloPi进行性能测试

性能数据查看与记录

环境加压

响应耗时计算工具

注意事项

Solopi提供的各项性能指标介绍


引言

大家好!我是凡哥。

今天我想跟你们分享一下如何进行App性能测试,同时介绍一个非常好用的工具——SoloPi。

我们都知道,在如今这个数字化时代,移动应用程序已经成为人们生活和工作中不可或缺的一部分。而App性能测试就是为了确保这些应用程序在各种条件下都能够正常运行,并提供出色的用户体验。然而,很多人并不知道如何进行有效的App性能测试,更不知道该使用哪种工具。

因此,这篇文章将为你详细介绍SoloPi工具的使用方法和测试技巧,帮助你更加轻松地进行App性能测试。

SoloPi简介

SoloPi是蚂蚁金服开发的一款无线化、非侵入、免Root的Android专项测试工具。直接操控安卓系统的手机或智能设备,即可完成自动化的功能、性能、兼容性、以及稳定性测试等工作,降低广大测试开发者的测试成本,提升测试效率。

SoloPi特点

1、免费开源
2、纯Java开发
3、可跨平台
4、轻量级,apk仅4.50 MB
5、使用adb命令 ,安装简单
6、本身对CPU、内存占用极小,基本可以忽略不计
7、操作简单
8、使用Apache-2.0授权协议

SoloPi的主要功能

SoloPi拥有录制回放、性能测试、一机多控三项主要功能。同时,SoloPi还支持性能加压,能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现。除了常规性能指标,SoloPi还提供了启动耗时计算工具,测试同学只需要点击两次按钮,就可以得到最贴近用户体验的启动耗时数据。同时,启动耗时计算工具还可以通过广播调用,可以非常方便地与UI自动化测试打通。

下载SoloPi

1、安卓桌面

链接:https://pan.baidu.com/s/1MVi6gbiFPC7Ds9ySwbz2lQ
提取码:zq6v

2、SoloPi(版本0.11.1)

链接:https://pan.baidu.com/s/18mTpsMMb20FU5N4GGPslsQ
提取码:ss2a

SoloPi 最新版本下载地址: https://github.com/alipay/SoloPi/releases

安装SoloPi

1、安装并配置ADB环境变量

2、用数据线连接电脑和被测安卓手机或智能设备

3、输入cmd回车,打开命令行窗口,执行如下命令安装桌面:

C:\Users\User>adb install -r C:\Users\User\Desktop\小康安装工具\desktop.apk
Success

说明:如果是安卓手机,请跳过此步骤。

4、执行如下命令安装SoloPi

C:\Users\User>adb install -r C:\Users\User\Desktop\小康安装工具\SoloPi.apk
Success

说明:可以在安装命令后直接将本地apk文件拖拽进去,回车执行安装命令。出现Success说明安装成功。

5、安装好SoloPi以后,首次打开需要进行一些授权操作。

(1)申请ADB权限

在命令行窗口输入adb tcpip 5555 命令后,点击【重试】即可。

(2)申请浮窗权限

请点击【前往授权】,授予SoloPi显示悬浮窗的权限,然后返回该界面点击【我已授权】。SoloPi在运行过程中需要悬浮窗来展示实时数据或者通过操作悬浮窗来执行操作。

 (3)添加到后台白名单

SoloPi需要长时间在后台运行以监控应用的性能或者执行操作,为防止Android系统将SoloPi进程回收,需要用户手动将SoloPi添加到后台白名单中。可以选择不再提示,之后SoloPi将不再对添加白名单进行提示。

 (4)申请相机、录制屏幕权限

对于一机多控,SoloPi需要额外申请相机、录制屏幕权限,用于主从机的扫描连接和响应耗时计算。

使用SoloPi进行性能测试

1、介绍

记录待测应用的各项性能指标,支持实时观察模式与录制模式,支持通过图表展示以往录制的数据,另外支持性能加压与响应耗时计算功能。

性能数据查看与记录

  1. 勾选性能项,Solopi会展示对应的性能指标

    在进入应用前,Solopi会显示全局指标,进入应用后,Solopi会显示应用最上层进程的相关性能指标。

    CPU、内存指标为进程维度,响应耗时、帧率、网络为应用维度,电池为全局指标。

    具体性能指标描述请参考后文性能指标一段。

  1. 点击悬浮窗中的应用标题,进入目标应用,切换为进程维度数据

  2. 点击开始按钮(绿色三角),进行性能数据录制,可进行相关操作

  3. 结束录制,点击终止按钮(红色圆形),Solopi会提示录制数据存放的位置,数据保存在/sdcard/solopi/records/XXX目录下

    录制数据为csv格式,包含三列,第一列为Unix时间戳,第二列为数据数值,第三列为额外字段

  4. 点击悬浮窗右上角关闭键(红色"X")可关闭悬浮窗,需要手动回到性能测试页面,可在录制数据查看一项中查看之前录制过的数据。

  5. 在录制项筛选中,可以选择之前录制的各项数据进行观看,内存与CPU会记录在顶层出现过的进程的数据。如果发生了进程切换,会记录前后10次数据。

  6. 当录制项过多时,可以点击右上角删除图标,对旧数据进行删除。

环境加压

Solopi提供了环境加压的功能,可以提供CPU与内存加压

由于android系统的调度,CPU与内存加压均存在一定限制,当应用处于后台状态时,CPU加压占比会遭到一定程度的限制,而内存加压过大可能导致Solopi被系统进行回收,敬请谅解。

  1. 内存加压

  2. CPU加压

响应耗时计算工具

Solopi响应耗时计算工具,通过录屏分帧的方式自动识别起始点和结束点,精确计算耗时。

视频演示

响应耗时计算

特性

  • 模拟用户视觉,计算结果更贴近用户体验
  • 自动记录点击起始点,自动识别屏幕变化结束点
  • 通过OpenCV进行图像识别
  • 支持原生应用、H5、游戏
  • 支持启动耗时、页面跳转耗时、列表滑动耗时、动画耗时

使用方法

  1. 进入Solopi性能测试页面,点击启动耗时计算。

  2. 建议默认参数无需修改,点击启动按钮,会弹出录制浮窗。

  3. 切换至待测应用,并进入操作路径的起始页面。

    如果不需要关注细微的动画,请将二值对比差异设置为2%

  4. 点击开始录制(按钮会变为结束录制),然后在被测应用界面执行操作

  5. 当页面停止变化后,点击结束录制。几秒后会显示测试结果。

注意事项

  • 结束页存在轮播图?
    • 请在进入结果页后,在轮播图变化前点击结束录制
  • 测试结果异常:过大,过小,或为负数?
    • 本次结果失效,请重新测算。结果以多次测算后稳定的结果为准。
  • 结束录制后,一直阻塞在计算中?
    • 请关闭浮窗,退出Solopi,重新打开耗时计算工具进行测算。

Solopi提供的各项性能指标介绍

CPU

​ 包含应用顶层Activity所在进程的CPU占用百分比与全局CPU占用百分比,对于单进程应用,该数据表示该应用的CPU占用情况;对于多进程进程应用,该数据表示顶层UI进程的CPU占用情况,当发生进程切换时,Solopi能够自动切换到新的进程数据。

内存

​ 包含应用顶层Activity所在进程的PSS(Proportional Set Size,即实际使用内存)内存、Private Dirty(私有内存)内存与全局占用内存,对于单进程应用,该数据表示该应用的内存占用情况;对于多进程进程应用,同CPU一样,Solopi也支持自动切换顶层进程。

帧率

​ 包含应用实际帧率,延迟帧数、1秒内单帧最长延迟时间与延迟帧数占所有帧数的百分比。属于应用维度数据。目前Solopi是根据设备gfxinfo信息计算1秒内超时帧时间,从而反推出实际帧率,所以在接近静止的情况下, 部分帧率可能显示有误。推荐在滑动或页面切换等动态场景下进行帧率测试。

网络

​ 包含应用上下行速率与累计流量以及全局上下行速率与累计流量。属于应用维度数据。点击右侧清零按钮可以清空累计数据。

响应耗时

​ 包含应用点击的响应耗时与刷新耗时数据。属于应用维度数据。从用户点击开始,到系统第一次发出界面更新时间为响应耗时,到系统停止界面刷新的时间为刷新耗时。

当目标页面存在动画时,可能影响响应耗时计算的准确性。

电池

​ 包含设备瞬时电流与电流均值。属于全局维度数据。点击右侧清零按钮可以清空电流累计数据。

部分设备存在瞬时电流更新缓慢的情况,这种情况下均值意义较小。


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

在我的QQ技术交流群里(技术交流和资源共享,广告勿扰)

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

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

相关文章

Python的接口自动化-读写excel文件

目录 引言 一、xlrd、xlwt以及xlutils安装 二、xlrd操作excel文件的数据读取 三、xlwt向excel文件写入数据 四、xlutils操作excel文件 五、封装操作excel读和写的类 引言 使用python进行接口测试时常常需要接口用例测试数据、断言接口功能、验证接口响应状态等&#xff0…

Mysql升级8.0后日期类型兼容性问题

背景 最近对原有项目数据库进行升级,从MySQL 5.7 升级到8.0,因此项目种的驱动程序也要做相应升级。 问题 一、 升级后报:java.time.LocalDateTime cannot be cast to java.util.Date 该问题是因为代码中使用Map类型获取查询返回值&#xf…

lightdb检测不兼容工具CheckUnsupportOracle使用说明

oracle有很多特性在lightdb无法使用,使用该工具可以即时扫描某个在线数据库或本地文件夹中有哪些不兼容特性,-a -x对oracle不兼容特性有所区别,扫描范围可参考后续表格。 0、使用限制 默认扫描存储过程,函数及包默认仅支持oracl…

19JS10——预解析

文章目录 一、预解析二、变量预解析和函数预解析三、预解析案例1、案例1:结果是几?2、案例2:结果是几?3、案例3:结果是几?4、案例4:结果是几? 目标: 1、预解析 2、变量预…

电脑连上wifi但显示无网解决方案分享,轻松搞定电脑上网问题

有的时候我们会遇到这样的问题:电脑明明连接了网络但仍不能上网,并且出现错误提示“WiFi已连接但没有互联网”。遇到这种情况,我们可以先使用另一台设备访问网络,看看你能否正常上网。如果也不能上网,可以尝试重新启动…

七牛云存储开启referer防盗链后,微信小程序访问提示403

点击七牛云存储存储桶绑定的加速域名 配置站点域名和微信小程序域名 是否允许空Referer一定要打开,否则小程序上的视频或图片访问时将提示403

# 如何在Git上更改本地分支名称和远程分支名称

有时候我们需要修改git分支名称,例如不合理的分支名称。本篇文章分享了如何轻松地修改Git本地分支名称和修改远程分支名称。 在Git中,通常使用分支来使开发与您的主要工作流程分开。在软件工程团队中,通常要实施特定的工作流程。例如&#x…

[C语言实现]数据结构之《关于我转生成队列这档事》

🥰作者: FlashRider 🌏专栏: 数据结构 🍖知识概要:详解队列的概念、顺序队列和链式队列的优点和缺点,以及代码实现。 目录 什么是队列? 选择什么结构来实现队列? 链式队列的实现 队列的结构…

在UE中使用Stencil功能

Stencil是指利用深度buffer的后8位数据进行bit mask信息的绘制,从而制作类似角色mask遮罩等效果,下面就在UE中进行制作。 1.首先在Project Settings项目设置中开启stencil,搜索stencil关键字在Custom Depth Stencil Pass选项中设置为Enabled…

PNAS:勘探地球物理学论文

阅读 《Sensing prior constraints in deep neural networks for solving exploration geophysical problems dendrimers》 题目译为《深度神经网络中用于解决勘探地球物理问题的感知先验约束》 研究意义 该研究提出三种可能的策略,以有效地讲地质和/或地球物理约…

面试官再问分布式事务,三天吃透这份至尊级学习笔记怼他

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式…

ABAP 新语法--Open SQL(草稿)

1. 常量 1.1 常量赋值 常量字段可以用来为内表中的部分字段赋初始值,字段类型和长度依据输入常量的值决定 SELECTmara~matnr, " 物料号mara~matkl, " 物料组mara~mtart, " 物料类型 AS lkenz, " 删除标识,常量空字符串123 AS fla…

QCon高分演讲:火山引擎容器技术在边缘计算场景下的应用实践与探索

近日,火山引擎边缘云原生团队的同学在QCon全球软件开发大会上分享了火山引擎容器技术在边缘计算场景下的应用实践与探索,并在一众AIGC、LLM等当下热门议题中脱颖而出,入选观众满意度投票中“叫好又叫座议题Top5”。 以下是演讲全文&#xff1…

论文阅读 Interpretable Unified Language Checking

本文提出了一种新的方法来解决多种自然语言处理任务中的问题,包括公平性检查、事实检查、虚假新闻检测和对抗攻击检测等。该方法基于大型语言模型和少量人类标注的提示信息,通过在模型中引入相应的提示,来提高模型的性能和可解释性。该论文的…

数据库索引及优化

索引 1.索引简介 1.1 概念 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。 注:在数据之外,数据库系统还维护着满足特定查找算法的数据结构&…

第二章---感知机

🌞欢迎来到深度学习的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🙏作者水平很有限,如果发现错误&#xff…

centos各个版本jenkins部署

目录 官网安装方法 安装java,**注意java版本,新版本jenkins只支持jdk11及以上 安装jenkins Jenkins启动失败的七个问题 jenkins 部署脚本 Nginx转发jenkins服务 官网安装方法 Redhat Jenkins Packages (jenkins-ci.org)https://mirrors.jenkins-c…

微信朋友圈怎么定时发送?微信朋友圈定时发送有什么优势?

刷朋友圈已经成为大部分人日常中不可缺少的一件事,同时也是企业用来触达客户的重要渠道。下面一起来了解一下微信朋友圈定时发送的优势有哪些,还有怎么定时发朋友圈吧。 定时发朋友圈的优势有哪些? 1、让企业能够更好地管理自己的宣传信息 …

HttpRunner 接口自动化测试框架实战,打造高效测试流程

简介 2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试场景数据更加简洁。在此,利用业…

Tree of Thoughts: Deliberate Problem Solving with Large Language Models

思维树:用大模型深思熟虑的解决问题 Tree of Thoughts: Deliberate Problem Solving with Large Language Models概述:核心思想:背景:IO promptingCoTCoT-SC 算法流程:主要实验对象:24点游戏创意写作填字游…