APP项目测试 之 APP性能测试-- 性能测试工具(SoloPi工具)

1.SoloPi简介

(1)什么是SoloPi?

SoloPi 是一个无线化、非侵入式的 Android 自动化工具 ,具备 录制回放、性能测试 等功能。

(2)SoloPi的作用是什么?

  • 基础性能测试:能够记录待测应用的各项指标,可以在悬浮窗中观察实时更新的数据,也可以对性能数据进行录制,在录制结束后查看图表;同时,还支持性能加压,能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现。

  • 录制回放:通过SoloPi执行用例步骤,能够将用户的操作记录下来,支持在各个设备上进行回放,这一切都能够在手机上独立完成。

  • 一机多控:支持通过操作一台主机设备来控制多台从机设备,不需要在各个设备上分别进行重复冗杂的兼容性测试,能够极大提升兼容性测试的效率。

(3)SoloPi安装注意事项

可独立安装的 SoloPi(APK,IOS无该版本),像普通APP一样安装

(4)SoloPi使用时注意事项

SoloPi使用时,需要申请悬浮窗权限,adb权限,读写权限 


2.模拟器的安装

(1)将软件安装包放置在无中文路径下,双击安装:

(2)安装apk:

设置机型:


3.ADB工具安装介绍 

(1)ADB工具是什么?

  • ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。
  • ADB 也是 Android SDK 中的一个工具,可以直接操作管理 Android 模拟器或者真实的 Android 设备。
  • ADB 是一个可以控制安卓设备的通用命令行工具,可以做为Android与PC端连接的一个桥梁,所以ADB又称为安卓调试桥(注意:是安卓,不是iOS),用户可以通过adb在电脑上对Android设备进行全面操作,比如安装和调试应用,操作文件的传输等。

  1. ADB(Android Debug Bridge)是一个通用命令行工具,也是Android软件测试开发工作者常用的调试工具。本质是调用命令,解决工具能力的边界。
  2. ADB可以用来安装卸载软件管理安卓系统软件启动测抓取操作日志

(2)注意事项

  • 如果Windows的系统已经安装了雷电模拟器,则忽略ADB工具安装介绍
  • macOS系统如果安装的是 MuMu模拟器 ,还需要先安装JDK,然后单独安装SDK(软件开发工具包)
  • 后续操作模拟器时需要用到SDK工具中adb命令

(3)安装ADB工具

ADB环境准备:

ADB环境准备
安装使用 ADB 工具前,需要确认自己的电脑上已经安装并配置 JDK 环境。

1)下载ADB 

Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Mac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip

解压文件:

2)配置环境变量

把解压路径放到系统变量里去(Path)

3)安装结果验证

win+R-->cmd-->abd version-->abd:

(4)ADB命令使用

作用:通过ADB命令能够实现自动化相关测试,提升测试效率

1)查看已连接的设备列表

  • adb devices
  • 这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示。

注意:有时候会把鼠标、键盘等通过USB连接到计算机的设备也显示出来。


2)无线连接设备:

  • adb connect 手机ip(手机和电脑处于同一网段)
  • 如果是USB连接,直接会连接ADB;
  • 如果是想通过网络连接(有线或者无线),则需要在同一个局域网,通过IP连接。上面192.168.1.61替换成想要连接设备的IP即可。

3)断开连接设备:

  • adb disconnect 手机ip

4) 开启adb服务

  • adb start-server

5)关闭adb服务

  • adb kill-server

6)安装软件包 

  • adb install /路径/软件包文件名
  • (-r 保留数据 -t 强制覆盖 例如: adb install -r -t /路径/软件包的文件名)
  • -r 代表如果apk已安装,重新安装apk并保留数据和缓存文件。apk路径则可以直接将apk文件拖进cmd窗口,记得加空格。

7)卸载软件包

  • adb uninstall app的包名  
  • 如果卸载 app 但需要保留数据和缓存文件:adb uninstall -k (apk包名)

8)获取包名 

  • 获取手机里所有的包名: adb shell pm list packages
  • 获取手机里所有的系统应用的包名: adb shell pm list packages -s
  • 获取手机里所有第三方软件的包名: adb shell pm list packages -3

