このアーティファクトは、「アクティビティの起動コンテキストを構築することにより、Androidアプリケーションの複数のエントリテスト」という用紙向けです。

FAXは、Androidアプリケーションをテストするための多重エントリテストツールであり、アプリのアクティビティの起動コンテキストを構築し、多重エントリテストフレームワークを提案します。
ペーパーPDFは、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}}
Java 1.8をインストールします
ANT 1.9.16をインストールします
Python 2.7をインストールします
FAXには、Z3/Java APIの動的リンクライブラリと同様に、Z3ダイナミックリンクライブラリが必要です。
Android環境(Android SDKのインストール情報、https://developer.android.com/)を準備すると、Android SDKツールのバージョンは25.2.3未満です。
「Java -Version」、「Python」、「Ant -version」、「Android Create Project」を実行して、これらのツールが正常に構成されているかどうかを確認します。
Androidデバイスまたはエミュレータを準備し、コンピューターに接続します。設定項目「開発者モード」をオンにし、「USBデバッグ」を許可します。
プロジェクトをコンピューターにクローンします。
クイックスタートのために、runfax.shまたはrunfax.batを実行できます
*FAX_EXの探索時間を変更するには、ファイルfaxtool script run.pyの変数Exploration_timeを更新してください。
私たちの論文では、探索時間は1時間(3600)です。迅速な検証が必要な場合は、FAX(60)のデフォルト値を使用します。
プリプロセスは、[apk_input_dir]の下でAPKをテスト下に置き、[apk_output_dir]で結果を取得します。
pythonスクリプト/prerocess.py [apk_input_dir] [apk_output_dir]
たとえば、pythonスクリプト/prerocess.py apk apk_processed
その後、アクティビティが公開され、アプリが計装され、デバイスにインストールされます。
必要なアプリのログインでは、インストール後に最初にログインして、探索カバレッジを改善できます。
テスト生成pythonスクリプト/generatetestcases.py lib/fax0108.jar [apk_input_dir] [testcase_dir] [execute_info_dir] [max_number_of_path]
たとえば、Python Script/Generatetestcases.py lib/fax0108.jar apk result_testgen executeinfo 10000
フォルダー[testcase_dir]で結果を取得します。
ファックスの起動テストpythonスクリプト/launchacts.py [testcase_dir] [launch_dir]
たとえば、python script/launchacts.py result_testgen result_launch
フォルダー[Launch_dir]で結果を取得します。
FAXのクラッシュを検出するPythonスクリプト/FindCrashes.py [testcase_dir] [launch_dir]
たとえば、pythonスクリプト/findcrashes.py result_testgen result_launch
ファックス探査テストpythonスクリプト/fairandroidroidexploer.py [launch_dir] [explore_dir] [testcase_dir] [apk_output_dir] [ea/all]
EAのみを探索エントリとして設定する場合は、EAを設定します。
すべてのアクティビティを探索エントリとして設定する場合は、すべてを設定します。
たとえば、pythonスクリプト/fairandroidroidexploer.py result_launch result_explore result_testgen apk_processed all
フォルダー[Explore_dir]で結果を取得します。
FAX Exploration Python Script/FindCrashes.pyのクラッシュを検出します[testcase_dir] [Explore_dir]
たとえば、pythonスクリプト/findcrashes.py result_testgen result_explore
カバレッジ結果Pythonスクリプト/collectlogcat.py [testcase_dir] [explore_dir] [apk_output_dir]
たとえば、python script/collectlogcat.py result_testgen result_explore apk_processed