This is the seventh entry in a 10-Series Blog posts every week in regards to Software-Plus-Services: Application Instrumentation, Stress Testing and Production Management. When preparing for the launch of an application, it is crucial to understand how it will likely behave under real-world user load. Our experience indicates the best way to plan for growth and avoid surprises is to simulate the anticipated user load with a realistic and well-instrumented load test. Developing a test scenario for each of the application's anticipated user types ensures that all application functions are exercised. Furthermore, by simultaneously loading the application with multiple user types, we can expose complex interactions inside the application such as deadlocks, race conditions, and queue backlogs. Real-world application usage is rarely characterized by searching for the same keyword or logging in as a single user thousands of times. It is extremely important to introduce unique, dynamic user input to the load testing to avoid falsely positive results due to caching of sessions, query results, etc.
Effective load testing, like ongoing operational monitoring, should correlate end-user experience with internal application performance metrics. The load testing then serves as both a direct measurement of performance as well as a means to exercise the application while observing its behavior directly though database, application, and OS metrics. The second question after "What is the capacity of the application?" is always "Where did the bottleneck occur?" With a properly instrumented environment and well-designed load test, we are able to answer both questions.
Stress testing should not be a standalone effort. In an ideal world, it will take advantage of all of the instrumentation previously created and leverage the existing synthetic user scenarios. With System Shepherd®, WebWalkTM, and StressWalkTM all of the components tie together to provide maximum reusability. Additionally, data from the stress testing runs should be available for analysis side-by-side with live production data thus enabling correlation and continued enhancement of the stress testing approach.