As more and more organizations adopt agile Testing methodologies, managing their Test environments becomes more challenging due to the frequently changing business requirements. This also has an associated impact on the Test cases. Agile way of software development requires a working code at the end of every 2-3 weeks, which calls for continuous collaboration of the Testing team with other cross functional teams which could be geographically dispersed.
IT departments are, thus, under tremendous pressure to optimize costs and accelerate provisioning speed. and increase availability of the Test environments. To be able to respond to these challenges and associated business needs, IT departments need to invest a significant amount of money and effort in technologies and methodologies such as Continuous integration – Continuous delivery (CI/CD), virtualization and automation.
This paper shares the key considerations for successfully establishing and managing Test environments in an agile methodology and talks about how a best-in-class operating model can be built for the same.
Mapping the strategy
Test Environment Management (TEM) is a multi-dimensional function in the software delivery process which aids Testing by providing validated, stable and usable environments to execute Test scenarios.
For most organizations today, TEM does not exist as a separate function or entity due to which organizations fail to tap into its full potential. This often results in higher operational costs, negative impact on quality and lower availability of Test environments.
It is also a challenge for many organizations to manage their Test environments effectively at multiple levels like infrastructure, application, database and operations.
The challenges multiply when organizations transform from a traditional way of Testing to a more agile environment. For instance, a single project running in agile method can have multiple releases and each release has multiple iterations. Providing rightly configured environment for each release and iteration is quite challenging, given the scope of changes that typically take place in agile methodology. Hence, there is a need today for an effective Quality Assurance strategy.
The key areas for effectively managing Test environments in agile methodology are described in detail below.
Service integration: creating a unified Team model
Unlike traditional mechanisms of Testing, Agile Testing needs on-demand environment provisioning, higher availability and right configurations. The Test environment team also has to manage the environments until all the iterations are completed. To cater to these demands, IT departments need to establish a unified Test environment management model which enables seamless coordination between Testing and all stakeholders.
The Unified Test Environment Management Model creates a single point of contact for the Testing team to co-ordinate with and will be accountable for Test environments and their related activities. In an agile environment, the Test Environment team performs all necessary activities like Test infrastructure management, Test data management, coordination and support, and deployment management activities.
Unlike the conventional way of Testing, the agile method integrates all Test environment activities (see Figure 1).
Figure 1: Unified Test Environment Management
The first step towards building this model would be to understand elements critical of Test environments. Typically, a Test environment lifecycle consists of two layers:
In this model, the Test Environment team has complete ownership of these two layers, involving tasks starting from environment provisioning, allocation, support and maintenance to environment clean up and refresh activities.
Benefits of this approach are:
Service automation: continuous integration and continuous delivery
In agile Testing, each release program is structured with multiple releases and each of these releases generates a working product at the end of each iteration or sprint. During such situations, fulfilling Test environment specific demands is the biggest challenge faced by the environment management team.
As the volume of work and the number of changes is high due to multiple iterations of a typical project, it makes sense to increase the automation footprint as much as possible in all facets of the delivery process. This also helps organizations save on time and costs as they are not exposed to the hazards of manual processes.
The illustration below depicts the broader areas in Test environment management where automation is important for creating continuous integration and delivery framework.
Benefits of implementing CI/CD:
Service optimization: adherence to best practices
Mature TEM service providers maintain best practices that mimic production and align with Information Technology Infrastructure Library (ITIL) standards for better output. Processes and maturity of a service can be enhanced by understanding the current operating model and mapping it to the Test environment strategy document. So, it is essential for an organization to understand the existing operating model before defining strategy for the target operating model to manage Test environments.
Some of the key points to be considered while defining the strategy for a target operating model are:
A strong alignment to:
Buy in from all stakeholders
Unlike production, Test environments do not fall under the high monitoring zone. However, there is an increase in demand for TEM to follow production like best practices and guidelines. With the availability of cost-effective monitoring solutions, appropriate monitoring tools can be implemented in Test environments which will enable organizations to continuously monitor and correct deviations, if any, in service delivery.
Benefits:
Conclusion
With an increase in demand for agile Testing, organizations are under more pressure to ensure higher availability and quick provisioning combined with disruptive technologies such as hardware/software virtualization, cloud computing and deployment automation. It is, thus, important to understand your organization’s overall Test environment strategy for agile Testing by focusing on the three key areas of: service integration, service automation and service optimization. These bring along short and long term benefits.
In the short term, organizations will be able to build and sustain responsive Test Environments capable of adapting to agile methodologies. While in the long run, improvements in the overall operating model will result in creation of best-in-class Test environment operating model capable of transforming the entire QA and associated functions. The long-term improvements will also result in delivery excellence and reduction in operational and capital costs.
When a mature organization adopts software development methodologies like agile, it successfully implements service integration, service automation and service optimization in its program lifecycle. This will enable the organization to provide complete accountability of the service and higher availability of the Test environments by coordinating with stakeholders and end users.