Git Product home page Git Product logo

sapienz's Introduction

Sapienz Prototype (Out-of-date)

Sapienz: Multi-objective Automated Testing for Android Applications

This is a prototype of the Sapienz approach for multi-objective automated testing for Android applications. Please note that this repository is no longer maintained.

Publication:

@InProceedings{mao:sapienz:16,
    author = "Ke Mao and Mark Harman and Yue Jia",
    title = "Sapienz: Multi-objective Automated Testing for {Android} Applications",
    booktitle = "Proc. of ISSTA'16",
    year = "2016", 
    pages = {94--105}
} 

Installation

Simply download the artefact here and apply the following environment configuration:

Environment Configration

  • Python: 2.7

  • Android SDK: API 19

  • Linux: sudo apt-get install libfreetype6-dev libxml2-dev libxslt1-dev python-dev

  • Mac OS: brew install coreutils for gtimeout

Install Python dependencies:

sudo pip install -r requirements.txt

Usage

python main.py <apk_path | source_folder_path>

where apk_path is path to the subject apk under test
or you can specify source_folder_path for the subject app with source code

Subject Requirement:

  • instrumented apk should be compiled and named with suffix "-debug.apk"
  • closed-source/non-instrumented apk name should end with ".apk"

Settings

  • ANDROID_HOME and WORKING_DIR in settings.py should be set before starting Sapeinz.

Output

  • for open-sourced apps, outputs are stored under the given source folder
  • for closed-sourced apps, output are stored under <apk_file_path>_output

Output content:

/coverages - Coverage reports are stored here

/crashes - Crash reports and corresponding test cases that lead to the crashes 
(and also recorded videos files when using real devices)

/intermediate - Generated test event sequences for each generation; logbook of the genetic evolution; 
and line charts showing the variation trend for each objectives.

Notes

  • This implementation has been tested with Android 4.4, running on Ubuntu 14.04 and Mac OS 10.10
  • If measure statement coverage for open-sourced apps, the subjects need to be processed to support EMMA instrumentation: (Please refer to Dynodroid https://code.google.com/archive/p/dyno-droid/)
  • This version is only for emulators running on a physical PC.

Contact

[email protected]

sapienz's People

Contributors

rhapsod avatar

Watchers

Frank avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.