Just like you, mobile application and web need a little pressure to know their limits
Stress testing is the process of determining the ability of a computer, network, program or device to maintain a certain level of effectiveness under unfavorable conditions. The process can involve quantitative tests done in a lab, such as measuring the frequency of errors or system crashes. The term also refers to qualitative evaluation of factors such as availability or resistance to denial-of-service (DoS) attacks. Stress testing is often done in conjunction with the more general process of performance testing.
Performance Testing vs. Functional Testing
Functional testing ensures the application is working as per the requirements. It answers the question, “Does the app do what it is expected to do?” While performance testing checks the performance and behavior of the application under certain conditions such as heavy user load, peak usage times, low battery, bad network coverage, low available memory, simultaneous access to application’s servers by several users and more.
Understanding Your Application
As you develop your mobile testing strategy, an important starting point is understanding the type of application you are running. This will guide the suite of tests you want to focus your limited efforts on. There are three types of mobile applications, each of which dictates a specific set of testing requirements.
The first type is a browser-based application. These applications are delivered directly through a mobile browser, without requiring any software to be downloaded or installed on the device. Browser-based applications are lightweight, centrally managed, and have an added benefit of being built on the same stack no matter what device they are delivered to — iPhone, Android, Microsoft, PC, or otherwise. But they don’t have access to all the features built into the device, and they tend to appear slower and more sluggish to end users.
Consider: While testing for performance, it is important to replicate the user server load from mobile browsers in case additional dedicated components are being deployed to cater such requests. It is also important to test Web page rendering on target devices (like CPU, memory or browser rendering engine) as it can affect end-user performance.
The second type is a native application (native app), which is has been developed to run on a particular platform using software installed directly on the device. Because native apps are written for a specific platform, they can interact with and take advantage of device-specific hardware and software, such as a global positioning systems (GPS), accelerometers, and cameras. Native apps also tend to be faster and more responsive to the user because much of the functionality runs locally on the device.
Consider: This leaves the development group with the task of having to develop and test diverging codebases — essentially different versions of the app — on each supported platform (iOS, Android, Blackberry, Windows Mobile, and so on). Since the code on each device is in fact different, testing a native application calls for thorough performance testing on each target platform as well as maintaining a set of test devices in each selected platform.
The third type is a hybrid application (hybrid app), which is an application that combines elements of both native and Web applications. These apps are typically composed of a native shell application that provides a fast, integrated experience with the device, but the content, business logic, and even the rendering of the user interface is done with an embedded browser.
Consider: Hybrid mobile applications still require separate development efforts and pools of testing devices. However, they don’t demand as much rigor in testing since much of the codebase is in fact shared. Again, a performance test strategy has to target the load generated by users of such hybrid apps on the server-side, as well as gauge the on-device application performance from an end user experience perspective.
Benefits of stress testing
Extreme load conditions are rarely seen in production. Therefore, stress testing benefits organizations by revealing application issues that only become apparent under these extreme conditions. Proper stress tests can also help you uncover the following:
- Synchronization and timing bugs
- Interlock problems
- Priority problems
- Resource loss bugs
- Memory leaks
- Data loss & corruption
Utilizing stress testing tools
When approaching stress testing, you’ll want first identify test objectives, key scenarios, the workload you want to apply, and the metrics you’ll be tracking. After you’ve created your test cases, work with a stress testing tool to simulate the required load for each test case and capture performance metrics. A truly effective stress testing tool will realistically simulate thousands+ of users, analyze your application’s performance and monitor your servers under load.
Here list of Performance testing tools
- LoadUI Pro
- Load View
- Apache Jmeter
- HP Performance Tester (LoadRunner)
- Silk Performer
- Rational Performance Tester
Reaching the Breaking Point
Stress testing is an essential and beneficial process that provides otherwise unattainable insight into the performance of your web and mobile applications under extreme load. Identifying the potential breaking points in your application will allow you to correct them before they become expensive issues in production.
While extreme load conditions rarely appear in production, never underestimate the potential for their occurrence.