Testing the test environment - Infrastructure testing for non-production environments
(Published on behalf of Divya Teja Bodhanapati)
In our previous post, we looked at the perils of ignoring the non-production environments and focusing only on production environments.
In order to achieve a reduction in the total costs of operations, an optimized, robust, and reliable and "fit-for-purpose" non-production environment is essential.
The question is when can an environment be called "fit-for-purpose" or "reliable"?
The answer is "when all the components (infrastructure, middleware and the applications) involved in the environment perform as per the user defined requirements."
When we look at the largest component i.e. infrastructure, 3 elements stand out - Storage, Network and Computing components. Testing applications is a well-established function but how do we ensure the underlying infrastructure is also working as required?
Not many organizations have given a serious consideration to test their infrastructure before putting them to use. Over the past years, it has been observed that the outages and downtimes in environments are primarily due to infrastructure issues.
The Quorum Disaster Recovery Report, Q1 2013 says that, "55% of the failures are at hardware level (network and storage components)". This is not surprising.
In July 2012, micro blogging site Twitter had to post this message on their blog after a short downtime blaming an "infrastructure double whammy". This outage affected millions of Tweeters across the globe; a day before the Olympics was to begin in London.
But what is the impact of downtime in non-production environments?
Any system downtime will end up shortening the development and testing cycle as these processes will have to wait till the environment is up and running again. Due to insufficient time, the development and testing stages may not be conducted properly leading to a vicious cycle of possible defects in the final product. This would ultimately result in outages in production environment as well - the consequences of such as outage can be even more devastating to the business as seen in the Twitter case above..
Infrastructure testing essentially involves testing, verifying and validating that all components of the underlying infrastructure are operating as per the stipulated configurations. It also tests if the environment is stable under heavy loads and different combinations of integrations and configurations.
Infrastructure Testing includes all stages of software testing - unit testing, system & integrated testing, user acceptance testing and performance testing applied to the infrastructure layer. By bringing in the rigor of testing in the infrastructure space, infrastructure testing eliminates inconsistencies in the infrastructure configurations that are the main cause of outages and downtimes in non- production environments.
A thorough testing process is crucial to the success of any rollout - by testing the underlying infrastructure of the non-production environment, the probability of any defect due to incomplete testing can be safely ruled out.
(Divya Teja is an Associate Consultant at Infosys with close to 4 years of experience in the IT industry. Her focus areas include Non-Production Environment Management and Infrastructure Automation.)