An official web-page of the Backstage project can be found here.
- Java 8
- Maven
$ mvn initialize
$ mvn packageThe 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.apkThe 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.
cd scripts
./ui_extraction.sh output <output_file_prefix>
./api_extraction.sh results <output_dir>- R
- Python 3
- pip3
- Linux or MacOS
Before running the scripts you need to follow the steps below:
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)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.downloadFinally, open python3 console:
import nltk
nltk.download()and download the following packages:
- wordnet
- stopwords
- words
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.
cd scripts
./launch.shReproducing 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.
You can inspect mutation results in $DATA_DIR/top_bin/results.txt folder.