APP性能分析工作台——你的最佳桌面端性能分析助手
目前 MARS-App 性能分析工作台版本为开发者提供Fastbot桌面版的服务。 旨在帮助开发者们更快、更便捷地开启智能测试之旅,成倍提升稳定性测试的效率。
作者:字节跳动终端技术——王凯
背景
Fastbot 是一款由字节跳动 Quality Lab 团队出品,基于 model-based testing 结合机器学习、强化学习的 App 稳定性测试工具。相比 Android 自带的原生 Monkey 等工具,Fastbot 表现出更好的性能,在相同时间内的 Android Activity 覆盖率和代码覆盖率要远高于其他工具。
图 1 Fastbot 性能对比图
之前在《奔跑吧!智能 Monkey之Fastbot跨平台》一文,我们曾详细地介绍了 Fastbot 在跨平台方面的设计思路、技术演进及应用。
图 2 Fastbot 跨平台架构图
目前,Fastbot 已广泛应用于字节客户端类产品的稳定性测试与兼容性测试。每日启动任务数超过 300 次,每日平均发现 5000 个以上的崩溃,并有超过 100 个新捕获的崩溃。借助 Fastbot 的能力,在发版前(主要用在机架测试)就可以修复大部分的 crash,确保线上用户的使用体验。
在 2020 年 12 月,Fastbot 在 Github 上开源后,受到了广大开发者的喜爱,并积极提供的使用反馈,其中两点被反复提及:
1. Android 输出的崩溃以文本形式按时间序存储在 sd 卡中,不方便开发者解析;
2. iOS 没有崩溃的读取支持;
Github 地址
与此同时,在字节跳动内部,我们通过一款内部代号为「Diggo」的桌面端软件,帮助质量测试同学完成 App 的性能测评,给研发同学实现性能问题的归因分析。在打磨、迭代一年多之后,我们决定把它整理、开放出来,为广大的应用开发者和质量测试同学提供服务。
两个团队碰撞后,我们思考为什么不用 Diggo 为 Fastbot 提供一个方便使用的工具环境,或者做一个 Fastbot 的桌面端,为开发者们提供更便捷测试工具呢?MARS-App 性能分析工作台应运而生。
产品介绍
App 性能分析工作台是由火山引擎 MARS-APMPlus 团队打造,是一款 App 性能和稳定性的测试与归因分析的桌面端助手,为开发者提供本地开发调试工具。通过丰富的可视化插件,分析手机中的 App 异常崩溃和性能数据。
目前 MARS-App 性能分析工作台版本为开发者提供 Fastbot 桌面版的服务。并基于 Fastbot 原生功能的基础上,解决了命令行 Fastbot 不方便在本地分析日志的问题,尤其解决了无法在本地对 iOS 崩溃日志进行可视化查询和分析的问题。旨在帮助开发者们更快、更便捷地开启智能测试之旅,成倍提升稳定性测试的效率。
1. 可视化的启动操作
使用过 Fastbot 的用户应该知道:Fastbot 原来的启动方式是通过命令行指定设备、应用以及测试时长等参数。在 MARS-App 性能分析工作台中,我们对原生 Fastbot 进行了封装,开发者可以方便地通过可视化的方式进行设备和 App 的选取,以及参数的编辑。
图 3:软件截图-启动 Fastbot
2. 崩溃日志分析功能
在原来 Fastbot 中,运行结果日志是放在 sd 卡里的 crash-dump.log 文件,不方便开发者进行解析,也没有归类去重等能力。而 App 性能分析工作台新增崩溃日志分析功能,以及解混淆/符号化的能力。当开发者完成 Fastbot 测试后,可以通过「崩溃分析」功能对结果日志进行分析。
图 4:软件截图-崩溃分析
技术说明
基础架构
开发桌面版时,我们参考了 Facebook 的 Flipper, 使用 Electron 技术进行了开发。
设备操作
对 Android 的操作是通过 adbkit 实现了对原有 Fastbot 执行所需要的 adb shell 命令的封装。
iOS 设备控制能力无需单独安装依赖工具,如 Appium 所依赖的 imobiledevice 与 ios-deploy 工具,MARS-App 性能分析工作台参考 imobiledevice 独自实现了一个类 ADB 的设备控制工具,实现了即插即用。
日志解析
Android 通过对 Fastbot 记录的 logcat 日志进行分析。其中,对 Java 崩溃支持了 retrace 操作和去重操作,去重操作的原理是根据日志的堆栈计算 md5 值,md5 值相同的崩溃日志被认为是重复的。
iOS 日志除了支持平常使用的 ips 崩溃日志,还支持 ResourceBug 与 Jetsam 日志的提取与展现,其中 ips 崩溃日志与 ResourceBug 日志均支持符号解析,解析效果参考 Xcode 的 symbolicatecrash。
特别对于 iOS15,ips 崩溃日志记录格式发生了升级,对于以往的符号解析工具,面临了格式兼容问题,而 App 性能分析工作台完美兼容了新老格式,均支持解析。
且对于部分对包大小有优化的 App,如 TEXT 段迁移优化方案,会导致新格式的 ips 崩溃日志丢失有效的 Binary Image 信息,导致 TEXT 段迁移后的代码无法正常符号化。由于段迁移优化方案在字节全线产品均有使用,故该问题成了不得不解决的问题。MARS-App 性能分析工作台针对该问题也提供相应解决方案,即通过 dsym 逆向还原丢失的 Binary Image 信息,目前在字节系 App 中还原准确度高达 99%。大致方案如下:
offset_max = pc – main_low_pc + vm
offset_min = pc – main_high_pc + vm
lib_size = addr – vm + size
align = int(0x1000)
offset = (offset_min / align + 1) * align
结语
目前 MARS-App 性能分析工作台仅支持 Mac 用户安装,预计在 2 月底我们会完成 Windows 的适配,欢迎大家持续关注。
未来,我们会持续提供性能分析的能力;在 2 月底更新的版本中会包含内部版的性能测评工具,提供无侵入免越狱环境下的各项基础指标的测试,4 月底的新版本将会包含性能指标的归因分析能力,敬请期待。
更多产品交流及问题反馈,欢迎添加小助手微信 👏
🔥 火山引擎 APMPlus 应用性能监控是火山引擎应用开发套件 MARS 下的性能监控产品。我们通过先进的数据采集与监控技术,为企业提供全链路的应用性能监控服务,助力企业提升异常问题排查与解决的效率。
👉 点击这里,了解更多产品信息,还可以免费体验试用哦~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
近数据处理(NDP)——GaussDB(for MySQL)性能提升的秘密
摘要:云堆栈的深度集成是释放云数据库力量的关键,华为云在实现这一目标方面处于领先地位,正如GaussDB(for MySQL)所证明的那样。 本文分享自华为云社区《近数据处理(NDP),为GaussDB(for MySQL)性能提升“加冕”》,作者: GaussDB 数据库。 在上一篇文章《首席科学家为您揭秘:GaussDB(for MySQL)云栈垂直集成的力量有多大》我们介绍了GaussDB(for MySQL)的体系架构,这篇文章我们将重点介绍GaussDB(for MySQL)如何将查询处理卸载到存储层,我们将这一特性称之为近数据处理(Near Data Processing),简称NDP。 NDP出现的契机 在计算节点实例上执行查询操作首先需要将数据页面加载到InnoDB缓冲池(buffer pool)。相对传统数据库使用本地存储,云数据库需要通过网络获取数据,因此从存储节点读取页面数据的延迟要高得多。相比社区版MySQL,GaussDB(for MySQL)支持并行查询,可通过多线程并行将数据读取到缓冲池中,但当表数据量较大(包含数百万甚至更多的数据行),分析查询需要扫描大...
- 下一篇
工具 | 如何对 MySQL 进行 TPC-C 测试?
作者:丁源 RadonDB 测试负责人 负责 RadonDB 云数据库、容器化数据库的质量性能测试,迭代验证。对包括云数据库以及容器化数据库性能和高可用方案有深入研究。 |背景 根据 DWorks 2020 年发布的《中国自研数据库登顶 TPC-C 的意义》[1] 报告显示,大于 67.9% 的受访者表示在数据库选型时会参考 TPC-C 的测试结果。对用户来说,性能是数据库选型时最重要的指标之一。而 TPC-C 作为权威的测试基准,是一个能够直观反映软硬件性能的方式。 图片来源:2020 DWorks《中国自研数据库登顶 TPC-C 的意义》 |几个概念 一个协会 TPC(事务处理性能协会:Tracsaction Processing Performance Council),是一个大型非盈利的组织。TPC 主要制定了商务应用标准程序(Benchmark)的标准规范,性能和价格度量,并管理测试结果的发布。任何厂家或测试者都可以根据规范,执行标准性能测试。 一个标准 TPC-C 是在线事务处理(OLTP)的基准程序。专门针对联机事务处理系统(OLTP)的性能测试规范,其测试结果可为用户在...
相关文章
文章评论
共有0条评论来说两句吧...