Android offers an open source software platform for mobile devices, initially created by Google and subsequently by Open Handset Alliance. The popularity of Android is on the rise as this platform is paving the way for a number of user-friendly apps. With more and more technological advancements, Android is making room for brighter features on Android phones. Irrespective of the time dedicated for Android design or the fact that an application developer is very careful with the programming part, nobody can deny the fact that mistakes can occur anytime leading to appearance of bugs. To reduce the impact of programming errors, and enhancing the productivity of the development procedure, it is crucial to adopt a consistent approach for Android application performance testing.
Phases of Efficient Android Application Testing
Before going into the details of consistent performance testing, let us discuss the crucial phases involved in testing of Android apps.
Software Validation Testing: This testing phase can be sub-divided into functional testing, followed by non-functional testing, and finally documentation review. Code walk-through is a significant component of functional testing which involves tracing of the source code with the help of a miniature test case. The state program variables are monitored manually in order to analyze the assumptions and logic of the program. Most of the tests done revolve around the call flow and user-interface, involving a final testing done to locate new bugs. The non-functional sub-phase involves testing of user acceptance, compatibility and usability. Finally we have documentation review wherein things like design document review and architect reviews are performed.
Performance Testing: This involves two elements: performance elevation followed by performance consulting. Performance elevation involves testing of code profiling, database, endurance, end-to-end transaction and so on, while performance consulting comprises capacity planning and architecture validation.
Test automation: This phase ensures the quality assurance and comprehensiveness of the software through establishment of an automation framework, test execution, scripting and regression testing.
Significant Components of Android app performance testing
So far as performance testing is concerned a consistent delivery model needs to be followed across varying scenarios. This enables Android app developers to comprehend the performance level of the application on any given device from the end-users point of view. Let us understand the significant components of consistent performance tests on Android apps by taking a banking application as an example.
Server Component: This component takes care of the business logic in case of the banking transactions initiated from a desktop browser or a mobile client.
Network Emulator: This helps in the recreation of a range of network conditions like jitter, latency, packet error, reordering or loss, bandwidth restrictions, and so on, enabling developers to replicate environment like LAN, WAN, GPRS, 2G, 3G, etc. The network emulator helps in the determination of the traffic load that the application generates under diverse network conditions.
Load Generator: This tool helps subjects the application to load under test conditions and evaluates the load times. Changes in configuration can be made like enhancing simultaneous users, increasing the load and boosting transactions occurring per second.
Android Device: Both high-end and low-end devices are used for testing because performance varies and it is essential for a device to be configured accordingly.
Performance Monitor: With the help of the performance monitoring tool ‘Perfmon’ which has windows mapping, the performance counters undergo configuration prior to the test. The data collector set once configured and started, leads to automatic data collection for every scenario.
Android Debug Bridge: This is a tool that accompanies Android SDK, enabling interface with and control of the Android devices.
Dalvik Debug Monitor Server: This tool for Android debugging makes room for things like screen capture, port-forwarding services, radio state information, location data spoofing, logcat and more.
It is very important to understand the plethora of resources involved before going for android application development. Performance testing is indeed crucial to understand how the application will perform with respect to satisfying the needs of diverse user groups.
A Consistent Approach to Android Application Performance