Este artefacto es para el documento: "Pruebas de entrada múltiple de aplicaciones Android construyendo contextos de lanzamiento de actividades".

Fax es una herramienta de prueba de entrada múltiple para probar aplicaciones de Android, que construye contextos de lanzamiento de actividades para aplicaciones y propone un marco de prueba de entrada múltiple.
El documento PDF se puede encontrar en 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 Java 1.8
Instalar hormiga 1.9.16
Instale Python 2.7
Fax requiere la biblioteca de enlaces dinámicos Z3, así como la biblioteca de enlaces dinámicos para la API Z3/Java.
Prepare el entorno de Android (información de instalación de Android SDK, https://developer.android.com/), la versión de las herramientas SDK de Android debería inferior a 25.2.3.
Ejecute "Java -version", "Python", "Ant -version", "Android Create Project" para verificar si estas herramientas se configuran correctamente.
Prepare un dispositivo o emulador de Android y conéctelo a su computadora. Encienda el elemento de configuración "Modo de desarrollador" y permita "depuración USB".
Clonar el proyecto a su computadora.
Para un inicio rápido, puede ejecutar: runfax.sh o runfax.bat
*Para modificar el tiempo de exploración de Fax_Ex, actualice la variable Exploration_Time en el archivo faxtool script run.py.
En nuestro artículo, el tiempo de exploración es de una hora (3600). Si desea una validación rápida, use el valor predeterminado en Fax (60).
Preprocess coloque el APK en la prueba en [APK_INPUT_DIR] y obtenga el resultado en [APK_OUTPUT_DIR].
Python script/prerocess.py [apk_input_dir] [apk_output_dir]
por ejemplo, script python/prerocess.py apk apk_processed
Luego, las actividades estarán expuestas, la aplicación se instrumentará y luego se instalará en el dispositivo.
Para las aplicaciones requeridas de inicio de sesión, puede iniciar sesión primero después de la instalación para mejorar la cobertura de exploración.
Test Generation Python script/generateTcases.py lib/fax0108.jar [apk_input_dir] [testcase_dir] [execute_info_dir] [max_number_of_path]
por ejemplo, script de python/generatetestcases.py lib/fax0108.jar apk result_testgen ejecututeinfo 10000
Obtenga resultados en la carpeta [testcase_dir].
Fax Lanzamiento de la prueba Python Script/LaunchActs.py [testcase_dir] [lanzador_dir]
por ejemplo, script de python/launchacts.py result_testgen result_launch
Obtenga resultados en la carpeta [Launch_dir].
Detectar bloqueos para el lanzamiento de fax script python/findcrashes.py [testcase_dir] [lanzador_dir]
por ejemplo, script python/findcrashes.py result_testgen result_launch
Fax Exploration Test Python script/fairandroidexploer.py [lanzador_dir] [explore_dir] [testcase_dir] [apk_output_dir] [ea/all]
Establezca EA si desea establecer solo EA como entrada de exploración.
Establezca todo si desea establecer todas las actividades como la entrada de exploración.
por ejemplo, script de python/fairandroidexploer.py result_launch result_explore result_testgen apk_process
Obtenga resultados en la carpeta [explore_dir].
Detectar bloqueos para el script/hindcrashes.py [testcase_dir] [explore_dir]
por ejemplo, script python/findcrashes.py result_testgen result_explore
Calcule el resultado de la cobertura Python script/collectLogcat.py [testcase_dir] [explore_dir] [apk_output_dir]
por ejemplo, script python/collectlogcat.py result_testgen result_explore apk_process