Overview
Performance engineering is an important aspect of software development, it makes sure what is delivered to the end user is optimized to give a smooth user experience, having a small memory footprint consumes less process power and hence consumes less battery. There are different aspects of performance engineering out of which verification of application performance in stress scenarios is an important aspect. This makes sure that even if there is stress on application or host system, application can perform required operations or at least give appropriate message and exit if required.
This document is focused on providing an overview on stress scenarios required to verify performance of application, their impact and potential way to simulate these scenarios. This document describes potential simulation of stress scenarios for Android devices, but this can be done for other platforms as well.
Stress Scenarios
Functional testing is done in a sandbox environment to test the functional aspect of an application, it is necessary to verify that the application is delivering what is required. In reality, functional testing also needs to be tested in a stressful or hostile environment. It is particularly important in gauging performance of applications in stress.
Following are major categories of stress scenario:
System Introduced
Every application is executed on an underline system or OS e.g. Android. When this system gets into stress due to change in system parameters or any external/internal factors, it impacts the performance of the overall system and hence target application also gets impacted. Target Applications may get slow and respond intermittently or even get closed abruptly. E.g. Low Battery, Low CPU availability
Application Introduced
Target Application itself can get into stress due to wrong coding practices, unoptimized code and majorly not following good architectural and design practices. Target
Applications may get slow and respond intermittently or even get closed abruptly. E.g. Unoptimized code in Complex UI, non-optimized network API calls
User Introduced
User action can put both application as well as system into stress, and hence can impact the usability of application. User can introduce stress by opening too many apps, frequency switching between apps etc.