Thursday, 9 July 2015

The Performance Testing Best Practices



As a tester, your job is to deliver the best possible feedback on the promptness of an application in the development cycle as early as possible. Obviously, in the real business scenario, deadlines are always tight and testing starts later than it should. There are a few simple principles that can help make your performance testing projects more effective.  


  •       A reasonably accurate result at present is worth more than a very accurate result later on. It is well understood that modifications become costlier later in the project. As a result, the sooner the performance issued are found, fixing them seems the easier.  
  • Test broadly instead of deeply. It is better to test a broad range of scenarios in a very easy manner than to test a few test cases very intensely. In the beginning of a project, a fairly accurate simulation of the real world is all right. Time spent obtaining each test case to unerringly mimic the predicted scenario or testing many slight variations of the real world scenario is better spent a wide range of scenarios is tested.    
  • Testing should be performed in a controlled environment. Testing without good configuration management and dedicated servers will yield test results that cannot be reproduced. Hence, in such a case you cannot measure the improvements correctly when the system’s next version is ready for testing.

How to make a load testing program successful

Based on input from partners and customers, here’s a list of best practices that will assist load testers to make a quick start on the way to a quality load testing program. 

1.       Recording a script 
 
First, find out the most frequent workflows in the application that is being tested. For an existing application, you need to identify this by checking analytics and server logs to get exposed to the most common scenarios. 

When you are recording, confirm that you test the application in a production-like setting, including factors like SSO, SSL, firewalls and load balancing. This is crucial for simulating exact end-to-end behaviour. You are recommended to record scripts from all of the ordinary user environments including different mobile devices and browsers.

2.       Improving a script with validation and correlation 
 
Find and replace all dynamic values in the recorded script, for instance, session-id as well as security tokens. If these values are not regenerated at the time of test execution, most of the systems will not function properly. This procedure is called Correlation.

Ensure that you stress the application’s back-end instead of only the cache servers, by restored static values in place of parameters that will be defined at run time automatically. Validation logic needs to be added to the script in order to confirm that the results obtained under load are consistent. 

3.       Running the load test

Create practical runtime scenarios which take into consideration the number of users, the test scripts, network limitations¸ browser types and schedule. The SLA or set of criteria should be defined for a successful performance test. Keep away from the temptation to extrapolate outcome, one server with 100 users could not run like two servers with 200 users. Testing the equivalent of your complete production stack should be performed. 

4.       Analyzing results
 
It’s imperative to verify all the application parameters along with the number of connections, transaction times, response time as well as throughput. There are several reasons why an application breaks under load and the actual cause is not always easy to predict.
For effective performance testing, server side statistics needs to be analyzed side-by-side with client side statistics. Also, remember to search for any discrepancies that may indicate a problem. Authenticate results against recognized industry rules to fast identify possible bottlenecks.