When performing security (or regular) tests on Android applications, we sometimes need to emulate or fake mobile data or actions; making/receiving calls, sending SMS or setting the exact geo-location are some commands that can be done, using the Emulator Console. Here are a few tricks that will help you through Android application testing using the emulator:
· First, connect to the emu, using telnet:
· To change geo-locations:
· To make a phone call to the emulator:
· To send an sms to the emulator:
· To scale the emulator window:
· To take a screenshot:
· To create input events (event codes list):
The Monkey is a command-line tool that runs on the emulator instance or on a device. When the Monkey runs, it generates pseudo-random events and sends them to the system.
The Monkey includes a number of options, such as:
- basic configuration options, such as setting the number of events to attempt
- operational constraints, such as restricting the test to a single package
- event types and frequencies
- debugging options
Monkey also watches three types of events in the system:
- when running on a specific package, it blocks attempts to navigate to any other packages
- when the application crashes, Monkey will stop and report the error
- when the application generates an application not responding error, Monkey will stop and report the error
Monkey runs in the emulator/device environment, therefore it must be launched from a shell in that environment, using adb shell or by entering the shell and entering Monkey commands directly.
The basic syntax is:
With no options specified, the Monkey will launch in a non-verbose mode, and will send events to any of the packages installed on the device/emulator.
To launch the Monkey on a specific application with 500 pseudo-random events:
The table with the list of all options included on the Monkey command line, can be found in the Command Options Reference, here: http://developer.android.com/tools/help/monkey.html
For users who wants to control the Android device or emulator from outside of Android code, Android provides the monkeyrunner tool, which provides an API for writing Python programs that install apps, test packages, send keystrokes, take snapshots and more.
Here is a simple program that connects to a device. The program installs an Android application package, runs one of its activities, and sends key events to the activity. The program then takes a screenshot of the result:
The monkeyrunner API is contained in three modules in the package com.android.monkeyrunner:
- MonkeyRunner: A class that provides a method for connecting monkeyrunner to a device or emulator
- MonkeyDevice: A class that provides methods for installing and uninstalling packages, starting an Activity, and sending keyboard or touch events to an application
- MonkeyImage: A class that provides methods for capturing screens, converting bitmap images to various formats, comparing two MonkeyImage objects, and writing an image to a file
To import a module, use the Python fromstatement:
For more information about monkeyrunner, available features and commands, visit: http://developer.android.com/tools/help/monkeyrunner_concepts.html