Editor’s note: Alexander zooms in on software performance testing and shares some battle-proven practical tips for the process. And if you need a deeper engagement of software testing professionals, check out our offer in performance testing.
Software performance glitches affect the experience of users with software, causing companies to lose customers and revenue and limiting organizations’ possibilities to scale. To make sure your software successfully handles expected traffic volumes and remains stable during user activity surges, I recommend including performance testing in the testing scope and carrying out relevant types of performance testing already at the beginning of the development process.
Below, I describe key stages of the software performance testing process and share some best practices we employ at ScienceSoft when carrying out performance testing for our customers.
1. Identifying testing objectives and selecting relevant types of testing
If you are interested in checking software behavior under normal circumstances and for the expected traffic, go for load testing. Opt for stress testing to check an application’s performance with the traffic considerably exceeding the expected load. Add scalability testing to the testing scope to measure an application’s capacity to scale with more traffic load being applied to it. And in order to check whether software remains stable over an extended time, including 24/7 operations, perform stability testing.
2. Elaborating and confirming user scenarios
As the next step, performance test engineers should design comprehensive user scenarios for key user roles. They should collaborate with BAs, the product owner, and other project stakeholders in order to select the user roles most relevant to performance testing and rely on them to emulate user actions. For instance, validating the performance of an ecommerce solution for one of our customers, we singled out such user roles as a guest user, a logged-in user, and a repeat customer, and designed the following scenarios: logging in or signing up for an account, reviewing previous orders, searching for items in a product catalog, viewing product page details, adding a product to the cart, etc.
3. Designing performance tests
Then, performance test engineers should design performance test scripts for an application and create load profiles to measure the necessary performance metrics. For a well-rounded view of an application’s performance, I recommend concentrating on measuring the following performance KPIs:
- The number of users who may access software simultaneously.
- Response time – the period from the moment the first byte of data reaches a user to the moment the last byte is received.
- Hits per second – the number of requests generated to the target server.
- Throughput – the average bandwidth consumption required by a test per second.
- Errors per second.
- Latency – the period from the moment a request is sent to the server to the moment a response is received.
4. Setting up an environment for performance testing
You may run performance tests in a test or in a production environment. In order to make the right choice, I recommend assessing the impact and the cost of potential downtime on an organization’s operations and customers and compare it with the costs of the test environment setup. Still, I advise you to run performance tests in a test environment since testing in production bears risks, such as:
- Real application users will have to deal with slower response and errors.
- An application may crash.
- If many database records are generated during testing, database response time could be affected even some time after testing is over.
It is also important to keep the test environment isolated since real user activity may influence the accuracy of test results and make it difficult to identify the root causes of performance issues.
5. Executing performance tests and analyzing the test results
Test engineers run the designed tests in a selected environment. If you opt to run performance testing in production, make sure that performance test engineers execute tests off-hours, when the real user activity is minimal. Once testing is completed, use the identified performance KPIs to plan performance improvements.
- The test environment should closely copy the production environment, and testing should be performed with the same number of database records as in production. To reduce costs and time required for setting up the test environment, consider opting for a cloud-based test environment. This would allow you to reduce infrastructure costs as your organization will pay only for the time of using the infrastructure resources.
- Sufficient network bandwidth should be available since low bandwidth may lead to user requests generating timeout errors, which affects the accuracy of test results.
- The proxy server should be removed from the network path, as with a proxy, the client will be provided with the data from the cache and will hence stop sending requests to the server.
Stable software performance is the key to positive user experience particularly critical for ecommerce businesses, for example. Thus, it’s vital to check that your application shows consistent performance under expected and peak load, as well as offers possibilities for scaling – and ScienceSoft’s performance testing team is always ready to help with the task, just leave us a request.
We carry out load, stress, scalability, and stability testing to validate software compliance with its performance requirements.