Scalability testing: 7 steps to successful performance

Systems that work well during development,1. Research and quantify the data volumes and
deployed on a small scale, can fail to meettransaction volumes the target market implies. Some
performance goals when the deployment is scaled upof these figures can be eye openers and help the
to support real levels of use.business users realise the full scale of the system.
An apposite example of this comes from a majorThis alone can lead to reassessment of the priority
blue chip company that recently outsourced theof many features.
development of an innovative high technology2. Determine the way features could be presented to
platform. Though development was behind scheduleusers and the system structured in order to make
this was deemed acceptable. The system graduallyscaling of the system easier. Do not try and have
passed through functional elements of the userthe same functionality you would have for a single
acceptance testing and eventually it looked like auser desktop solution provide an appropriate scalable
deployment date could be set. But then the supplieralternative.
started load testing and scalability testing. There3. Recognise that an intrinsic part of the development
followed a prolonged and costly period ofprocess is load testing at representative scale on
architectural changes and changes to the systemeach incremental software release. This is continual
requirements. The supplier battled heroically totesting, focusing on the biggest risk to the project:
provide an acceptable system, until finally the projectthe ability to operate at full scale.
was mothballed.4. Ensure load testing is adequate both in scope and
This is not an isolated case. IT folklore abounds withrigour. Load testing is not just about measuring
similar tales. From ambulance dispatch systems toresponse times with a performance test. The load
web-sites for the electronic submission of taxtesting programme needs to include other types of
returns, systems fail as they scale and experienceload testing including stress testing, reliability testing,
peak demands. All of these projects appear not toand endurance testing.
have identified and ordered the major risks they5. Don?t forget that failures will occur. Large scale
faced. This is a fundamental stage of risk basedsystems generally include server clusters with
testing, and applies equally to scalability testing orfail-over behaviour. Failure testing, fail-over testing
load testing as it does to functionality testing orand recovery testing carried out on representative
business continuity testing. With no risk assessmentscale systems operating under load should be
they did not recognise that scaling was amongst theincluded.
biggest risks, far more so that delivering all the6. Don?t forget catastrophic failure could occur. For
functionalitylarge scale problems, disaster testing and disaster
Recent trends towards Service Oriented Architecturerecovery testing should be carried out at
(SOA) attempt to address the issue of scalability butrepresentative scale and loads. These activities can
also introduce new issues. Incorporating externallybe considered the technical layers of business
provided services into your overall solution meanscontinuity testing.
that your ability to scale now depends upon these7. Recognise external services if you use them.
external system operate under load. Assuring this is aWhere you are adopting an SOA approach and are
demanding task and sadly the load testing and stressdependent on external services you need to be
testing here is often overlooked.certain that the throughput and turnaround time on
Better practice is to start the development of a largethese services will remain acceptable as your system
scale software system with its performance clearly inscales and its demands increase. A smart system
mind, particularly scalability testing, volume testing andarchitecture will include a graceful response and
load testing. To create this performance testingfall-back operation should the external service
focus:behaviour deteriorate or fail.