9)获取当前窗口(注意大小写区分)

  • Windows: adb shell dumpsys window | findstr mCurrentFocus((需要打开目标软件
  • Mac/linux: adb shell dumpsys window | grep mCurrentFocus

10)清除缓存

  • adb shell pm clear 包名  


11)启动/停止应用  

  • 启动: adb shell am start 包名/activity名
    • (包名是软件的标识,Activity主要描述app的某个页面)
  • 停止: adb shell am force-stop 包名

12)获取手机日志

  • adb logcat > 本地文件
  • 执行完后Ctrl+C结束日志获取
  • 注意:执行命令后,手机上操作复现步骤
  • 抓取日志以后重定向到某个文件
  1. '>' : 覆盖文件内容
  2. '>>' : 追加在文件末尾
  3. 使用场景: 测试期间记录日志. adb logcat >本地文件
  4. 避免问题由于不确定复现步骤而导致无法复现,并且被研发拒绝.

13)获取启动时间

  • adb shell am start -W 包名/activity名 
  • 常见参数:
    • -W :获取时间
    • -S:启动前强行停止应用 (冷启动的时间)
    • -R 数字: 启动次数
    • 注意:参数均为大写,顺序可以调整,-R后必须是数字
  • 常见的三个指标:
    • ThisTime: 当前activity的时间。

    • TotalTime:应用的启动时间,包括创建进程、App初始化、Activity初始化到界面显示。

    • WaitTime:前一个应用activity pause的时间+TotalTime


14)获取内存信息

  • adb shell dumpsys meminfo 包名  

  • (1) Native/Dalvik 的 Heap 信息

          如果发现这个值一直增长,则代表程序可能出现了内存泄漏(Out of memary)。

  • (2) Total 的 PSS 信息

        这个值是应用真正占据的内存大小,通过这个信息,可以轻松判别手机中哪些程序占内         存比较大


15)获取CPU

  •  adb shell dumpsys cpuinfo (查看当前CPU占用情况)
  • adb shell top -s 9(代表CPU)

  • 参数含义:
    • PID : 应用程序ID
    • S : 进程的状态(S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数)
    • THR : 程序当前所用的线程数
    • VSS : 虚拟耗用内存(包含共享库占用的内存)
    • RSS : 实际使用物理内存(包含共享库占用的内存)
    • PCY : 前台(fg)和后台(bg)进程
    • UID : 用户身份ID
    • Name : 应用程序名

16)获取流量消耗值 

  • 获取userId : adb shell dumpsys package 包名 | findstr userId
  • 获取上行流量(返回数据单位bytes): adb shell cat proc/uid_stat/userId/tcp_snd
  • 获取下行流量(返回数据单位bytes)adb shell cat proc/uid_stat/userId/tcp_rcv
  • 注意:cat后的路径是固定; userId中的'i"是大写; package后不加s

17)稳定性测试(Monkey)

