Many IT projects have encountered environment related issues and defects that impact the test and development teams and are the cause of significant delays to projects. It has been estimated that up to 40% of effort during the software development life-cycle is wasted due to these types of issues.

Here we look at these challenges and how virtualisation can reduce the impact of them. (This article is best read in conjunction with Virtualisation and the impact on testing and software quality.)

Challenge: Time to provision and configure new test environments:

The lead time to obtain new hardware, deploy into the data centre and then install and configure the necessary applications and data is so long that it affects the organisation’s ability to respond to change and the time to market for change. For a not insignificant number of clients, this can be in the region of months.

Benefits of virtualisation

Although this activity is still required, server virtualisation technical resources can configure a template “image” of a server and\or application. With storage virtualisation template datasets can be created. Any time a new instance of a server or application configuration is required, all that is required is for a new copy of the image to be created; basically a file copy operation and a new instance of the configuration is available within hours and not days or weeks. Similarly different datasets can be cloned and attached to virtual server configurations. Combining multiple server and application images and datasets through network virtualisation allows an entire complex multi-system architecture to be encapsulated as a single independent and isolated object. Through a combination of these techniques, a library of ready to use servers, applications and datasets can be built and made ready to deploy. Provisioning can be done in a matter of minutes.

Challenge: Unauthorised change made to environments: Code and configuration changes are made in response to defects or other issues which are not tracked. This typically leads to defects and issues affecting production at go-live as the necessary changes are not tracked and so not applied into production.

Benefits of virtualisation

Virtualisation does not help prevent unauthorised change to be made to environments. However, as templates can be created we can revert to known states and verify testing against these whenever we require. Additionally, we can ensure that a “snapshot” of the final state of environments used during testing is retained. This can be used to check if there are differences between the test environment and production environment if defects are found in production.

Challenge: Insufficient environments or infrastructure available:

Typically a compromise is established and environments are shared between testers and even across multiple projects. This results in testers affecting the validity of each other’s testing by altering the state of data (unless is it is very carefully managed and coordinated - a challenge in itself).

Benefits of virtualisation

Server virtualisation allows more servers to be offered using the same amount of physical infrastructure. By having more servers available we can provide more environments. We then start to reduce the number of issues and complications that sharing environments brings – reducing scheduling complexities, project interdependencies and the risk that testers can impact one another.

Challenge: Insufficient resources available to support non-production environments:

Typically technical support resources for environments, such as system and database administrators, are shared between production and non-production system support. As a result when production issues arise, non-production support activities are put on hold affecting the productivity of the entire software development life cycle.

Benefits of virtualisation

By the creation of template “images”, although issues can still occur, these can be addressed in the standard image and users of environments can update their images to obtain these “fixes” according to their own environment usage schedule. Over time this means that support resources only need to support single instances of applications in a central location.

Challenge: Scheduling of test environments:

The coordination and allocation of environments becomes a complex and time-consuming role. This is usually compounded when sharing of environments as dependencies become more complex to manage. For example an issue affecting one project may prevent testing continuing until a code fix is applied. However, the code fix cannot be applied as it would affect the testing for another project.

Benefits of virtualisation

By having more environments available, the scheduling of environments tends to become simpler. Additionally, server virtualisation allows us to provision “image” templates so quickly and also gives the ability to “pause” an environment. We can thus avoid the scenario where environments sit unused for periods of time because the process of tearing down and provisioning another environment takes longer than the window of time for which the environment was not being utilised

Challenge: Reproducing defects can be difficult and time consuming: In order for defects to be resolved, a developer generally must be able to observe them. Recreating the issue in a different environment is sometimes problematic and results in defects being unresolved. This is compounded when ineffective configuration management is in place.

Benefits of virtualisation

Server virtualisation allows “snapshots” to be made of the environment state at the point of defect detection. These snapshots can then be transferred to developers who can redeploy the snapshot and investigate the defect in an exact copy of the environment in which the defect was found.

Challenge: Integration with change control, release management and configuration management teams: Environment management teams are responsible for delivering environments to its customers. However, this delivery must be part of an integrated release management approach and strategy. These processes are the foundations and support that define the input for the environment requirements.

Benefits of virtualisation

Server virtualisation can assist by ensuring that change is distributed using known configurations contained within defined image templates.

Julian Brook will be speaking at the Software Quality & Systems conference in London, 29 & 30 September.