天天看點

APP 性能分析工作台——你的最佳桌面端性能分析助手

APP 性能分析工作台——你的最佳桌面端性能分析助手

目前 MARS-App 性能分析工作台版本為開發者提供Fastbot桌面版的服務。 旨在幫助開發者們更快、更便捷地開啟智能測試之旅,成倍提升穩定性測試的效率。

APP 性能分析工作台——你的最佳桌面端性能分析助手
目前 MARS-App 性能分析工作台版本為開發者提供Fastbot桌面版的服務。 旨在幫助開發者們更快、更便捷地開啟智能測試之旅,成倍提升穩定性測試的效率。

作者:位元組跳動終端技術——王凱

背景

Fastbot 是一款由位元組跳動 Quality Lab 團隊出品,基于 model-based testing 結合機器學習、強化學習的 App 穩定性測試工具。相比 Android 自帶的原生 Monkey 等工具,Fastbot 表現出更好的性能,在相同時間内的 Android Activity 覆寫率和代碼覆寫率要遠高于其他工具。

APP 性能分析工作台——你的最佳桌面端性能分析助手

圖 1  Fastbot 性能對比圖

之前在《奔跑吧!智能 Monkey之Fastbot跨平台》一文,我們曾詳細地介紹了 Fastbot 在跨平台方面的設計思路、技術演進及應用。

APP 性能分析工作台——你的最佳桌面端性能分析助手

圖 2  Fastbot 跨平台架構圖

目前,Fastbot 已廣泛應用于位元組用戶端類産品的穩定性測試與相容性測試。每日啟動任務數超過 300 次,每日平均發現 5000 個以上的崩潰,并有超過 100 個新捕獲的崩潰。借助 Fastbot 的能力,在發版前(主要用在機架測試)就可以修複大部分的 crash,確定線上使用者的使用體驗。

在 2020 年 12 月,Fastbot 在 Github 上開源後,受到了廣大開發者的喜愛,并積極提供的使用回報,其中兩點被反複提及:

1. Android 輸出的崩潰以文本形式按時間序存儲在 sd 卡中,不友善開發者解析;

2. iOS 沒有崩潰的讀取支援;

Github 位址

Android:https://github.com/bytedance/Fastbot_Android

iOS:https://github.com/bytedance/Fastbot_ios

與此同時,在位元組跳動内部,我們通過一款内部代号為「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 的選取,以及參數的編輯。

APP 性能分析工作台——你的最佳桌面端性能分析助手

圖 3:軟體截圖-啟動 Fastbot

2. 崩潰日志分析功能

在原來 Fastbot 中,運作結果日志是放在 sd 卡裡的 crash-dump.log 檔案,不友善開發者進行解析,也沒有歸類去重等能力。而 App 性能分析工作台新增崩潰日志分析功能,以及解混淆/符号化的能力。當開發者完成 Fastbot 測試後,可以通過「崩潰分析」功能對結果日志進行分析。

APP 性能分析工作台——你的最佳桌面端性能分析助手

圖 4:軟體截圖-崩潰分析

技術說明

基礎架構

開發桌面版時,我們參考了 Facebook 的 Flipper, 使用 Electron 技術進行了開發。

裝置操作

對 Android 的操作是通過 adbkit 實作了對原有 Fastbot 執行所需要的 adb shell 指令的封裝。

iOS 裝置控制能力無需單獨安裝依賴工具,如 Appium 所依賴的 imobiledevice 與 ios-deploy 工具,MARS-App 性能分析工作台參考 imobiledevice 獨自實作了一個類 ADB 的裝置控制工具,實作了即插即用。

APP 性能分析工作台——你的最佳桌面端性能分析助手

日志解析

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 下的性能監控産品。我們通過先進的資料采集與監控技術,為企業提供全鍊路的應用性能監控服務,助力企業提升異常問題排查與解決的效率。

👉 點選這裡,了解更多産品資訊,還可以免費體驗試用哦~

繼續閱讀