Wednesday, November 12, 2014

Interrupt Testing Automation of Mobile Apps

Interrupt testing of mobile application is defined as a process of replicating the random interrupts while the application is executing its normal flows and assessing their impact on it. The expected behavior of the application is handling of these interrupts gracefully without blocking them or hiding the notifications automatically and resuming the normal flow of the application once the interruption is over.
Some of the important interruptions that need testing in any mobile applications are:
·         Incoming SMS
·         Incoming calls
·         Incoming Push Notifications
·         Device Power cycle
·         Data cable Insertion and Removal while data transfer
·         Network connectivity on/off
An application should be able to handle these interruptions by going into a suspended state and resuming afterwards, as these are possible to happen while the app is running on the end-user device any time randomly and unexpected.
Interrupt testing of mobile application poses various challenges related to the replication above-mentioned interruptions while the app is running on the test device for both manual and automation testing.
Some of these challenges and their workarounds in manual testing are -
·         Generation of incoming SMS - by using a web based SMS service.
·         Generation of incoming calls - by calling the test device from another phone
·         Incoming Push Notifications - by using OEM Push Notification Gateway control panel
·         Device Power cycle – by pushing off/on the power switch
·         Data cable Insertion and Removal while data transfer – by physically Insertion/removal of cable
·         Network connectivity off/on – by moving in/out of the lift with the test device or placing the Mobile phone in/out of a microwave oven
Interrupt testing of mobile application is a very important but still only very few automation tools and frameworks are able to support these. As it is very difficult to replication/simulation of above interrupts on the test device in the lab or over the unattended remote device in the cloud without any physical interaction with it. 
Some tools/frameworks available out in the market provide the capabilities of simulation for required interrupts with help of keyword based scripting. The QA engineer is required to add the interrupt on various screens/activities of the test cases and has to write manually the events for expected user action on it and assertion for the expected app behavior for every added interrupt in the test script. QA engineer has the responsibility to verify these interruptions for every scenarios/screens and coding it manually becomes very time-consuming and complex job.

Exploring various available mobile test automation solutions & Tools, I found mAutomate, which is one of the first few mobile automation tools, that has simplified this process of Interrupt testing automation of mobile application making it achieve able just in few clicks. You can get the access to its free version from its website (mAutomate.com). Once you have the set of functional test cases ready (recorded) in the system for execution on target devices – you can simply insert the required Interrupts at any stage of the test script just by clicking on the web based test script-editing wizard without writing a single line of code. It is able to simulate all required interrupts on the target devices while the test script is executing on the remote device and get the results with screenshots back to us on the web interface.