CrashScope

CrashScope Workflow Overview

CrashScope Workflow Overview (Click for more detail)

The overall workflow of CrashScope is illustrated in the Figure above. The first step is to obtain the source code of the app, either directly or through decompilation, and detect Activities (by means of static analysis) that are related to contextual features in order to target the testing of such features. In other words, CrashScope will only test certain contextual app features (e.g., wifi off) if it finds instances where they are implemented in the source code. Next, the GUI-Ripping Engine systematically executes the app using various strategies, including enabling and disabling the contextual features (if run on an emulator) at the Activities of the app identified previously. If during the execution, uncaught exceptions are thrown, or the app crashes, dynamic execution information is saved to the CrashScope’s database, including detailed information regarding each event performed during the systematic exploration. After the execution data has been saved to the CrashScope database, the Natural Language Report Generator  parses the database and processes the information for each step of all executions that ended in a crash, generating an HTML based natural language crash report with expressive steps for reproduction. In addition, the Crash Script Generator parses the database and extracts the relevant information for each step in a crashing execution in order to create a replayable script containing adb input commands and markers for contextual state changes. The Script Replayer is able to replay these scripts by executing the sequence of adb input commands and interpreting the contextual state change signals, in order to reproduce the crash. 

Tools used for CrashScope Implementation

We provide the tools we used in our implementation of the Contextual Feature Extractor, the GUI-Ripping Engine, and Report Generator.

Tools used to implement the Contextual Feature Extractor:

  • 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 GUI-Ripping 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 CrashScope report generator:

  • Bootstrap: HTML, CSS, and JavaScript framework for developing web applications.
  • MySQL: Robust Relational Database.

Using CrashScope

*Please note that the CrashScope tool is currently under active maintenance.  Therefore testing jobs could take several days to complete.

(To register as a user, click the "I want to use CrashScope" link and register an email address and set up a password.  Then use this information to log into the tool interface.)

The tool is currently under construction, an Open Source Version will be coming soon!