Skip to content

Latest commit

 

History

History
42 lines (30 loc) · 2.98 KB

README.md

File metadata and controls

42 lines (30 loc) · 2.98 KB

Magneto

This repo is for our MAGNETO project on automated test oracles for mobile apps.

Behavioral Oracle Taxonomy

This repo contains the datasets collected for the behavioral oracle taxonomy. We did open coding followed by taxonomy norming to derive 1. Categorization of Failure Effects on Users, 2. Oracle Analyses and Failure Categorization, 3. Resources Needed for Oracle. We used axial coding to derive 4. App Behavior Invariants.

Automated Oracles

MAGNETO detects if an app contains failure using automated oracles. This repo also contains the source code to the automated part, and additional resources to run MAGNETO.

MAGNETO Approach Overview:

MAGNETO Approach Overview

App Execution

  • All the Android applications we used in this MAGNETO evaluation are in apks folder.
  • The result from App Execution for the different apps are in oracleResourcesAll folder.
  • oracleResourcesAll folder contains screen metadata in uis and screenshots in screens for all the buggy version and fixed version of the apps.

Oracle Trigger Detection and Oracle Execution

  • The five automated oracle implementations are in oracleFromBehavior folder.
folder Oracle
backButton Pressing back should lead to the previous screen
languageDetection The language change should be reflected on all screens
orientationChange The screen content should not change on rotation
themeChange Theme change should be reflected on all screens
userEnteredData User-entered data should display correctly
  • Each oracle folder has resources used for development, and evaluation along with the python scripts for trigger detection and oracle execution.
  • The oracles can be called from command line as:

python <oracleScript.py> -a <appName> -b <bugId>

  • Command line examples for each oracle type is in AllTestScripts.txt

Dependencies

MAGNETO supports building the project via poetry. All required dependencies are listed in pyproject.toml under tool.poetry.dependencies. If using poetry, simply run poetry install to install dependencies. If poetry is not used, you can also install the dependency individually via pip install.