Use the APP performance Analysis workbench to also raffle for byte exquisite perimeters yo ❗️

Scan the QR code in the picture or click here to draw 👏

The Mars-App Performance Analysis Workbench version now offers Fastbot desktop to developers. It is designed to help developers start the journey of intelligent testing faster and more convenient, and exponentially improve the efficiency of stability testing.

Bytedance Terminal Technology — Wang Kai

background

Fastbot is an App stability testing tool based on model-based testing combined with machine learning and reinforcement learning, produced by ByteDance Quality Lab team. Fastbot performs better than tools like Android’s native Monkey, with far higher Activity coverage and code coverage than any other tool in the same time frame.

Figure 1 Fastbot performance comparison diagram

In Fastbot cross platform for Smart Monkey, we covered the design, evolution, and application of Fastbot in detail.

Figure 2 Fastbot cross-platform architecture diagram

At present, Fastbot has been widely used in stability testing and compatibility testing of byte client products. More than 300 tasks are started daily, with an average of more than 5,000 crashes found daily and more than 100 new crashes captured. With Fastbot’s capabilities, most crashes can be fixed before release (mainly for rack testing) to ensure a good online user experience.

In December 2020, Fastbot was opened to the public on Github, and was well received by developers. Two points were repeatedly mentioned:

  1. Android output crashes are stored as text in chronological order on an SD card, making it difficult for developers to parse;

  2. IOS has no broken read support;

Making the address

Android:github.com/bytedance/F… \

IOS:github.com/bytedance/F… \

Meanwhile, in Bytedance, we used an internal desktop software code-named “Diggo” to help the quality testing students complete the performance evaluation of the App, and to make the attribution analysis of performance problems for the r&d students. After polishing and iterating for more than a year, we decided to put it together and open it up for the masses of application developers and quality testing students.

After the two teams collided, we thought why not use Diggo to provide an easy-to-use tool environment for Fastbot, or build a desktop for Fastbot to provide easier testing tools for developers? Mars-app performance analysis workbench came into being.

Product introduction

App Performance Analysis Workbench is built by volcano Engine Mars-APmPlus team. It is a desktop assistant for App performance and stability testing and attribution analysis, providing local development debugging tools for developers. Analyze abnormal App crashes and performance data in mobile phones through rich visual plug-ins.

The Mars-App Performance Analysis Workbench version now offers Fastbot desktop to developers. Based on the native function of Fastbot, it solves the problem that Fastbot command line is not convenient to analyze the log locally, especially the problem that iOS crash log cannot be queried and analyzed visually locally. It is designed to help developers start the journey of intelligent testing faster and more convenient, and exponentially improve the efficiency of stability testing.

1. Visual startup operation

Users who have used Fastbot should know that the original way to start Fastbot is to specify the device, application, and test duration from the command line. In the Mars-App performance analysis workbench, we have encapsulated the native Fastbot, making it easy for developers to visually select devices and apps, as well as edit parameters.

Figure 3: Software screenshot – Starting Fastbot

2. Crash log analysis function

In the original Fastbot, the result log is stored in the SD card crash-dump.log file, which is not convenient for developers to parse, and does not have the ability to categorise. The App Performance Analysis Workbench adds crash log analysis and obfuscation/symbolization capabilities. When a developer finishes Fastbot testing, the resulting log can be analyzed using the “Crash Analysis” feature.

Figure 4: Software screenshot – crash analysis

Technical specifications

The infrastructure

For the desktop version, we took a look at Facebook’s Flipper and developed it using Electron technology.

Equipment operation

The Android operation is implemented through ADBkit to achieve the original Fastbot execution required adb shell command encapsulation.

IOS device control capabilities do not require independent installation of dependent tools, such as Appium relies on iMobileDevice and ios-deploy tools, Mars-App performance analysis workbench reference iMobileDevice independently implemented an ADB like device control tool, Plug and play is implemented.

Log parsing

Android analyzes logcat logs recorded by Fastbot. Among them, Java crashes support retrace operation and deduplication operation. The principle of deduplication operation is to calculate THE MD5 value based on the log stack. Crash logs with the same MD5 value are considered to be duplicate.

In addition to ips crash logs, iOS logs also support extracting and displaying ResourceBug and Jetsam logs. Both IPS crash logs and ResourceBug logs support symbol resolution. The parse effect refers to Xcode’s Symbolicatecrash.

Especially for iOS15, ips crash log format has been upgraded, for the past symbol parsing tools, faced with format compatibility problems, and App performance analysis workbench is perfectly compatible with the new and old formats, all support parsing.

In addition, for some apps with packet size optimization, such as the TEXT segment migration optimization scheme, the ips crash log of the new format will lose the valid Binary Image information, resulting in the code after the TEXT segment migration cannot be symbolized properly. Because the segment migration optimization scheme is used in all byte products, this problem has to be solved. Mars-app performance Analysis workbench also provides a corresponding solution to this problem, that is, reverse restore the lost Binary Image information through DSYM, and the restore accuracy is up to 99% in byte system App. The general scheme is as follows:

Offset_max = PC - main_LOW_PC + vmoffset_min = PC - main_high_PC + vmlib_size = ADDR - VM + sizealign = int(0x1000)offset = (offset_min / align + 1) * alignCopy the code

Copy the code

conclusion

Currently, the Mars-App performance analysis workbench can only be installed by Mac users. It is expected that the Windows adaptation will be completed by the end of February. Please continue to pay attention.

In the future, we will continue to provide performance analysis capabilities; In the late February update, there will be an internal version of the performance measurement tool, which provides basic indicators testing in a non-intrusion and jailbreak free environment. In the late April update, there will be attribution analysis capabilities for performance indicators, so stay tuned.

For more product exchanges and feedback, please add the little assistant on wechat 👏


🔥 Volcano Engine APMPlus application Performance Monitoring is a performance monitoring product for volcano Engine application development suite MARS. Through advanced data collection and monitoring technologies, we provide enterprises with full-link application performance monitoring services, helping enterprises improve the efficiency of troubleshooting and solving abnormal problems.

👉 Click here to learn more about the product and try it for free