The DevOps Tightrope: Balancing Shifting Left and Right

essidsolutions

While shifting left is a crucial aspect of continuous testing for the DevOps loop, many companies ignore the importance of shifting right. James Isaacs, president of Cyara, discusses why and how companies can and should shift left and shift right without getting caught in the middle.

Companies that aspire to optimize DevOps processes are shifting application and software testing left – earlier in the software production and DevOps lifecycle to identify and rectify as early as possible any design issues that may rear their heads. While shifting left is a crucial aspect of continuous testing for the DevOps loop, many companies ignore the importance of also shifting testing right.

A common pitfall of getting “caught in the middle” is failing to catch any bugs early enough in development to prevent code patches in deployment testing or even going so far as failing to consider deployment testing in the development phase at all. 

Learn More: Security and Speed, Two Opposing Priorities Can Co-Exist in DevOps

A Strategy of Continuous Testing & Shifting Left

Continuous testing, put simply, is the strategy of performing software tests regularly throughout the development cycle. This enables DevOps teams to maintain a consistent and continuous influx of data to inform them about potential risks or bugs that could negatively affect the software. 

In the same way that a single spoiled ingredient can ruin the best recipe, by catching bugs earlier in the development cycle – as early as initial product conception and design – DevOps teams can address issues as they are found rather than sifting through a cacophony of corrections that need to be made later in the development lifecycle. This DevOps testing strategy of testing earlier in the development process is referred to as “shift-left testing.”

Additionally, by testing earlier in the development cycle, DevOps teams can cohesively work together to reduce the number of bugs that would otherwise only be found during the later phases of the software lifecycle. This significantly lowers the cost of bug-fixes compared to retro-actively fixing bugs in late-stage software development or even post-production during deployment.

Shifting left also enables developers to avoid “context switching,” a back-and-forth development pattern of switching between the feature a developer is currently working on and an older feature that’s coming back to be reworked and tested again. 

Avoiding context switching allows developers to focus their attention entirely on the specific aspect of the software application they are currently assigned. Otherwise, this type of stop-and-go pressure on developers can inadvertently cause them to try and cut corners to avoid shifting deadlines or milestones and maintain project trajectory – causing more harm than good in the long run if the end-user is subjected to sub-par experience, service, or capabilities.

Learn More: Role of DevOps and Automation in the Software-Defined Network

Killing Bugs Before They Hatch – Shifting Left

While the benefits of shifting testing left are fairly intuitive – catching bugs earlier, maintaining a

cohesive and streamlined development cycle, and reducing the costs of reactive bug fixes late in the development cycle – the benefits of shifting right are not as well understood. While shifting left was a crucial area of focus for most companies included in the recent Forrester Wave for Continuous Functional Test Automation (CFTA), the advantages of shifting right should also be a crucial area of focus for developers. 

Shifting right involves testing applications later in the development cycle after production. Many benefits of shifting testing left are geared specifically towards catching bugs before late-stage development, so why should DevOps teams consider shifting right instead?

The reality is that shift-right and shift-left testing aren’t mutually exclusive. The best DevOps companies recognize that shifting right is an additive strategy that goes hand in hand with shifting left. Arguably, shifting right is even more important to success than shifting left. Continuous testing is exactly that: an ongoing testing strategy meant to inform DevOps teams about the pitfalls of their software design throughout the software lifecycle. The software lifecycle doesn’t end with the completion of coding.

Oftentimes, application testing environments and development environments differ in structure and technology. If applications are deployed in different environments than those in which they are tested, it’s impossible to predict how those applications will perform. 

Additionally, it’s an unfortunate fact of life that things break – even software. Even the most rigorously tested applications encounter bugs and issues throughout their lifetime. Unless organizations are continuously testing in production, they will not be aware of any application issues until their customers report them, resulting in a poor customer experience. 

Shift-right testing also provides a “feedback loop” for software developers, informing them of changes that must be made to the application post-production. By identifying and cataloging application changes and errors post-production, developers can easily identify any mistakes made in the development phase. The feedback loop ultimately enables developers to take past changes into consideration when developing new applications.

Shift-right testing is critical to ensuring that an application will function properly regardless of circumstance or environment. For example, different organizations leverage different providers for their cloud-hosting services for test environments vs. production environments. Can you be 100% positive that your application works the same in any cloud environment without testing it? 

Is it worth the risk of a negative end-user experience? Continuing to test all aspects of software systems beyond the end of the development phase– including integrations, features, and flows – and into the production, enables developers to close the loop on their development cycle. This results in more efficiently produced and more effective results. By successfully marrying shift-left testing with shift-right testing strategies, DevOps teams can successfully achieve fully continuous testing capabilities and ensure the most efficient software development process possible.

Did you enjoy reading this article? Let us know on LinkedInOpens a new window , TwitterOpens a new window , or FacebookOpens a new window . We would love to hear from you!