There are 2 main UI testing tools available
1.monkey (aka. UI/Application Exerciser Monkey)
This tool is a command line based tool that can be primarily used to stress test your application UI. It is the simplest tool to use. Here's how..
Running monkey as an application UI stress tester (runs a random set of commands on the application. useful to UI stress testing)
- Open a command console.
- First direct your console to the location of the adb (Android Debug Bridge) program in the android sdk. Typically you can use the following command for this..
$cd path_to_android_sdk/platform-tools/
path_to_android_sdk should be the path to the sdk on your pc
- Now make sure you device is connected with the application running on it or that the emulator is running the application.
- To test on device issue the following command in the console
$./adb -d shell monkey -p package_name -v 1000
(replace -d with -e to test on the emulator.
package_name is the name of the application package abnd it usually begins with com.
-v specifies the number of UI events to be generated, in this case we ask it to generate 1000 random events)
Now you will see the monkey stress testing your app.
If you get force close message while running monkey you have just discovered a bug that needs fixing. You can run
./adb logcat
in the console to generate the relevant logs.
Running specific commands in monkey
The monkey tool can also be used to run a specific set of commands on the application. However it is easier to use the monkeyrunner for this purpose.
On the connected device (to run on emulator simply replace -d with -e)
./adb -d shell monkey -p package_name --port 1080 &
./adb -d forward tcp:1080 tcp:1080
telnet localhost 1080
Now the following will be printed on cmd line..
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Now you can type in your instructions
>tap 150 200
you can write all instruction into a script (script.txt) as below..
# monkey
tap 100 180
type 123
tap 100 280
press DEL
press DEL
press DEL
press DEL
press DEL
press DEL
press DEL
press DEL
type -460.3
now run..
./adb -d shell monkey -p package_name --port 1080 &
./adb -d forward tcp:1080 tcp:1080
nc localhost 1080 < script.txt
2. monkeyrunner
The monkeyrunner tool is an API for writing automated UI tests. You can use it to write specific scripts that run a series of commands and inspects the output by taking screenshots etc. The android SDK includes two special scripts written using monkeyrunner which help in running automated UI tests. The scripts are..
monkey_recorder.py
monkey_playback.py
Copy these scripts to /tools folder in the android sdk. Set the console path to the tools directory. Open up the application on the emulator.
You can run the recorder as follows..
./monkeyrunner monkey_recorder.py
Below is a screenshot of monkey_recorder recording actions for calculator.

Use 'Export Actions' button to export the set of actions into a script (eg: calc.mr)
now run the cal.mr script on a connected device as follows.. (first make sure the emulator is shut down)
./monkeyrunner monkey_playback.py calc.mr
For playback to run properly you need to take precautions of setting the correct wait times and using the correct press, fling, type methods in the recorder.
Conclusion: Android has a good collection of tools meant to enable UI test automation. However they still have a lot more room for improvement especially in terms of ease of use and efficiency.
References:
http://developer.android.com/guide/developing/tools/monkey.html
http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html
Android Application Testing Guide - Diego Torres Milano
Hello Harini,
ReplyDeleteDo we need to make any changes in the monkey_recorder.py file, Because when i run the command ./monkeyrunner monkey_recorder.py I'm getting a blank screen.
by blank screen do you mean the monkey recorder application opens but doesn't display the android screen inside it? this happens when the emulator is not running. recording doesn't work for a connected device so you need to have the android emulator running.
ReplyDeleteHi Harini,
ReplyDeleteYes, the application opens but doesn't display the android screen. And I am running the emulator. Even though its the same blank screen.
Thanks,
GS
if your device is also connected at the time you are running the emulator monkeyrunner may be detecting your device instead of your emulator. monkey_recorder.py cannot read and display the screen of your device. disconnecting the device and having the emulator run should work.
ReplyDeleteHello Harini,
ReplyDeleteI did not connect any device to my PC. I am just running the emulator nothing other than that. Sorry to ask, can i have your personal mail id. or can you mail me to gerpatis.raghava@gmail.com
Thanks,
GS
Hello Harini,
ReplyDeleteI am able to run monkeyrunner_recorder.py and know how to record but i am unable to get any output of monkeyrunner_playback.py script.mr file
Please Suggest!
Thanks
MR
I like your blog technique.This is one of the great post.I like your blog out standing performance.By read your post I came to know Android has to Build some UI tools.This is one of the specific post.
ReplyDeleteAndroid app developers