Performance risk mitigation strategies
In the earlier article, I spoke about some risks that development team, project managers and performance testers should take into consideration. In this article, I am making an attempt to highlight some strategies that one can adopt to mitigate some of those.
Quick response to the request is directly proportional to the end user satisfaction. A lot of entrepreneurs sell their idea with speed being one of their primary selling points. Thus speed can also be a part of business risk. So how to address the speed related risks?
Risk mitigation strategies for speed related risks:
- It is extremely important to make sure that the performance targets are the end user requirements and not some manager’s aspirations
- One should always compare the response time numbers and performance of system with its earlier releases / competitor’s comparable counter
- Performance test must simulate the production behavior and hence the workload should be designed keeping in mind the production load on the system
- Performance test results from the earlier release must be used to take decisions regarding the application, system design and architecture
- Performance tests must include transactions that consume more (than others) resources, business flows that are most performance critical and transactions that are more time-critical
- Have production like data volume in the performance test database to simulate production environment behavior while testing
- Make provision for execution of performance tests during periodic activities like daily batch runs, etc.
- Execute multiple rounds of tests to ensure consistency in results
- Execute tests under different transaction load levels and in different scenarios
- Make sure that the data generated / stored in the database during the test follows the business rules and logic and no data is corrupted
Scalability is another critical aspect that one considers while designing the application and while conducting the performance tests. Every team aspires to build a scalable application that doesn’t fail under expected high loads. In such scenarios, one’s target is to not show any error to the end user and not lose data.
Risk mitigation strategies for scalability related risks:
- Test the app under varying number of user loads and compare the results across different tests
- Try replicating production load and execute the test with same load at normal and peak levels
- Design tests that can directly co-relate the real world business problems
- When reached at stress point where the application breaks, gradually reduce the load and note the performance numbers for each of the load volume. Then identify the load (maximum load) at which the system is able to meet the business SLAs (in terms of performance numbers)
- After the test ensure that the application has made valid database entries and front end response posttest execution
- Always go slightly beyond the expected peak load and evaluate the behavior of the system under such a load
Stability encompasses reliability, uptime and recoverability. Stability issues are identified out of performance, stress and long duration tests.
Risk mitigation strategies for stability related risks:
- Endurance tests must be planned well and those must replicate long duration scenario for the application like that in production
- Monitor servers for their key counters (db utilization, memory utilization) while conducting stress tests
- Bring down one component of the system (or infrastructure) while conducting performance tests and measure its impact on the system during the test.
- Apply a patch to the system while being performance tested
- Reboot the entire infrastructure and then test the system. Compare these results with tests without reboot
- Force negative tests during the performance tests
Thus using these key mitigation strategies, almost all system and business related risks can be addressed.
This post is also available in: French