作者:字节跳动终端技术——王凯
应用 APP 性能剖析工作台还可抽奖取得字节精美周边哟❗️
扫描图中二维码或点 这里 即可抽奖 👏
背景
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 上开源后,受到了宽广开发者的青睐,并踊跃提供的应用反馈,其中两点被重复提及:
- Android 输入的解体以文本模式按工夫序存储在 sd 卡中,不不便开发者解析;
- iOS 没有解体的读取反对;
Github 地址
Android:https://github.com/bytedance/…
iOS:https://github.com/bytedance/…
与此同时,在字节跳动外部,咱们通过一款外部代号为「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 + vmoffset_min = pc – main_high_pc + vmlib_size = addr – vm + sizealign = int(0x1000)offset = (offset_min / align + 1) * align
结语
目前 MARS-App 性能剖析工作台仅反对 Mac 用户装置,预计在 2 月底咱们会实现 Windows 的适配,欢送大家继续关注。
将来,咱们会继续提供性能剖析的能力;在 2 月底更新的版本中会蕴含外部版的性能测评工具,提供无侵入免越狱环境下的各项根底指标的测试,4 月底的新版本将会蕴含性能指标的归因剖析能力,敬请期待。
更多产品交换及问题反馈,欢送增加小助手微信 👏
🔥 火山引擎 APMPlus 利用性能监控是火山引擎利用开发套件 MARS 下的性能监控产品。咱们通过先进的数据采集与监控技术,为企业提供全链路的利用性能监控服务,助力企业晋升异样问题排查与解决的效率。
👉 点击这里,理解更多产品信息,还能够收费体验试用哦~