一、Solopi 介绍
它是一款由支付宝开源的 Android 自动化工具。主要功能如下:
- 录制回放:可基于 accessibilityservice、chromedevtoolsprotocol 和图像识别三种模式实现精确查找,能在设备本地回放,还可转换为 appium/macaca 等框架的脚本对接云测平台,端上提供用例编辑、流程控制等功能,降低用例维护成本。
- 性能测试:能够记录待测应用的各项指标,用户可在悬浮窗中观察实时更新的数据,也可对性能数据进行录制并在结束后查看图表。支持性能加压,可对 CPU、内存进行限制,复现应用在性能较差、网络环境不佳场景下的表现,还提供启动耗时计算工具。除了常规性能指标,SoloPi还提供了启动耗时计算工具,测试同学只需要点击两次按钮,就可以得到最贴近用户体验的启动耗时数据。同时,启动耗时计算工具还可以通过广播调用,可以非常方便的与UI自动化测试打通。
- 一机多控:通过操作一台主机设备来控制多台从机设备,无需在各个设备上分别进行重复冗杂的兼容性测试,极大地提升了兼容性测试的效率。
特点是无线化和非入侵式
无线化
- 摆脱物理连接限制:传统的 Android 设备测试通常需要通过 USB 线将设备与 PC 连接,借助 PC 上的工具和软件来进行操作和调试,如使用 ADB 工具时,常通过 USB 连接实现电脑与手机的通信2。而 SoloPi 利用 Android 系统基于网络通信(Socket)的 ADB 连接模式,集成相关的开源库,如 AdbLib,在移动端实现了 ADB 命令执行工具,使得设备之间可以通过网络进行通信和控制,无需使用 USB 线连接2。
- 方便灵活操作:测试人员可以在手机等移动设备上直接操作 SoloPi,对被测应用进行测试,而不必局限于在 PC 端进行操作,测试人员可以更便捷地在不同的测试环境和场景中使用,提高了测试的灵活性和便捷性。
非侵入式
- 不修改被测应用代码:侵入式的测试工具可能需要在被测应用的代码中插入一些特定的代码或模块,以便实现对应用的监控、数据采集等功能。SoloPi 不需要对被测应用的源代码进行任何修改、添加或嵌入操作,不会影响被测应用的原有代码结构和功能完整性,保证了被测应用在测试过程中的真实性和原始性。
- 不依赖应用内部接口:它不依赖于被测应用提供特定的内部接口或测试接口来实现其自动化测试功能,而是通过系统的辅助功能以及图像匹配等智能查找算法,对应用界面上的控件进行精准定位和操作,进而实现对应用的各种测试,如录制用户操作、监测性能指标等12。
二、使用步骤
SoloPi 是一款强大的 Android 自动化测试工具,下面为你详细介绍使用它进行性能测试的步骤:
准备工作
1、可以在SoloPi的github主页获取SoloPi最新版本的APK:https://github.com/alipay/SoloPi/releases
2、测试机真机保证开启开发者模式并且可以与电脑通过adb进行通信
3、将SoloPi的APK通过adb安装到测试机真机上
4、打开SoloPi的app,根据提示一步步完成设置即可以开始使用(手机给solopi授权)。 SoloPi提供了一种能够在 Android 手机上不需要 root 也能实现应用提权的方案。
配置性能测试
- 打开 SoloPi 应用:在 Android 设备上找到并打开 SoloPi 应用程序。
- 进入性能测试界面:打开 SoloPi 后,点击主界面中的 “性能测试” 选项,进入性能测试的配置页面。
- 选择待测应用:在性能测试配置页面中,点击 “选择应用” 按钮,从应用列表中选择要进行性能测试的目标应用。
- 选择性能指标:SoloPi 支持多种性能指标的测试,如 CPU 使用率、内存占用、网络流量、帧率等。根据测试需求,勾选要监测的性能指标。
- 设置测试参数
- 测试时长:设置性能测试的持续时间,例如可以设置为 5 分钟、10 分钟等。
- 采样间隔:设置性能数据的采样间隔时间,即每隔多长时间采集一次性能数据,可根据需要调整采样间隔的长短。
执行性能测试
- 启动测试:完成上述配置后,点击 “开始测试” 按钮,SoloPi 会自动启动目标应用,并开始记录所选的性能指标数据。
- 操作应用:在测试过程中,按照预先设计好的测试场景,手动操作目标应用,例如打开不同的页面、进行各种功能的操作等,以模拟真实用户的使用行为。
- 实时监控:在测试过程中,SoloPi 会在界面上实时显示各项性能指标的变化情况,你可以随时观察应用的性能表现。
查看和分析测试结果
- 停止测试:当达到预设的测试时长后,SoloPi 会自动停止测试;也可以手动点击 “停止测试” 按钮来结束测试。
- 查看测试报告:测试结束后,SoloPi 会生成详细的性能测试报告。点击 “查看报告” 按钮,即可查看测试报告。测试报告中会以图表和表格的形式展示各项性能指标随时间的变化情况,以及各项指标的平均值、最大值、最小值等统计数据。
- 分析结果:根据测试报告中的数据,分析应用的性能表现。例如,如果发现 CPU 使用率过高,可能意味着应用存在性能瓶颈,需要进一步排查代码中是否存在高计算量的操作;如果内存占用持续增长,可能存在内存泄漏问题。
其他功能使用(可选)
- 性能加压:SoloPi 支持性能加压功能,你可以对 CPU、内存进行限制,模拟应用在性能较差、网络环境不佳等场景下的表现,以更全面地测试应用的性能稳定性。
- 数据导出:可以将测试报告中的数据导出为 CSV 等格式,方便使用其他数据分析工具(如 Excel)进行进一步的分析和处理。
三、如何模拟真实用户场景
操作行为模拟
- 页面浏览与切换:按照目标应用的业务逻辑和用户使用习惯,模拟用户在不同页面之间的浏览和切换操作。比如在电商应用中,模拟用户从首页浏览商品分类,进入不同商品详情页,再切换到购物车、个人中心等页面。
- 交互操作模拟:模拟用户与应用界面的各种交互,如点击按钮、滑动屏幕、长按、缩放等操作。以社交应用为例,模拟用户点击聊天列表中的对话进入聊天窗口、上下滑动查看聊天记录、长按消息进行复制或删除等操作。
- 输入操作模拟:针对需要用户输入内容的场景,如搜索框、文本输入框等,模拟用户输入不同类型和长度的文本。比如在搜索应用中,模拟用户输入不同的关键词进行搜索,在评论框中输入不同长度和内容的评论。
- 多任务操作:考虑用户在使用应用时可能会同时进行其他操作的情况,如在观看视频时切换到其他应用,然后再切回视频应用继续观看,或者在下载文件的同时进行其他页面的浏览操作等。
数据输入模拟
- 真实数据输入:根据应用的功能和业务场景,输入符合实际情况的数据。例如在银行类应用中,输入真实的银行卡号、交易金额等数据;在地图导航应用中,输入真实的出发地和目的地地址。
- 边界值与异常数据:除了正常数据,还需要模拟输入边界值和异常数据来测试应用的稳定性和容错性。比如在输入年龄时,输入最小值 0、最大值 120 等边界值,以及非数字字符等异常数据,观察应用的性能和响应情况。
- 数据量模拟:根据不同的业务场景,模拟输入不同数量级的数据。例如在文件上传应用中,分别上传小文件、大文件以及多个文件的组合,测试应用在不同数据量下的性能表现。
网络环境模拟
- 不同网络类型:使用 SoloPi 的网络模拟功能,设置不同的网络类型,如 Wi-Fi、4G、3G、2G 等,观察应用在不同网络条件下的性能。比如在视频播放应用中,测试在 Wi-Fi 环境下的高清视频播放流畅度,以及在 4G、3G 网络下的视频加载速度和卡顿情况。
- 网络波动模拟:模拟网络信号不稳定、延迟高、丢包等情况,以测试应用在网络波动时的性能和稳定性。例如在在线游戏应用中,模拟网络延迟和丢包,观察游戏是否出现卡顿、掉线等问题。
时间因素模拟
- 操作时间间隔:模拟用户在操作应用时的自然时间间隔,避免操作过于频繁或过于缓慢。比如在填写表单时,模拟用户思考和输入的时间间隔,而不是快速连续地输入所有内容。
- 不同时段测试:考虑不同时间段用户使用应用的频率和场景差异,在不同时间进行性能测试。例如对于办公应用,可在工作日的工作时间进行测试;对于娱乐应用,可在晚上和周末等用户使用高峰期进行测试。
设备状态模拟
- 电量状态模拟:考虑设备在不同电量状态下应用的性能表现,可将设备电量设置为满电、50%、20% 等不同状态,进行性能测试。例如在移动支付应用中,测试在低电量状态下进行支付操作时的应用响应速度和稳定性。
- 设备内存占用:在测试前,可先打开其他一些应用程序,占用一定的设备内存,然后再启动目标应用进行性能测试,模拟用户在设备同时运行多个应用时使用目标应用的场景。
四、实际案例
社交应用测试
- 测试场景:模拟用户在社交应用中的各种常见操作,如发送文字、图片、语音消息,添加好友,创建群聊,查看朋友圈等。
- 测试过程:打开 SoloPi,选择社交应用作为待测应用,勾选 CPU、内存、网络流量、帧率等性能指标。启动应用后,按照预设场景进行操作,持续操作 30 分钟左右。
- 测试结果:通过 SoloPi 生成的报告发现,在发送大量图片和视频时,网络流量消耗较大,且 CPU 使用率会瞬间升高至 80% 左右,导致短暂的卡顿,帧率从 60fps 下降到 45fps 左右。内存占用方面,随着聊天记录和图片缓存的增加,内存占用逐渐上升。
- 优化措施:对图片和视频进行压缩处理,优化网络传输算法,减少流量消耗和 CPU 处理压力。同时,定期清理聊天记录和缓存,降低内存占用。
电商应用测试
- 测试场景:模拟用户在电商应用中的购物流程,包括浏览商品、搜索商品、加入购物车、结算支付、查看订单等操作。
- 测试过程:使用 SoloPi,选择电商应用,监测 CPU、内存、启动时间、页面加载速度等指标。在不同网络环境下(Wi-Fi、4G)进行测试,每种网络环境下重复操作 10 次。
- 测试结果:在 4G 网络下,部分商品详情页的加载时间超过 5 秒,CPU 使用率在搜索和结算过程中较高,达到 75% 左右。内存占用随着浏览商品数量的增加而逐渐上升,启动时间在冷启动时平均为 8 秒。
- 优化措施:对商品图片进行优化,采用懒加载技术,减少页面加载时间。优化搜索算法,降低 CPU 占用。对应用的启动流程进行优化,减少不必要的初始化操作,缩短启动时间。
游戏应用测试
- 测试场景:以一款大型角色扮演游戏为例,模拟玩家在游戏中的战斗、升级、副本挑战、社交互动等场景。
- 测试过程:打开 SoloPi,选择游戏应用,勾选游戏帧率、CPU 温度、电池电量等指标。让游戏持续运行 1 小时以上,记录性能数据。
- 测试结果:在激烈的战斗场景中,游戏帧率会下降到 30fps 左右,CPU 温度上升至 45℃,电池电量消耗较快,每小时耗电量达到 20% 左右。
- 优化措施:对游戏的图形渲染进行优化,降低特效等级,提高帧率稳定性。优化游戏的代码逻辑,减少 CPU 的运算量,降低温度。合理管理游戏中的资源加载和释放,减少电量消耗。
办公应用测试
- 测试场景:模拟用户在办公应用中创建、编辑、保存文档,发送邮件,安排日程等操作。
- 测试过程:利用 SoloPi,选择办公应用,监测 CPU、内存、响应时间等指标。在设备内存占用较高的情况下进行测试,同时打开多个文档和邮件。
- 测试结果:在同时打开多个文档和发送大附件邮件时,应用的响应时间明显变长,CPU 使用率达到 60% 以上,内存占用也大幅增加,出现了偶尔的卡顿现象。
- 优化措施:优化文档加载和保存的算法,提高响应速度。对邮件发送功能进行优化,采用异步发送方式,减少对主线程的影响。合理管理内存,及时释放不再使用的资源。
五、app内功能和性能指标
性能记录(Performance Records)
这些选项可以勾选以记录对应的性能指标:
·Battery(电池) - 监测设备的电池使用情况,包括电量消耗速率。
·CPU - 记录 CPU 使用率,分析游戏运行时的处理器占用情况。
·Frame Rate(帧率) - 监测屏幕的整体帧率表现,评估流畅度。
·Game FPS(游戏 FPS) - 具体测量游戏的帧率,判断游戏运行是否流畅。
·Memory(内存) - 记录游戏的内存占用情况,检测内存泄漏或溢出问题。
·Network(网络) - 监测游戏的网络连接质量,分析数据包传输情况。
·Response Time(响应时间) - 记录操作的响应延迟,检测交互流畅度。
·Process Status(进程状态) - 监测游戏的后台进程和相关资源占用情况。
·Temperature(温度 BETA) - 记录设备温度,分析是否因过热导致性能下降。(BETA 版可能仍在测试阶段)
·Launch Time(启动时间) - 记录游戏启动所需时间,评估优化情况。
测试结果(Test Result)
·Performance Records(性能记录) - 记录所有选中的性能数据,红点表示当前正在记录数据。
环境模拟(Environment Simulation)
可调整测试环境参数,以模拟不同的运行情况:
·CPU Load (%)(CPU 负载) - 通过滑块调整 CPU 负载率,模拟不同的计算压力。
·CPU Cores (n)(CPU 核心数) - 调整 CPU 使用的核心数量,测试游戏在不同核心数下的表现。
·Memory (MB)(内存) - 设定可用内存大小,模拟内存占用情况,测试游戏的适应能力。