Our work covers the top three layers in Figure 1. To test
programs running in the Application layer, we use system
services from the Application Framework layer and instrumentation
tools in the Dalvik VM.
Android applications can be composed of four component
categories: Activity, Broadcast Receiver, Content Provider
and Service. Activities are focused windows in which the
user interaction takes place; only one activity can be active
at a time. Each activity is a class in the source code and
should perform according to events generated by users and
system. Services run in the background, e.g., an email client
may check for new mails while users are running anotherapplication. A Content Provider manages data for a certain
application and controls the accessibility of the data;
for example, an email client may make email addresses in
its database accessible to other applications. Broadcast Receivers
listen and react to broadcast announcements. For
example, an email client may receive a notification that the
battery is low and, as a result, proceed to saving email drafts.
Though we believe our approach is general enough to facilitate
bug detection for all component classes, in this paper
we focus on GUI bugs related to activities and GUI events.