Esse artefato é para o artigo: "Teste de entrada múltipla de aplicativos Android, construindo contextos de lançamento de atividades".

O Fax é uma ferramenta de teste de múltiplas entradas para testar aplicativos Android, que constrói contextos de lançamento de atividades para aplicativos e propõe uma estrutura de teste de múltiplas entradas.
O papel PDF pode ser encontrado em https://hanada31.github.io/pdf/icse20_fax.pdf
@InProceedings{jiwei:icse:2020,
author = {Jiwei Yan and Hao Liu and Linjie Pan and Jun Yan and Jian Zhang and Bin Liang},
title = {Multiple-Entry Testing of Android Applications by Constructing Activity Launching Contexts},
booktitle = {Proceedings of the 42nd International Conference on Software Engineering},
series = {ICSE '20},
year = {2020},
pages={457-468}}
Instale o Java 1.8
Instale a ANT 1.9.16
Instale o Python 2.7
O fax requer a biblioteca de links dinâmicos Z3, bem como a biblioteca de link dinâmica da API Z3/Java.
Prepare o Android Environment (Informações de instalação do Android SDK, https://developer.android.com/), a versão das ferramentas do Android SDK deve abaixo de 25.2.3.
Execute "Java -version", "Python", "Ant -version", "Android Create Project" para verificar se essas ferramentas estão configuradas com sucesso.
Prepare um dispositivo Android ou emulador e conecte -o ao seu computador. Ligue o item de configuração "Modo do desenvolvedor" e permita "depuração USB".
Clone o projeto para o seu computador.
Para início rápido, você pode executar: runfax.sh ou runfax.bat
*Para modificar o tempo de exploração do fax_Ex, atualize a variável exploration_time no arquivo faxtool script run.py.
Em nosso artigo, o tempo de exploração é de uma hora (3600). Se você deseja uma validação rápida, use o valor padrão no fax (60).
O pré -processamento coloca o apk em teste no [apk_input_dir] e obtenha o resultado no [apk_output_dir].
script python/prerocess.py [apk_input_dir] [apk_output_dir]
por exemplo, script python/prerocess.py apk apk_proceded
Em seguida, as atividades serão expostas, o aplicativo será instrumentado e instalado no dispositivo.
Para aplicativos necessários para login, você pode fazer login primeiro após a instalação para melhorar a cobertura de exploração.
Geração de teste Python Script/GeneratETestCases.py lib/fax0108.jar [apk_input_dir] [testcase_dir] [execute_info_dir] [max_number_of_path]
por exemplo, script/generatetestcases python.py lib/fax0108.jar apk result_testgen ExecuteInfo 10000
Obtenha resultados na pasta [testcase_dir].
Teste de lançamento de fax script Python/launchActActs.py [testcase_dir] [launch_dir]
por exemplo, script python/soulitacts.py result_testgen result_launch
Obtenha resultados na pasta [Launch_Dir].
Detectar falhas para lançamento de fax script/findcrashes.py [testcase_dir] [launch_dir]
por exemplo, script python/findcrashes.py result_testgen result_launch
Teste de exploração de fax script Python/fairandroidexploer.py [launch_dir] [explore_dir] [testcase_dir] [apk_output_dir] [ea/all]
Defina o EA se você deseja definir apenas a EA como a entrada de exploração.
Defina tudo se você deseja definir todas as atividades como a entrada de exploração.
por exemplo, python script/fairandroidexploer.py result_launch result_explore result_testgen apk_proceded all
Obtenha resultados na pasta [explore_dir].
Detectar falhas para exploração de fax script/findcrashes.py [testcase_dir] [explore_dir]
por exemplo, script python/findcrashes.py result_testgen result_explore
Calcule o resultado da cobertura Python Script/CollectLogcat.py [testcase_dir] [explore_dir] [apk_output_dir]
por exemplo, python script/collectLogcat.py result_testgen result_explore apk_process