Test Environment Management Best Practices
Nov 21, 2019
This post highlights the importance of an efficient and reliable test environment management process in supporting application releases/project delivery. We begin with the introduction of test environments and the problems that companies are facing due to poorly implemented and executed test environment management practices.
Finally, we suggest itSMF ITIL V3 compliant best practices for improving the test environment management processes and explain how a dedicated test environment solution can help you achieve those best practices.
What Is Test Environment Management?
Before we dive too deep, it is important that you understand a little bit about test environment management. If you have operated a software system that saves anything, you’ve probably dealt with test environments. When preparing for a launch many concerns about these environments, normally hidden, come forth.
If you have operated a software system that saves anything, you've probably dealt with test environments.
You may hear things like “please don’t deploy to staging, some clients are load testing on it” or “can you refresh the user data so that our consumer can regression test on it?” These sorts of requests come through ad-hoc communications, like Slack and e-mail.
These communications and how we respond are our test environment management. It is often ad-hoc and full of error-prone, manual processes.
Those communications are often composed of the following concerns: tracking dependencies; scheduling data refreshes and new testing environments; and dealing with conflicts of interest between consumers.
The Balcony View of the Poorly Run Test Environment Management Process
Any software development has to go through a series of development stages that are defined in the Software Development Lifecycle (SDLC) methodology. The unique stages will include, requirements analysis, design of the software module, implementation or development of the software module, Testing of the software modules and continuous evolution of the software modules.
Testing is a very critical stage of the SDLC and can decide the ultimate fate of the quality of software being released into the live environments. Therefore, it is very important to ensure that the test environments used for testing the software are reliable and as close to production as possible.
Here is a list of hotspots environment managers should take a special interest in:
Managing test infrastructure such as hardware servers, application servers, networking, firewalls, software components required for testing, build software required for testing releases etc.,
Managing test environments such as database clusters, UAT, Pre-prod and the data required for testing.
Manage or monitor Service Level Agreements (SLA).
Planning and analysis of test environments.
Monitoring servers and infrastructure.
Environment Maintenance.
Effective Communication between the test team and other stakeholders.
Bug or Defect Lifecycle & triage processes.
Why Is the Test Environment Management Process Important?
In today’s ever-changing dynamic IT/Software field, requirements keep changing and evolve as technology evolves. There is a complex entanglement between three dimensions – namely cost, quality and time.
Ideally, if we have sufficient budget and time, software teams will be able to implement a high-quality product. In practice though, it’s rarely the case that projects have the right budget and time. More often, projects run over budget and time constraints. As a result, the quality of the product suffers.
It's rarely the case that projects have the right budget and time.
In most of the cases, the reason for a bad quality product is because test environment management isn’t given high priority or the environment management process is not managed efficiently. With regulatory compliance such as Sarbanes Oxley, it’s becoming increasingly important for IT to ensure that their software or service is compliant with industry norms or business requirements.
Test Environment Mis-management
Here are a few, expensive problems that occur when you poorly manage your test environment:
Test environments differ from production environments in terms of the operating systems, configuration, software versions, patches, etc. The wider the gap between test and production, the greater the probability that the delivered product will have more bugs/defects. This not only results in poor code quality but may also lead to product failures in production or live environments.
Poorly managed infrastructure assets can result in budget spikes and may delay the testing process.
Poorly administered and poorly controlled environments/infrastructure assets can result in unintended consequences. It may also result in poor configuration and change control.
Root Cause Analysis of incidents and defects becomes challenging due to the misalignment of test and production environments.
Due to budget or time constraints, it isn’t uncommon for companies to assign the application developers as testers or for testers to directly test the code in production. This has not only resulted in a lack of accountability but also poses a deep risk in the software development process. Sarbanes Oxley requires that IT companies steer strict controls and accountability of their software development processes.
It is very common for test teams to clone or extract the production data and use it for testing purposes. This approach is time-consuming, error-prone and may not meet the data protection policies. Further, it isn’t change-controlled and cannot be audited.
Communication plays a very critical role in any phase of the software development lifecycle. Poor communication can result in misunderstanding of the testing/business requirements and may also result in failure to identify important defects.
You need to configure bug or defect tracking tools well and there should be a process in place to manage their lifecycle. It isn’t uncommon to assign defects to the wrong teams and miss important information. This not only results in wasted time/money but may also infuse more defects at later stages.
Fixing bugs or defects is easier at the early stages of the software development process, rather than at later stages. It is also extremely expensive to fix bugs found in production, compared to fixing them in earlier stages such as the testing stage. This is the reason that test environment management is extremely important and organizations need to take this seriously.
Embracing Test Environments With Good Practices
We can combat the problems we see above with healthy practices. We also want to procure useful tooling, like Plutora to ease our ability to put such practices into place. First, we want some level of metrics to know where our trouble spots may lie. When we have those, we can implement some of the following practices.
It is extremely expensive to fix bugs found in production, compared to fixing them in earlier stages such as the testing stage
Package and Publish Environments, Not Just Your Code
To mitigate the costs of poorly managed infrastructure we can package our entire test environments—lookup data and all. Then we can publish these packages to multiple clients.
For example, an e-commerce company named XYZ may be adding a new webpage to sell bikes online. Once the development team at XYZ writes the code for the new webpage, the code is packaged and released into the test environments. Multiple test teams may have to test this component(s), across different environments, before it is approved for deployment in production, for usage by end-users or customers.
In order to ensure that the product is tested efficiently, test teams need to have the testing infrastructure/environments and other testing components pre-configured well in advance of the code release to test teams.
Align With Production
Further, these pre-configured assets will have to align correctly with the production/live environments, with minimal distortions and variations. Many companies lack this process of efficiently managing the test environments, resulting in production bugs or failures, missed SLA’s and poor quality of end products.
It is very problematic if your software charges your customers twice in a transaction due to a bug in the credit card processor. And there is no excuse if it was because you didn’t configure the test environment to be like production during testing.
Track and Schedule Environment Usage
If you have test environments shared by multiple clients you need a way to keep them from bumping into each other. It is good, then, to have a centralized place to book and schedule test runs. You can use this scheduling to ensure test data is refreshed in time. It can help you ensure the environment is automatically in its configured state by the target date.
Directors use budgets to give teams constrained autonomy.
Make Everything Self-Service
Directors use budgets to give teams constrained autonomy. Within the confines of their budget, a team lead can purchase resources they need to get the job done. In the same way, we can make our published environment and scheduling self-service. This keeps us away from being a bottleneck, giving teams the ability to make the right bookings and configurations for their needs. After all, they have the most knowledge about what they need to do their job.
https://youtu.be/0Q-VT0QKnVI
Practice Makes Perfect
Although we have traditionally relegated test environments as second-class citizens, we have the tools to do better. With such tools, we can bring better practices and avoid the problems of misconfigured, manually-managed test environments. We can enter into an era where we treat test environments as code by controlling their configurations, aligning them to production, and publishing to the clients that need them. We can also embrace centralized scheduling to ensure our clients have the resources they need to test without a chain of hard-to-follow emails. With such practices, we will see untold cost savings and gains. Or—if you prefer to be told—you can use Plutora’s ROI calculator to get an idea.
Download our free eBook
Mastering Software Delivery with Value Stream Management
Discover how to optimize your software delivery with our comprehensive eBook on Value Stream Management (VSM). Learn how top organizations streamline pipelines, enhance quality, and accelerate delivery.