1. adb shell monkey -p 包名 数字 -v > 本地文件
2. -v -v -v : 最高级别日志
3. 常用命令 :adb shell monkey -p 包名 10000 -v -v -v --throttle 500 > 本地文件
  • 语法:adb shell monkey -p 包名 次数  -v >本地文件
  • 说明:
    • -p 指定包名 (所有命令都在此包内执行,如不指定,则在整个系统内执行)
    • -v log详细程度(-v -v -v :最高级别日志
    • --throttle 单步延时(每步操作间隔,单位毫秒)
    • --pct-touch 点击事件
    • 常用命令:adb shell monkey -p 包名 10000 -v -v -v --throttle 500 > 本地文件
  • 举例:
    • 不控制事件:adb shell monkey –p com.tpshop.malls –v –v 1000 >C:\Users\18810\Desktop\monkey.txt
    • 控制事件:adb shell monkey –p com.tpshop.malls --throttle 100 --pct-touch 50 --pct-motion 50 –v –v 1000 >C:\Users\18810\Desktop\monkey.txt


(5)模拟器使用常见异常处理  

问题1: devices offline (设备离线) 解决方案:重启模拟器
问题2: devices not found (找不到设备) 解决方案:重启模拟器
问题3: more than one devices emulater(连接了多个设备)获取设备列表:adb devices断开不需要的设备: adb disconnect 手机ip

4.SoloPi工具的安装使用

(1)安装SoloPi工具

打开手机模拟器,直接将本地电脑的 SoloPi.apk 拖入模拟器自动安装

(2)验证SoloPi工具

安装成功后桌面显示 SoloPi 软件图标
双击启动SoloPi工具,点击确定获得对应权限

(3)SoloPi工具使用

进入点击性能测试”-->点击全局下拉框(选择指定APP):
勾选性能测试指标:
启动开始监测--> 打开被测APP直接操作-->操作完毕后停止并自动保存:
返回SoloPi查看监测示意图:
可以直接导出保存的数据:
在共享文件夹打开本地电脑位置:

未完待续。。。

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

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

相关文章

IOS safari 播放 mp4 遇到的坎儿

起因 事情的起因是调试 IOS 手机下播放服务器接口返回的 mp4 文件流失败。对于没调试过移动端和 Safari 的我来说着实费了些功夫,网上和AI也没有讲明白。好在最终大概理清楚了,在这里整理出来供有缘人参考。 问题 因为直接用 IOS 手机的浏览器打开页面…

Mac 环境 VVenC 编译与编码命令行工具使用教程

VVenC VVenC 是一个开源的高效视频编码器,专门用于支持 H.266/VVC (Versatile Video Coding) 标准的编码。H.266/VVC 是继 HEVC (H.265) 之后的新一代视频编码标准,主要目的是提供比 HEVC 更高的压缩效率,同时保持或提高视频质量。H.266/VVC…

手搓一个ChatUI需要分几步

只关注项目代码的同学可以直接跳转目录中的正文部分,查看项目仓库和功能介绍。 引言 Chatbot的UI界面设计,是和传统软件不同的:都是当面一个简洁的对话框,框里预备着热乎的工具,可以随时更新。 像我这样做工的牛马&a…

018-spring-基于aop的事务控制

1 先配置平台事务管理器 2 在配置 spring提供的advice 3 事务增强的aop 总结&#xff1a; 事务就是要做2个配置&#xff1a; <!-- 1 开启事务管理器 不同的框架对应不同的事务管理器 --> <bean id"transactionManager" class"org.springframework.j…

IDEA工具使用介绍、IDEA常用设置以及如何集成Git版本控制工具

文章目录 一、IDEA二、建立第一个 Java 程序三、IDEA 常用设置四、IDEA 集成版本控制工具&#xff08;Git、GitHub&#xff09;4.1 IDEA 拉 GitHub/Git 项目4.2 IDEA 上传 项目到 Git4.3 更新提交命令 一、IDEA 1、什么是IDEA&#xff1f; IDEA&#xff0c;全称为 IntelliJ ID…

让 Agent 具备语音交互能力:技术突破与应用前景(16/30)

让 Agent 具备语音交互能力&#xff1a;技术突破与应用前景 一、引言 在当今数字化时代&#xff0c;人机交互方式正经历着深刻的变革。从早期的命令行界面到图形用户界面&#xff0c;再到如今日益普及的语音交互&#xff0c;人们对于与机器沟通的便捷性和自然性有了更高的追求…

【Unity3d】C#浮点数丢失精度问题

一、float、double浮点数丢失精度问题 Unity3D研究院之被坑了的浮点数的精度&#xff08;一百零三&#xff09; | 雨松MOMO程序研究院 https://segmentfault.com/a/1190000041768195?sortnewest 浮点数丢失精度问题是由于大部分浮点数在IEEE754规范下就是无法准确以二进制…

单元测试3.0+ @RunWith(JMockit.class)+mock+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上面, 一般用实现类 Injectable 在测试案例中声明…

【复刻】数字化转型是否赋能企业新质生产力发展?(2015-2023年)

参照赵国庆&#xff08;2024&#xff09;的做法&#xff0c;对来自产业经济评论《企业数字化转型是否赋能企业新质生产力发展——基于中国上市企业的微观证据》一文中的基准回归部分进行复刻基于2015-2023年中国A股上市公司数据&#xff0c;实证分析企业数字化转型对新质生产力…

【数据仓库】hadoop3.3.6 安装配置

文章目录 概述下载解压安装伪分布式模式配置hdfs配置hadoop-env.shssh免密登录模式设置初始化HDFS启动hdfs配置yarn启动yarn 概述 该文档是基于hadoop3.2.2版本升级到hadoop3.3.6版本&#xff0c;所以有些配置&#xff0c;是可以不用做的&#xff0c;下面仅记录新增操作&#…

使用 CSS 的 `::selection` 伪元素来改变 HTML 文本选中时的背景颜色

定义 ::selection 伪元素&#xff1a; 在你的 CSS 文件中&#xff0c;添加 ::selection 伪元素&#xff0c;并设置 background-color 属性来改变选中文本的背景颜色。 示例代码&#xff1a; ::selection {background-color: yellow; /* 你可以根据需要更改颜色 */color: black…

【测试】接口测试

长期更新好文,建议关注收藏! 目录 接口规范接口测试用例设计postmanRequests封装接口自动化框架实例复习HTTP超文本传输协议 复习cookie+session 实现方式 1.工具 如postman ,JMeter(后者功能更全) 2.代码 python+requests / java+httpclient【高级】接口规范 传统接口 RE…

MATLAB关于集合的运算(部分)

集合运算比较两个集合中的元素&#xff0c;以找出共性或差异 i n t e r s e c t intersect intersect表示两组数据的交集 i s m e m b e r ismember ismember表示查找数据的集合成员 u n i o n union union表示两个数据集的并集 u n i q u e unique unique表示查找数据集的…

Postman[7] 内置动态参数及自定义的动态参数

postman 内置动态参数和自定义的动态参数 1.内置动态参数 格式&#xff1a;{{$参数名}} 1.1时间戳 {{$timestamp}} //生成当前时间的时间戳 1.2随机整数 {{$randomint}} //生成0-1000之间的随机数 1.3GUID字符串 {{$guid}} //生成随机GUID字符串 2.自定义动态参数 格式…

【C++】探索一维数组:从基础到深入剖析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;1. 什么是一维数组&#xff1f;一维数组的特点&#xff1a;示例 &#x1f4af;2. 一维数组的创建创建语法示例代码示例 1&#xff1a;创建整型数组示例 2&#xff1a;使用常…

为什么要用ZGC

一、为什么要用 ZGC 问题 我们有个“智慧园区”的项目,我们的下游系统“交叉带”[硬件系统]要求我们服务 60ms内返回结果&#xff0c;并且可用性要达到 99.99%。当时使用的是 G1垃圾回收器&#xff0c;单次 Young GC 40ms&#xff0c;一分钟10次&#xff0c;接口平均响应时间…

联通 路由器 创维SK-WR9551X 联通华盛VS010 组mesh 和 锐捷X32 PRO 无缝漫游

前言 联通路由器&#xff1a;联通创维SK-WR9551X&#xff0c;联通华盛VS010组mesh&#xff0c;并与锐捷X32 PRO混合组网&#xff0c;开启无限漫游。 1、mesh ≠ 无缝漫游 mesh是实现路由器快速组网的一种方式&#xff0c;通过mesh组网后可以实现无缝漫游。 mesh组网的设备要…

015-spring-动态原理、AOP的xml和注解方式

强制使用cglib动态代理 spring-AOP的使用

Nginx代理本地exe服务http为https

Nginx代理本地exe服务http为https 下载NginxNginx命令exe服务http代理为https 下载Nginx 点击下载Nginx 下载好之后是一个压缩包&#xff0c;解压放到没有中文的路径下就可以了 Nginx命令 调出cmd窗口cd到安装路径 输入&#xff1a;nginx -v 查看版本 nginx -h&#xff…

计算机网络ENSP课设--三层架构企业网络

本课程设计搭建一个小型互联网&#xff0c;并模拟Internet的典型Web服务过程。通过此次课程设计&#xff0c;可以进一步理解Internet的工作原理和协议过程&#xff0c;并提高综合知识的运用能力和分析能力。具体目标包括&#xff1a; &#xff08;1&#xff09;掌握网络拓扑的…