DevOps Toolchain

The DevOps Toolchain refers to the combination of tools and technologies used to progress code through the full life-cycle from development to production.

How effectively this interlinked chain is integrated together is key to the velocity of throughput, as manual hand-overs between steps can introduce significant delays and potential for error.

As one of a plethora of examples Applause announced a bi-directional integration capability so that application owners will be able to use a Jira project management application to create a ticket that requests a specific piece of code be tested or be sent to a tester that is a member of uTest, an online community of professional testers that Applause oversees.

In other words it’s essential that testing tools don’t form yet another isolated silo, that they don’t exist on their own as a standalone tool but rather as a component part of an overall high performance value stream.

TestOps

In his DevOps.com article Frank Ohlhorst says ‘App Testing Must Evolve Within the DevOps Pipeline’. He describes the importance of not treating testing as an isolated silo but rather an integral part of the DevOps workflow, and how this can present a major culture change for testing organisations, highlighting how there is often a disconnect between the cultures of QA teams and development teams, requiring improved methods of collaboration.

In his DevOps.com article, Shamim Ahmed describes this as ‘TestOps’, explaining the practices used by Netflix such as release validation, chaos, canary and CX testing, and production monitoring. He makes the key points that goals such as CX (Customer Experience) testing are hard and slow to meaningfully achieve early in the cycle and so are best performed in live environments. By shifting them right organisations are able to deploy at faster rates.

Continuous Testing

Central to this is Continuous Testing, which Guru99 define in their tutorial as:

“Continuous Testing in DevOps is a software testing type that involves testing the software at every stage of the software development life cycle. The goal of Continuous testing is evaluating the quality of software at every step of the Continuous Delivery Process by testing early and testing often.”

They describe the transition as moving from a hand off-centric approach, with a distinct sequence of isolated events including requirements gathering, coding and testing, to as the name suggests, instead of adopting a process of testing early, testing often, testing everywhere, and automating, using tools like Selenium, Jenkins and Travis.

The experts at SoftwareTestingHelp.com offer this tutorial, which explores how individual tools like Selenium can be integrated into an overall DevOps environment to achieve Continuous Testing.

They provide a high-level introduction that sets the scene for the challenge of how DevOps teams typically use a large array of many different tools, and then by focusing on the specific goal of ‘DevSecOps’, they walk through a detailed usage guide that showcases key features and explains how they support the Continuous Testing flow.

On their site SmartBear zooms in on the specific function of UI / browser testing within a context of Continuous Testing, highlighting challenges such as browsers like Google Chrome having a single user base with up to 10 different versions, each presenting multiple app testing issues. Their browser testing service offers various tools for addressing this challenge, through the use of the Selenium tool via different delivery models like a Cloud hosting service.

Continuous Testing Maturity

This InfoQ article provides a thorough review of the maturity journey an organization can go through to advance the sophistication of these CD practices. It defines five main pillars of Culture and Organization, Design and Architecture, Build and Deploy, Test and Verification and Information and Reporting.

In summary it is a process of better integrating previously siloed teams and development tools, automating repetitive coding and deployment functions and forming teams into a self-organizing structure around process flow and product ownership, rather than hierarchical departments.

It defines testing as one of the main pillars, and increasing maturity sees this evolve from being a final, isolated step in a sequence to being embedded directly into and throughout the process of software development. It also matures from manual to automated testing, with the most advanced Expert level also testing the business outcomes not just functional specification.


Back to top button