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.

Wednesday, 24 September 2014

Colocated Performance Testing addresses the new Business – IT requirements

Applications break the barriers of time and space and connect an enormous population of users with an organization. To be successful, the application is supposed to be consistent against expected usage patterns.

System crashes and delays in loading time/transactions are among the major reasons for the decline in user base. Since the device landscape is undergoing diversification due to different versions of OSs, platforms and usage patterns, Performance testing  requirements are evolving into more complex and even more demanding challenges.

For an enterprise, it is a matter of survival to ensure that the IT initiatives perform as expected. Hence there is an ever growing demand to understand the levels of performance and identify the bottlenecks and reasons that can be manipulated to improve the outcomes.

Performance counters in LAN, WAN and load generation from a combination of Virtual users and real users are being required to address new business scenarios to complement the innovative strategies that are unique to organizations.
A faster go to market depends on the ability to ensure a quick and comprehensive system to test concurrency, thorough and render response times. In addition, the reporting is expected to support the performance re-engineering initiatives and retest the applications.

It comes as no surprise that development efforts need to be augmented with performance test expertise to ensure minimum post production defect density. It also makes sense to strengthen the development with a performance oriented approach that enhances the quality of business outcomes.

But the conventional approach of exporting test requirements weighs on the cost, time and efforts. Further the distance in communication tends to blur the business priorities as the technical specifications become clear.
The recent success of the Colocated testing model is gaining momentum by offering cost benefit and QA maturity to the enterprises. Colocated performance testing places testers into the development environment and integrates the test expertise in close proximity to the development initiatives.

The most surprising advantage of the model is the real time reporting, recommendations and retesting. This advantage is known to have helped organizations discover a majority of defects very early in the SDLC and avoid gigantic losses with surgical precision.


The testers in addition leverage the cloud capabilities, tool licences and technology partnerships of the testing service provider to the advantage of the enterprise. With very high degree of customization and the benefit of an unbiased assessment, this model ensures a symbiotic relationship that strengthens cause and effect relationships in the IT system to give impeccable performance.