

APP性能分析工作台——你的最佳桌面端性能分析助手
source link: https://my.oschina.net/u/4180867/blog/5396971
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

APP性能分析工作台——你的最佳桌面端性能分析助手 - 字节跳动终端技术的个人空间 - OSCHINA - 中文开源技术交流社区
目前 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 下的性能监控产品。我们通过先进的数据采集与监控技术,为企业提供全链路的应用性能监控服务,助力企业提升异常问题排查与解决的效率。
👉 点击这里,了解更多产品信息,还可以免费体验试用哦~
Recommend
-
49
桌面百度 - 桌面智能助手,连接人与服务 - NEXT
-
35
*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。 本文中,...
-
60
关闭 ...
-
13
MacBook Pro - @elfsundae - 我是 13 寸 MBP,很多年前接过投影仪,没有外接显示器的使用经验。最近用 Xcode 感觉需要接个大显示器,但是有些疑惑,主要是不知道大家是怎么摆笔记本和显示器的,求分享正确姿势。我想象了
-
10
如何落地微前端一体化运营工作台阿里巴巴 前端工程师来自于前端早早聊微前端专题的飞猪侧微前端一体化运营工作台建设分享文稿总览
-
10
飞猪微前端:统一运营工作台的解决方案阿里巴巴 前端工程师飞猪一体化运营工作台一期工作经过 3 个月的开发终于内部开始使用,期间我们面向运营场景,基于微前端与 SDK 化的一体化...
-
9
电源DIY:自制低成本工作台电源(3.3V、5V、±12V输出,只需¥50元)皮特物联网技术顾问...
-
11
PITAKA Air Omni Lite:如何拥有一个干净的工作台?公众号「非著名程序员」主理人,程序员/复业者/生涯规划师说实话,我这个人还是有一些洁癖的,喜欢自己的工作台干净...
-
5
B端工作台应该如何设计?本篇文章从需求分析、信息架构、可视化图表和视觉设计这四个方面,为我们完整解析了一个B端工作台的设计流程和方法,快来看看吧。
-
5
这里记录每周值得分享的科技内容,周五发布。 本杂志开源,欢迎
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK