pressmaster - Fotolia
5 key ways to fulfill the role of QA in DevOps
DevOps teams want production-ready code, which means someone in this fast-moving pipeline needs to think like a user. Enter QA, with its toolkit of exploratory tests, design review and more.
When DevOps burst onto the scene, it threatened to absorb QA roles and redistribute testing among the development team members.
Now, however, it's dawned on many organizations that the role of QA in DevOps is an essential one. QA is about more than automating functional tests, and there are skills that a QA engineer has that an organization cannot automate away or reassign to developers. Put simply, if an organization wants to release quality software and perform sufficient testing in DevOps, QA must have a role.
An exceptional QA professional should possess knowledge in these five areas to contribute to a software development team:
- exploratory testing;
- test automation strategy;
- test development;
- identifying design oversights; and
- customer workflow understanding.
Let's discuss each of these aspects of the role of QA in DevOps, and what skills testers should have to fulfill them.
Exploratory testing
Patience, a comprehensive grasp of an app's full workflow, and an ability to test outside of a specific function -- these are the qualities needed to perform exploratory testing.
In exploratory testing, QA engineers hunt down defects; rooting them out without limitations. A developer can do exploratory testing, but that only occurs when they're not coding a high-priority feature or fixing a critical bug. Exploratory testing requires focus and a desire to search out defects. It's a time-consuming process to explore numerous testing scenarios in various ways.
While testers might focus on a specific functional workflow for exploratory testing, they shouldn't focus on a particular code section or function. In other words, a unit test won't cover it. Exploratory tests evaluate the function in the customer workflow, as well as a variety of actions across the application in multiple directions. These tests verify that the function works, but also that the application sends an error when it should and that the function doesn't fail just because a user deviates from the expected routine.
Exploratory testing is part art, part technical prowess, which is why it's a big aspect of the role of QA in DevOps release strategies. Testers should perform this assessment with attention to detail and enough creativity to find missing error conditions and requirements within a customer application workflow.
Test automation strategy
A brilliant developer usually can create integrated, automated unit tests for every new feature -- or possibly even defect fix -- that they code. They contribute to a reliable, trustworthy customer application.
However, it's the tester who best understands the full system and how it works from end-to-end by user role. Developers tend to code within specific functional areas or zones, not to comprehend the entire system, which is part of QA's role.
If a software development team creates automated tests in the code, a QA engineer should verify that the team has considered every test condition. The tester's knowledge of the full spectrum of the system enables them to spot conditions or integration scenarios of which the developer is unaware.
When it comes to QA in DevOps, testers must significantly shape the team's automation strategy. Whether to review scripted tests or formulate a plan for test development and execution, get QA involved from the beginning to ensure customer-focused, valid test scenarios. Don't simply automate tests for the sake of automating tests. Put the effort in for valid scenarios that find bugs that the team might otherwise release into production.
Test development
QA engineers design more than just unit tests; they cover the application's function across diverse scenarios, and vet the integration points within the application workflow.
QA engineers test error conditions and follow negative testing scenarios that aren't logical input flows. Testers understand the business objective of the application, but end users do not always read the manual or get training on the product. Most users train themselves as they perform their job, and they expect the application to be intuitive and responsive.
The QA professional's role is to think like a customer, to come up with variations in the user workflow scenario. The entry flows a team might not expect in an application can include different data formats, as well as different types of numeric, alpha and character entry. These inputs can expose flaws in the application, the APIs that transfer data and even the database.
Identifying oversights in design
Good testers can spot holes in product design. QA doesn't only assist the development team to identify, fix and verify defects -- i.e., tasks one might typically associate with testing in DevOps -- but also help prevent such mistakes before developers code them.
The product design team typically creates a workflow or use case document that provides a general understanding and layout of how a function flows within the application. This document likely includes a variety of roles with different permission levels. Additionally, most applications integrate with a database, APIs and other external applications or reporting engines.
Each of these connections is a lurking point of failure, and it's an essential QA skill to spot a missing link. A tester, for example, might notice a disconnect in the design plan between applications, because they know Application A cannot pass certain data values through the messaging system to Application B without meeting specified data conditions. It's not easy to spot these kinds of oversights in product design, but a skilled tester can prevent these defects from getting into the codebase, fulfilling one of the philosophical tenets of DevOps, where cross-functional collaboration improves product quality and work efficiency.
Customer workflow understanding
Automated testing tools are valuable, and they can check all known conditions described in a script. However, the team needs to anticipate how customers could implement a custom configuration, or use a functionality in an unplanned or unexpected manner.
Everyone on the software development team strives to understand customer needs. The tester, in particular, must comprehend both business and customer objectives, as well as the different practical uses of an application. Without this knowledge, it's difficult -- or impossible -- to test in a valuable, efficient manner.
The QA engineer creates manual or automated tests that walk through as many user workflow scenarios as possible. Here again, it's QA's role to be creative; they must get inside the heads of customer types to imagine sequences that the team both expects and does not. At the same time, QA engineers must find error conditions during testing that no one might expect. Often, the QA engineer will also identify missing requirements or security flaws. To achieve a satisfactory quality of testing in DevOps, the QA engineer's role is to represent the customer first and then work in the development team second.