backstage
An official web-page of the Backstage project can be found here.
UI analysis phase
Prerequiesites:
- Java 8
- Maven
Building:
$ mvn initialize
$ mvn package
Usage:
The script below only works on Linux and MacOS systems. If you want to run it on Windows, just examine the runApp.sh file and run apktool and backstage.jar manually.
./runApp.sh PATH_TO_APK/myApp.apk
Results
The tool produces:
appSerialized.txtfile inoutput/<name_of_apk>folder with the UI model<name_of_apk>_forward_apiResults_1.xmlwith the mappting of callbacks to APIs
Those files are needed to obtain the mapping between UI elements and APIs later on.
Generating data for the next phase
cd scripts
./ui_extraction.sh output <output_file_prefix>
./api_extraction.sh results <output_dir>
Detecting outliers phase
Prerequiesites:
- R
- Python 3
- pip3
- Linux or MacOS
Before you start
Before running the scripts you need to follow the steps below:
Open R console:
install.packages("logging", dependencies=TRUE)
install.packages("stringr", dependencies=TRUE)
install.packages("argparse", dependencies=TRUE)
slam_link="https://cran.r-project.org/src/contrib/Archive/slam/slam_0.1-37.tar.gz"
install.packages(slam_link, repos = NULL, type="source")
install.packages("skmeans", dependencies=TRUE)
install.packages("cluster", dependencies=TRUE)
install.packages("clue", dependencies=TRUE)
install.packages("doParallel", dependencies=TRUE)
install.packages("data.table", dependencies=TRUE)
install.packages("proxy", dependencies=TRUE)
Make sure you have Python v3 and pip v3 installed and:
pip3 install argparse
pip3 install numpy
pip3 install pandas
pip3 install webcolors
pip3 install gensim
pip3 install nltk
pip3 install spacy
python3 -m spacy.en.download
Finally, open python3 console:
import nltk
nltk.download()
and download the following packages:
- wordnet
- stopwords
- words
Obtaining a raw data
In order to run a mutation analysis you need to obtain a raw data with information about UI elements, their labels and APIs.
Please donwload a backstage_data.zip, unzip it to the script folder and put the reference to it via $SNAP_DIR variable inside the launch.sh script.
The zip-archive contains a data folder inside. Ideally, you should move it to the scripts folder and the $SNAP_DIR is already referencing it.
Run the analysis
cd scripts
./launch.sh
Reproducing results from tables V, VI and VII from the Technical Report
Mutation procedure takes place only in the middle of the whole analysis. Thus, you don't need to rerun the whole script in order to try different mutation techniques.
Open the launch.sh file in your favourite text editor and find the line with invocation of make_mutants.R.
By default we use high distance mode, but you can also make outliers based on random choice or crossover label mutations.
You can specify a desired mode by using -t parameter in make_mutants.R file. Possible values are:
- dist - stands for
high distancemode - rand - stands for
randommode - cross - stands for
crossover label mutations
You need to run the whole analysis only once. Next time, you can skip all steps up to the place when mutations take place.
Results of mutation
You can inspect mutation results in $DATA_DIR/top_bin/results.txt folder.
