Ubuntu Pro, Canonical’s comprehensive subscription for secure open source and compliance, is now generally available.
By now, you're probably familiar with the agile way, and why it's a boon to engineering teams everywhere. Agile is practically the only way to keep pace with today's rapidly moving tech landscape; to deliver products to market in a way that prioritizes both speed and quality. And if you know about agile, you probably know about DevOps — or the practice of bringing that same agility to software development and operations teams.
DevOps involves continuous development, integration, deployment, and monitoring of the product throughout its entire life cycle, which is to say that it completely dissolves the silos and start-stop style of working that the waterfall approach is known for. It requires the entire engineering team — devs, QA, IT, and others — to work in conjunction in pursuit of a common goal: high quality, pushed to customers right on time.
DevOps can shape the way teams work in a powerful way. It requires total collaboration and efficiency, and that can mean a lot of changes and tweaks to the way certain teams currently work.
For example, how does the culture of DevOps change the behaviors and processes of the average QA team? Let's look at how QA Leads, QA Managers, and QA engineers themselves can leverage the DevOps mentality to increase the quality and fast-track the deployment of each release.
Continuous Integration as a Rule
In a high-functioning DevOps team, QA works with Development to push daily tests into the continuous integration (CI) system to speed the delivery time to market. To help expedite this, the QA team ensures that the tests require little (if any) manual intervention, and that test data is generated automatically and dynamically.
If CI is the first pillar that supports QA's role in a DevOps team, automation testing is the second. It helps eliminate the tedious manual work, free up a huge amount of time for everyone involved in the product life cycle, and ensure high build quality upon delivery.
QA also works with Ops teams to develop scripts used for backup, restoration, and deployment, allowing them to push code out when it's functioning properly, and roll it back if there's a serious issue.
Increasing Repeatability and Predictability
Ideally, the DevOps process allows for a new release every day, or even every hour. To achieve this, QA teams should aim to automate everything they can, with a goal of totally eliminating manual testing. This requires building strong UI/API frameworks for automation, so that key tests can basically run themselves.
This way, engineers are able to focus on reviewing the test results and snapping into action if anything's not quite right, instead of spending time manually inputting data and running the tests themselves. With automation, the goal is always consistency in repetition and utmost predictability.
Collaboration is Key
The best automated tests are the result of tight, seamless collaboration between the Dev and QA team. Developers lend a hand with their deep understanding of the code, helping to make automated tests more robust. Test engineers leverage their specific testing aptitudes to ensure that tests are run per business requirements.
In both teams, there is an explicit understanding that together they're contributing to a larger effort: a process where there is no need to trade quality for speedy delivery.
As you've learned, DevOps requires QA teams to play ball with Dev teams. The ability to continuously deliver at high speeds requires deep collaboration, careful test planning, full automation of test suites, and a strong push for repeatability and predictability.
Even if your QA team requires some uncomfortable process changes and shifts in the way they work with Dev, it's certainly worth it. And in the end, you'll have a unified, mission-driven DevOps team and a highly productive, collaborative culture.