Automated Android Testing

At present, the Serval Project tests each Android app manually by uploading it to one or several Android devices connected by USB, re-starting the app on each of these phones, then manually exercising the feature under test, eg, placing a call, sending an SMS, distributing a photo, streaming video, etc. We need a framework for automating tests like these.

A good start would be for a student to take a particular operation, eg, sending an SMS across the mesh, and writing a suite of integration tests using two or more connected phones. This would involve writing a toolbox of Java classes or even C executables for performing fixture and assertion related functions on Android, then finding out how to simulate user actions by invoking the relevant Java methods under test. This could then be tied together by writing Shell scripts or even Python scripting on the development host to orchestrate test cases.

The Android Monkeyrunner may be the best platform on which to build this test framework.