FUSION
FUSION Workflow Overview
FUSION Workflow Overview (Click for more detail)
FUSION’s Analyze → Generate workflow corresponds to two major phases. In the Analyze Phase FUSION collects information related to the GUI components and event flow of an app through a combination of static and dynamic analysis. Our Static Analyzer (Primer) extracts all of the GUI-components and associated information from the app source code. Specifically it extracts (i) the possible actions on the component, (ii) the type of component (e.g. Button, Spinner), (iii) the activities the component is instantiated within, and (iv) the class files where the component is instantiated. Our Dynamic Program Analyzer (Engine) explores Android apps in a systematic fashion recording runtime information about actions and GUI components. In the Report Generation Phase FUSION takes advantage of the GUI centric nature of mobile apps to both auto-complete the steps to reproduce the bug and augment each step with contextual application information. The overall design of FUSION can be seen in the Figure above.
When a user visits the FUSION web interface, they fill out basic information about the bug they are reporting, and then report detailed reproduction steps based on auto-completion suggestions gleaned from the static and dynamic analysis. However, due to limitations in FUSION's dynamic exploration, not every state of an application is explored, and therefore there may be steps missed. The FUSION back-end auto-completion engine is able to handle these model gaps and uses the following decision tree to make suggestions to the user. (For more detailed information about FUSION, please refer to our paper)
Tools used for FUSION Implementation
We provide the tools we used in our implementation of the Dynamic Program Analyzer (Engine), Static App Analyzer (Primer), and Web Interface.
Tools used to implement the static analyzer (Primer):
- APKTool: a tool for reverse engineering Android apk files.
- Dex2jar: A conversion tool for .dex files and .class files.
- jd-cmd: A command line Java Decompiler.
Tools used to implement the Dynamic Program Analyzer (Engine):
- Android Debug Bridge (adb): A universal tool for communicating with Android devices and emulators
- Hierarchy Viewer: A tool for examining and optimizing Android user interfaces.
- UIAutomator: A tool that provides a set of APIs to build UI tests for Android applications and aid in interacting with GUI Components.
tools used to Implement the Fusion web interface:
- Bootstrap: HTML, CSS, and JavaScript framework for developing web applications.
- MySQL: Robust Relational Database.
Using FUSION
We have launched a live web-version of our bug reporting system for the 14 different applications evaluated in our paper. The web-version is the same piece of software used by the participants in our user studies. There are two main components to the online reporting system: 1) The Reporting System, and 2) the Report Viewer. The Reporting System allows users to submit a new bug report for any of the apps currently supported by FUSION. The Report Viewer allows for the viewing of any report submitted through the system, including those reports generated by the user study participants.
FUSION Documentation
To support replication of the experiments conducted to evaluate FUSION, we provide documentation for both the The Reporting System and the Report Viewer. Please click the button below to download the FUSION documentation.
