SDETs, QAs, and DevOps, where do quality engineers fit into the mix?

team work

These days, you may have heard a lot of buzz around the term, QE. Let’s take a look at the different roles in development and testing related to quality, and then dive into what is a QE.

The role of a QA (quality assurance) is one that, as the name implies, ensures quality. I also found that QA can refer to quality analyst, which seems more appropriate to me than quality assurance (as it is impossible to fully ensure the quality). Anyway, that role is associated with the functional tester, who generally has no programming skills.

A few years ago the role of SDET (Software Development Engineer in Test) became popular and also, the agile-oriented role of DevOps also emerged, with a combined focus on development, operations and business.

Today, the new term “QE” (quality engineer) is what I feel represents GOOD software testers the best. This is because I see the QE role as the evolution of that of a tester into a more technical role, being involved in many areas of development. In the same way as the team’s DevOps, the quality engineer aids in the shift-left testing process.

The Unique Role of the QE

A QE is not a developer who focuses on testing (such as an SDET), nor is it someone who focuses on development and operations (such as a DevOps), nor is it someone who ensures quality (like a QA). A quality engineer is someone who applies engineering to different parts of the software development process for the benefit of quality.

Among other things, a QE has knowledge of operations (infrastructure, servers, platforms) which helps for carrying out security testing, performance testing, integrating checks in a CI/CD scheme, etc. On the other hand, it is important that a QE be able to manage test automation at different levels; from the API level, the UI level, or at the protocol level. And it is also essential that a QE have a certain sensitivity for quality, in the way that a good tester does. In my point of view, it’s also essential that a tester that is dedicated to performance tests also know Selenium, as well as how to define a functional testing strategy or define an acceptance criterion of a user history. A good quality engineer could also be aptly named a full stack tester.

What Does a QE Do That Makes Them So Relevant Today?

A QE is so important today because the role itself is driven by agile methodologies and associated with the idea of shift left testing, since the tester has to be involved in early development tasks, even when there is not yet a complete product.

And, despite the rumours, advances in technology won’t render the role of tester and quality engineer obsolete. It’s clear that a tester will be better prepared to work with today’s teams if he or she is able to review code, analyze components, automate tests, handle Jenkins and similar tools, as well as containerized environments like Docker. Thus, while the tester role is not disappearing, it’s clear that testers need to have more technical skill than ever before.

Agile development also influences this shift in the role of a tester because teams are usually composed of no more than nine members (aka two-pizza-teams), and to be self-sufficient, fewer people need to concentrate more knowledge and responsibility. Therefore, perhaps some companies will have specialized teams or even outsource some tasks, but the success of that outsourcing will be greater if there is someone on the team who can knowingly manage the delegated tasks. Read our whitepaper, “10 Mistakes Companies Make When Outsourcing Software Testing” for more insights on how to make this partnership work.

Activities of a QE

What is a quality engineer infographic

Here’s my list of the main activities that may fall under the responsibility of a QE (this list could be longer, depending on the product, company size, context, etc.):

  • Define a quality plan and strategy: Determine what to do and what not to do, according to the associated objectives and risks, given the context. How to test, with what tools, according to budget constraints, etc.
  • Code revisions: Understand the code and suggest improvements, use SonarQube, and be able to make a plan of action based on a code analysis and technical debt report.
  • Functional tests: A QE should be able to test a system and search for bugs with a highly critical eye. A QE must know the many techniques for designing test cases and should handle exploratory testing with confidence.
  • Report incidents: Within the objectives of testing is not only to find bugs but to get them resolved. For this, having the skills to properly report them for the sake of collaborating with developers is critical.
  • Automate functional tests at different levels: Perhaps we would not include unit tests here since these (at least for me) are for the developer, but a QE could perform periodic reviews of unit tests and suggest new test cases, analyze the coverage, and decide if the tests are at the right level. A QE automates at the API level (REST, SOAP) and at the UI level with tools like Selenium. The QE should prepare the tests with a BDD (Behavior Driven Development) approach using Cucumber or a similar tool. Lastly, a QE should be able to define an automated test strategy, that is ideally based on the Cohn pyramid.
  • Test performance: This implies being able to automate at the protocol level as well as analyzing monitoring data of different components, looking for bottlenecks and opportunities for improvement.
  • Test security: Use different tools and techniques for access control, ethical hacking, etc. Like performance testing, this requires very specific knowledge of the technologies and platforms used.
  • Understand and handle the git flow: It is fundamental that tests be aligned with development, and a very relevant point of contact between the two is the way in which code versions, different branches, and the different environments are handled. The test code should be treated as part of the system code, using the same tools as a developer and the same version management methodology.
  • Utilize continuous integration environments: All checks that are automated should be kept in a CI/CD testing environment such as Jenkins or something similar, in order to run them frequently. The QE should handle all the test artefacts, and dare I say it, the QE just might be a more heavy Jenkins user than the developers themselves!
  • Speak and think in terms of the business: I mentioned many technical aspects above, but what makes an exceptional QE is often in his or her understanding of the global, business-oriented vision. It should not be forgotten that all the quality work done is for the business to thrive, so this vision is as important as the technical know-how.

Surely, there are several more activities we could add to this list. If any others occur to you, let me know in the comments!

Wrapping it All Up

I hope this post has made it more clear for you about what is a QE. I’ve taken a liking to the term because I feel it encapsulates all of what I have been tapped to do while working at Abstracta and what all of our engineers do on a daily basis. While I started in computer science as a performance tester in 2005, I’ve participated in different roles in projects of functional testing, automated testing, security, usability, code review, and more and more lately in projects in which we support the building of a Continuous Integration/Continuous Delivery scheme. All of our testers, over time, project after project, become more and more well-rounded, branching out into different areas of quality.

I believe, from my humble opinion, that this is what every tester should strive for, since QEs are highly sought after in the most demanding markets, and will always be valued more (over a traditional QA). Whoever has the most complete vision of quality, even though their tasks may have been initially restricted to a certain area, will be more valuable to any organization.

A phrase that I find highly relevant that struck a chord with me is by Oscar Mullín, from his talk in Agiles2015 in Montevideo, Uruguay:

At Abstracta, we have over a decade of serving some of the world’s biggest brands like Shutterfly, Verifone and BBVA bringing dedicated QEs to the table from a cost-effective, nearshore center. Are you in need of an outstanding, flexible QE? Contact us today!

If you are looking to become a better QE, check out Abstracta Academy.

Thanks for reading! What are your thoughts on what is a QE, exactly?


Recommended for You

Not Convinced Yet About Shift-Left Testing?
[Infographic]: What You Should Know From the State of Software Testing Report 2017