In this project, we introduce a new abstraction-concretization paradigm for GUI test migration. First, we abstract the test logic from source apps targeting the same functionality. Then, this general test logic is used to guide an LLM in generating concrete test cases for the target app.
Make sure you have:
Python
Java
Android SDK
Added platform_tools directory in Android SDK to PATH
ChatGPT API or similar
1. Prepare:
1. Put the privilege results in the step0 folder
2. Place the dataset-related information in the step1 folder, e.g., source_data.csv
3. Place the apk file in the step3/apps
4. An app to use. Download the `.apk` file to your host machine.
5. A device or an emulator connected to your host machine via `adb`.
6. Replace `YOUR_API_KEY` in the project with your API key.
2. Start MACdroid:
Execute step1, step2, and step3 in order. Each step contains a `step_start.sh` script that integrates all the necessary code to be executed for that step.
The Repo file is in [Link]
The dynamic exploration is partly inspired by Droidbot. Thanks to Droidbot!
Li, Yuanchun, el al. ''Droidbot: a lightweight UI-guided test input generator for Android.'' In Proceedings of the 39th International Conference on Software Engineeering Companion (ICSE-C'17). Buenos Aires, Argentina, 2017.