A deterministic, nonintrusive utility for efficiently testing transient state restoration on Android applications
When a user interacts with an Android application, non-persistent data or transient state is created. Transient state may capture user input, data from resources on a device, or data retrieved from a network. Typically, Android applications retain their transient state throughout their entire life cycle. However, in some cases, Android may trigger the destruction of application components or the application itself resulting in transient state loss. If the transient state of an application is not properly saved and restored it may result in unexpected behavior or application crashes. The existing methods for testing transient state restoration on Android applications require using Android developer tools, advanced Android developer options, or running manual procedures on the device. There are no simple, efficient on-device options for testing transient state restoration on Android. This report describes Android events that trigger transient state loss. It describes how improper transient state restoration can result in unexpected behavior or application crashes. It provides an overview of existing transient state testing options discussing their limitations and shortcomings. It describes the design and implementation of the Transient State Restoration Testing Utility (TSRTU) highlighting its advantages over existing options. It illustrates how TSRTU is used to test an application. Lastly, it shows how TSRTU, a deterministic, nonintrusive utility can efficiently test transient state restoration on any Android application in seconds with a single touchscreen event.