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

相关文章

chatgpt model spec 2024

概述 这是模型规范的初稿,该文档规定了我们在OpenAI API和ChatGPT中的模型的期望行为。它包括一组核心目标,以及关于如何处理冲突目标或指令的指导。 我们打算将模型规范作为研究人员和数据标注者创建数据的指南,这是一种称为从人类反馈中进…

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…

【0379】Postgres内核 Walreceiver (libpqwalreceiver API)分析

文章目录 1. libpqwalreceiver API1.1 四个函数2. Walreceiver IPC3. Walsender IPC4. Walsender - walreceiver protocol1. libpqwalreceiver API walreceiver 中与传输相关的部分,其负责连接主服务器、接收 WAL 文件以及发送消息,是动态加载的,以避免主服务器的二进制文件…

Mediatek Android13 ROM定制

目录 1、系统签名 2、默认关闭WIFI 3、默认关闭Bluetooth 4、默认关闭NFC 5、移除物理键盘支持 6、禁止 ANR、崩溃等的对话框显示 7、修改默认壁纸 8、取消USB PTP MTP MIDI等支持 9、设置Screen Lock默认为None 10、设置Data&time自动 11、设置特定时区 12、设…

手搓一个ChatUI需要分几步

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

linux更换yum源

1.备份系统源文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak2.下载国内的yum源到/etc/yum.repos.d/CentOS-Base.repo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo如无法使用wget命令也可以…

IDEA 社区版 SpringBoot不能启动

报错原因&#xff0c;Failed to load class [javax.servlet.Filter] <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope> </dependency>…

FPGA 4x4矩阵键盘 实现

1原理 FPGA(现场可编程门阵列)4x4矩阵键盘的实现原理主要基于行列扫描法,通过FPGA对键盘的扫描和识别,实现对键盘输入信号的采集和处理。以下是对FPGA 4x4矩阵键盘实现原理的详细解释: 一、矩阵键盘的基本原理 结构:4x4矩阵键盘由4行和4列组成,共16个按键。每个按键位…

如何进行有效沟通?

在信息化系统项目中进行有效沟通&#xff0c;可以参考以下策略和技巧&#xff1a; 沟通技巧 明确沟通目的&#xff1a;确保每次沟通都有明确的目标&#xff0c;了解沟通接收方的需求及偏好&#xff0c;并监督衡量沟通效果。 使用5C原则&#xff1a;正确的语法和拼写&#xff…

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…

Mybatis-Plus时间查询

Mybatis-Plus时间查询 public List<HroAttendanceStatistics> listEffectiveByWorkNo(String workNo) {LambdaQueryWrapper<HroAttendanceStatistics> queryWrapper new QueryWrapper<HroAttendanceStatistics>().lambda();queryWrapper.eq(HroAttendanceSt…

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

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

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

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

再见24你好25

现在是2024年12月31日。 愿我们都有我与我周旋久&#xff0c;宁做我的勇气。一、验证24年的期望事件 1、 1.本身说要出去跑步&#xff0c;但是膝盖伤了&#xff0c;可能以后都跑不成了 2.linux内存方面的东西看过一遍&#xff0c;自己也写了博客&#xff0c;但还是缺乏真正的…

用 Python 从零开始创建神经网络(十八):模型对象(Model Object)

模型对象&#xff08;Model Object&#xff09; 引言到目前为止的完整代码&#xff1a; 引言 我们构建了一个可以执行前向传播、反向传播以及精度测量等辅助任务的模型。通过编写相当多的代码并在一些较大的代码块中进行修改&#xff0c;我们实现了这些功能。此时&#xff0c;…

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

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

npm install 安装选项 -d -s -g

在使用 npm install 时&#xff0c;-d、-g 和 -s 是不同的选项&#xff0c;它们分别代表不同的安装模式或行为。以下是它们的详细解释&#xff1a; 1. -d&#xff1a;--save-dev 含义&#xff1a;将包安装为开发依赖&#xff08;devDependencies&#xff09;。使用场景&#…

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

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