I was recently asked why a technology company should stress test an application/website/system. Before getting to the why, here is a quick definition of stress testing via Wikipedia:
Stress testing (sometimes called torture testing) is a form of deliberately intense or thorough testing used to determine the stability of a given system or entity. It involves testing beyond normal operational capacity, often to a breaking point, in order to observe the results.
Stress testing an application not only helps to check code and database queries, but it also allows you to test the infrastructure of your hosting environment. This includes memory, cooling systems, and the CPU. The process of stress testing is easy, but could be time-consuming depending on the results of the test. Below are 8 steps to stress testing an application or website (courtesy of Microsoft®):
- Identify stress testing objectives in terms of the desired outcomes of the testing activity.
- Identify key scenario(s) that need to be stress-tested to identify potential problems.
- Identify the workload that you want to apply to the scenarios identified during the “Identify objectives” step. This is based on the workload and peak load capacity inputs.
- Identify the metrics that you want to collect about the application’s performance. Base these metrics on the potential problems identified for the scenarios you identified during the “Identify objectives” step.
- Create test cases in which you define steps for running a single test, as well as your expected results.
- Use test tools to simulate the required load for each test case and capture the metric data results.
- Analyze the metric data captured during the test.
Following these simple 7 steps, your development team will be able to review the stress test data and compare the information against the testing objectives to fix any issues.
In summary, stress testing an application/website/system helps to identify issues that WILL surface under extreme conditions. The end goal of the stress test is to give your audience the best user experience no matter what situation the application, server or infrastructure is facing.