Large manufacturing companies and the military — groups at the forefront of the computer revolution — pioneered the QA engineer job. So, it is no surprise that software development and quality engineering are closely linked.

The software quality assurance engineer (QA engineer) has become a critical component of the software development process.

But how has the role evolved?

From CMMI to agile

In the last 20 years, the manufacturing world has been moving toward “lean” methodologies (such as those pioneered at Toyota) that help to streamline product development processes. QA engineers previously worked with software developers who used Capability Maturity Model Integration (CMMI) and other “waterfall” development techniques, but in the past 15 years many have replaced them with “Agile” methods. Agile techniques and tools have taken the software development industry — and the role of the QA engineer — by storm since the writing of the Agile Manifesto in 2001.

Instead of having a big chunk of the development process labeled “testing,” where developers throw code over the fence and into the QA process, QA engineers now work closely with programmers to produce high-quality code quickly while incorporating feedback from customers along the way. The end result is that development teams and the rest of the IT organization have been gelling into “DevOps,” with the QA engineer a key part of that transformation.

From single to multiple platforms

Originally, applications were developed for only one or two platforms. But today’s applications will often have a server component with an application program interface (API) which is, in turn, used by mobile, web and desktop applications. Each of those client applications will likely span multiple platforms such as iOS and Android for mobile, or Internet Explorer, Chrome and Firefox for web applications. This means even a simple application can have five or more different platforms to be tested, requiring the QA engineer to bring specialized knowledge on all fronts. Is it any wonder that there is strong demand for quality assurance engineers in the current job market?

From manual to automated testing

When the Web first hit the scene it was hard to imagine that the non-interactive pages of the first version of HTML would evolve to become full-fledged word processors, spreadsheets or photo editors within two decades. Not only are these applications sophisticated, but they also have a lot of code written in languages like JavaScript, Python and Ruby. This creates added testing requirements for the QA engineer because there is no compilation step to check syntactical correctness.

To keep up, the QA engineer of today uses a wide range of automated tools such as LoadRunner and Selenium to put applications through their paces. Because some of these tools have unique purposes such as unit testing, load testing or regression testing, today’s QA engineers need specialized knowledge to use each of these tools, including the ability to write scripts.

Today’s skills requirements and salaries

In the past, QA engineers performed most or all of their work manually, which was doable since there were a limited number of devices actually needing to be tested. Modern QA engineers spend much of their time working with automated tools to cover the wide variety of devices that can be used. While mobile and web applications have provided end users with benefits such as the ability to use applications on the go or without complex configuration, they have significantly increased both the need for and the difficulty of the work that the QA engineer must do.

Skills:

  • QA engineer (manual): Manual QA engineers define the scope and objectives of various levels of QA testing. They also write and maintain test automation, publish test results, develop quality assurance standards, and define and track quality assurance metrics. Manual quality assurance engineers should be highly knowledgeable in quality assurance principles and procedures and able to define, write and maintain test automation. He or she must have effective communication skills to translate technical processes and analytic techniques to solve problems, and be familiar with the materials used to build a product.
  • QA engineer (automated): Automated quality assurance engineers develop and execute automated testing suites. They also lead quality assurance efforts within a software development group and work closely with development teams and stakeholders performing QA activities. These professionals lead QA efforts through defining, developing, executing and documenting automated test plans and cases. Employers look for extensive knowledge in at least one automated testing framework.

Salary:

  • Find the latest midpoint salary for a QA engineer (manual and automated) in the Robert Half Salary Guide, and adjust it for your location.