QA Engineering Roles: Skills, Tools, and Responsibilities in a Testing Team
Depending on team size, structure, and organization’s specific needs, the role of a software tester is viewed and utilized differently.
Most often, software testing job titles are designated QA (Quality Assurance) or Tester. They may also include the following specifications:
- technology: Selenium Tester;
- business domain: Healthcare QA;
- subject of testing: Database Tester, API Tester;
- testing type: Performance Tester, Security tester;
- expertise: Senior QA Testing Specialist.
Job title delineation has a practical use for a large-scale team to indicate co-workers’ level of expertise and give an idea of their competence.
Most popular QA job titles in 2018, Source: STATE OF TESTING REPORT 2018 by PractiTest
In 2019 Testers and Test Analysts, as well as Test Architects gained popularity, Source: STATE OF TESTING REPORT 2019 by PractiTest
As we can see, software testing roles appear in a wide range of job titles. Some of them execute test cases without using any automation tools. Others, having the knowledge of programming languages, write autotests and create automation frameworks or other testing tools for the team.
Google, for example, enables consistent quality by blurring the lines between testers and developers. They expect developers to test their piece of code, while testers provide them with the necessary infrastructure. The testing market is gradually shifting towards a unified role of a testing professional that is able to automate, develop testing tools, and even write production code when necessary.
But let’s return to today’s realities. Looking at the map of testing professionals by PractiTest, we can notice a range of titles that dominate year after year. Among them, we identify six roles that most fully represent quality assurance expertise. They are:
Software testing roles and their core functions
In this article, we highlight the skills and responsibilities for each role. We also describe the instruments they most often use. But these tools aren’t limited to a single position. Others can also leverage them at some point. Now, prior to diving in, note that due to inconsistency that spans the industry, job descriptions may vary depending on the market and the company. So we also included alternative interpretations when relevant.
Software Test Engineer (STE): the key quality assurance professional
Software Test Engineer is an umbrella term for many specialists who are versed in different testing approaches including automation, exploratory testing, performance testing, etc. But here as we identify the six roles, by STE we mean a testing specialist who minimally relies on automation. Despite having a strong tendency towards automation testing today, some test scenarios can turn out to be time- and cost-consuming or they are just not possible to automate, like real user interactions.
Test Engineers find defects in a system and make sure that test requirements match test objectives. After a test plan with a detailed understanding of the testing workflow is completed (including test strategy, environment requirements, test schedule, functions to be tested, resources and responsibilities, deliverables, exit criteria, tools, etc.), testers write test cases — scripts describing an input action and an expected response.
While running a test, STEs compare the actual result with the ones outlined in the test case, logging a defect if they don’t match. The found defects are communicated to other departments or other team members in test execution status reports or via any bug tracking and management tool, e.g., Jira.
Life cycle of the testing process, Image credit: Abhishek Desai
Once the engineering team reports that the defect is resolved, an STE must verify whether the problem is now fixed. Their workflow is managed in daily status reports that monitor the progress of the project and each tester involved. The status reports take different forms: an email, a document, or a live meeting. You can read more about the artifacts that optimize software testing process in our article.
QA Testing Status Report. Image source: Software Testing Help
- analyze requirements and prepare a query list. If requirements are incomplete, they need to ask meaningful questions that will yield more information and help perform testing effectively;
- write and execute test cases to find system bugs like UI and usability issues, etc.;
- conduct exploratory testing;
- check consistency across devices, browsers, and operating systems;
- provide inputs on high-level test scenarios, challenges, risks, resources, test estimates, etc., during test planning meetings;
- in some cases, STEs can also cover test automation tasks.
- deep understanding of software testing, its main concepts, and processes: the whole bug life cycle; different testing levels, methods, and types; test estimation techniques;
Bug life cycle. Source: ToolsQA
- ability to work in an Agile environment;
- critical thinking and analytical skills to examine bug reports and prioritize necessary tests, what information to include in the daily status reports, prioritize and estimate task execution;
- good communication and teamwork skills to interact with project team members, clients, and stakeholders as well as work closely with the dev team – from reproducing the reported issue and emphasizing the fix for critical bugs to understanding how the bug has been fixed;
- programming skills are always a plus including coding, basic SQL knowledge to extract data for tests, XML, general web development skills, and web services.
STE tools. In addition to using different desktop and mobile operating systems, browsers and web proxies for cross-browser testing, simulators and emulators, testers use the following tools:
- quality management tools (Micro Focus Quality Center, TestDirector, Test Manager, TestLink, SpiraTest, TestRail, HP-ALM (QC)) to organize and manage all phases of the software testing process including planning, running tests, and tracking defects, generating and storing test reports, and interlinking them with the release requirements;
- defect tracking tools (BugZilla, Mantis, IBM Rational ClearQuest) to track the defects found in the application and generate bug reports to communicate them to the dev team;
- MS Excel or Test Studio to write large sets of test cases and later import them into TMTs;
- project management software (Jira, Redmine, YouTrack, and Backlog);
- SQL clients to connect to the database;
- API testing tools (Postman, SoapUI, Katalon) for automated checks. They offer predefined snippets to automate API testing without the need to write code to test the API;
- IDEs for writing code (VSCode, Visual Studio, IntelliJ IDEA);
Other common job titles include QA Engineer and Manual QA Engineer. These titles remain in use, although some testing consultants today are actively combatting the usage of “manual” and “QA” in reference to test engineers: “Testers test but they don’t, in fact, can’t assure quality. They run experiments to validate conformance with requirements, analyze risks, explore the application for the response to behaviors that are not usually documented, and try to discover the unknown in the application,” comments Brijesh Deb, a Test Manager. While Michael Bolton, a software testing consultant, is sure that calling testers “manuals” is harming the craft.
Next, we’ll talk about the Test Analyst. Small teams can assign an experienced STE to perform this role. The US market often equates the Test Analyst role with an STE, since the testing expertise is currently drifting towards merging all QA roles into a single one. However, we are still going to discuss the Test Analyst role separately as there are several differences between these two specialists.
Test Analyst: business-domain-driven testing expert
Test Analyst is one of the controversial roles in an industry that actively undergoes changes. In many companies, especially in the US, a Test Analyst’s responsibilities are covered by senior software test engineers. But since you can still encounter this title, let’s give it a closer look.
This role is less about technical skills and more about the understanding of business problems. Based on formal requirements, they determine what to test, prioritize test cases, monitor the test coverage, and evaluate the outcome. In addition, they can leverage business data. Learning about their users’ behavior, patterns, and most and least used features, testers are able to highlight the risky areas as well as indicate potential bugs.
When a Test Analyst gets involved in SDLC, the duration and results of that involvement greatly vary. In Agile projects that are less formalized, a Test Analyst’s role may not be well-defined but is rather performed by the whole team. In hybrid models, a Test Analyst is mostly focused on the planning and design aspects.
Test Analyst responsibilities. According to ISTQB, a Test Analyst’s work grounds on four pillars: test analysis, test design, test implementation, and test execution. They convert into the following responsibilities:
- accept and clarify testing requirements;
- identify and prioritize test conditions addressing product risks and features to be tested;
- define specific tests that must be designed for that area;
- design test cases and sets of test cases to cover test conditions;
- identify necessary test data to support test conditions and test cases;
- schedule test executions in order;
- develop test procedures and other quality documentation: test plans, test cases, and status reports for management;
- execute or delegate exploratory, automated, and regression tests;
- analyze actual results against the expected ones;
- participate in the technical review process contributing behavioral viewpoint.
Components of Test Analyst role,Source: ISTQB
Test Analyst skills. Specific skill requirements may vary depending on the type of testing being conducted. Generally, they include:
- test design techniques;
- defect management process;
- knowledge of the business domain;
- experience in a variety of testing efforts;
- understanding of common software failures and faults;
- knowledge of the system or application-under-test;
- understanding of the test automation process.
Test Analyst tools: Adding to the mentioned testing tools, Test Analyst leverages:
- test design tools like IBM Rational Quality Manager, QACoverage, Hexawise;
- test data preparation tools;
- automated test execution tools.
Other titles of Test Analyst: Today, when testing is shifting towards the holistic quality process, the Test Analyst’s role is becoming an integral part of every tester’s job.
Test Automation Engineer: tester with coding skills focused on automation
Automated testing is used to run repetitive and regression tests that require constant iterations due to implementing frequent code changes. Automation testing is also preferred for load tests, helping to verify a system’s performance under load conditions. Initially, automated tests take considerable investments, but it pays off when their fast execution speeds up the testing process. Besides, they are reusable and easy to run on different machines.
The key function automation QA Engineers perform is writing scripts and creating automation environments for repeated tests. Using different automation tools, they design, test, and deploy effective test automation solutions. Their goal is to automate as much of the testing effort as possible with a minimum set of code. This way they optimize the testing that otherwise would consume a large percentage of test resources.
Test Automation Engineers use testing frameworks – sets of practices and tools – to create and design test cases more efficiently. An organized framework reduces maintenance costs and testing efforts while making test automation code reusable, maintainable, and stable.
Life cycle of the automated testing process. Source: Kellton Tech
Test Automation Engineer responsibilities:
- write, design, and execute automated tests by creating scripts that run testing functions automatically;
- maximize test coverage for the most critical features of the system;
- determine the priority for test scenarios and create execution plans to implement these scenarios;
- write documentation for automated processes including test plans, test procedures, and test cases;
- build test automation frameworks;
- log and document bugs in the tracking system;
- set up Continuous Integration.
Besides writing automated tests, Test Automation Engineers can still do exploratory testing when they need to understand how functionality manifests itself to the customer.
Test Automation Engineer skills. A Test Automation Engineer has an STE’s skills but they are automation-oriented. In addition, to that:
- common computer languages required for different automation testing technologies: Python, Java, Ruby, С++, Perl, PHP, C#, etc.;
- platform specifics (a web application or mobile app).
Test Automation Engineer tools. Adding to the tools of a Test Engineer, an automation tester uses the following:
(If you are considering having automated testing in your project, our article on the comparison of automated testing tools should be of use to you.)
- ready-made automation frameworks instead of building elaborate automation frameworks from scratch: Serenity BDD, a Java-based framework, or developer-centric Cypress, etc.;
- mobile automation testing tools for Android, iOS, and cross-platform ones;
- API testing tools that require strong coding skills to create tests: REST Assured, RestSharp, jMeter, etc.;
- Continuous Integration Tools (Jenkins, TeamCity, Bamboo, etc.)
Other common titles of Test Automation Engineer: Technical Tester, Test Automation Development Engineer. A Test Automation Engineer can be either a cross-platform specialist or a platform-specific one. In the latter case, their title may look like a Mobile Test Automation Engineer.
Software Development Engineer in Test (SDET): Jack of both trades
Invented by global corporations like Microsoft and Yahoo, a Software Development Engineer in Test was formed at the intersection of testing and development skills. While a developer writes the product code, the SDET ensures its proper functioning with the test code and writes tools code to help write, run, and maintain the product code and test code.
SDET’s responsibilities. They must do everything an automation tester does, plus build testing tools. Below, we’ve listed the key distinct tasks that an SDET is to perform:
- understand, analyze, and develop complex test data sets;
- build different test scenarios and acceptance tests;
- design and implement automated tests and test environment;
- develop test infrastructure tools for the team on multiple application platforms (web, mobile, and desktop);
- perform low-level testing like unit testing and module testing;
- collaborate with developers, program management, and design teams on technical implementation and user scenarios;
- work with deployment teams to resolve issues in the system.
SDET skills. An SDET is a Test Automation Engineer of a higher technical level. So, hence he or she is required to have:
- strong coding, design, and analytic skills;
- proficiency in developing automated test systems;
- strong SQL/DB skills;
- experience with common data structures, algorithms, and distributed systems;
- knowledge of backend services and integrations;
- microservice architecture that modern back end is often built upon with its moving parts, dependencies, and interactions;
- understanding of the cloud infrastructure environment.
Technical skills expected from SDET, Source: Guru99
SDET tools: Generally, an SDET uses the same tools as Test Automation Engineers that we described above.
Other titles of SDET. The distinction between Test Automation Engineer and SDET may be confusing at first glance. In a classic version, an SDET possesses a more distinct quality mindset and works with the project’s infrastructure designing test automation tools. Meanwhile, a Test Automation Engineer is focused primarily on coding and then quality. He or she automates test cases using off the shelf tools. Still, companies aren’t very strict with the role description.
Test Architect: highest testing technical authority
Like the Software Architect, this senior QA specialist focuses on developing the whole testing infrastructure. Some experts consider Test Architect an overly fancy title and instead describe it as a senior test role with wide strategic scope. Others, like Siemens, disagree with such interpretation. They believe that today’s systems that are growing in size, volume, complexity, and unpredictability, require adequate, sustainable, and well-designed test architecture. And that’s what a test architect is responsible for.
Test Architect responsibilities:
- design test architectures (test automation frameworks, code libraries, etc.) for the team to use across the platforms;
- identify tools and technologies for implementation that align with business goals, present infrastructure, and the team skill-set;
- manage test data;
- define strategic direction for testing by providing guidance, feedback, and suggestions to improve quality practices across an entire engineering team;
- provide technical mentoring and training;
- monitor the effectiveness of the testing function and bring about improvements through insights gained via analysis at all stages of the SDLC.
Again, there is no universal definition of a “test architect” in the community. Some Test Architects are in charge of a particular technology for their group, while others like Lee Hawkins, a Test Architect at Quest Software, consult on how to improve test effectiveness: “My role is basically about working out the ways that we should do testing across the organization, at a very high level. That’s why I go to conferences, try to meet people across the industry, to work out what good stuff is going on, and then try to bring that in the organization to help us do better.”
Still, a Test Architect is quite a rare position, justifiable mostly for large, hierarchical organizations. In small and mid-size companies, these tasks rest on the Test Manager’s shoulders.
Test Architect skills:
- in-depth knowledge of the current industry-wide testing techniques, tools, and methodologies;
- project management skills including effective communication between the team and client – close collaboration with other roles and stakeholders;
- experienced software analysis and design;
- solid background in software quality and testing;
- strong understanding of functional and non-functional testing;
- profound coding and test automation skills.
Test Architect competencies vs Test Manager ones as defined by Siemens, Source: Peter Zimmerer
Test Architect tools:
- test automation frameworks like Protractor, Selenium, TestNG, or JUnit;
- continuous integration (CI) tools like Jenkins;
- source code management tools like GIT or Team Foundation Server;
- Application Lifecycle Management tools.
Other titles of Test Architect. Oftentimes job descriptions are combined, so titles such as Head of Quality, Director of QA, or Test Manager can reflect the Test Architect’s job.
Test Manager: a Project Manager in testing
Here, we’ll talk about a Test Manager as a management position within the QA team which is most common for outsourcing and custom software development companies. Considering the tendency for cross-functional teams, the Test Manager as a role can be handed over to the Team Lead, Squad Leader, or even Project Manager for small teams. Anyway, we can still see demand for Test Managers even in such companies as Google.
Test Manager responsibilities:
- prepare test strategy applying industry-accepted practices;
- set metrics to measure the quality of delivery;
- plan and control the testing process: define the task lists for subordinates, schedule testing activities, calculate the testing budget, estimate test efforts;
- keep track of each tester’s performance: checking what kind of defects he or she is able to uncover and where there’s a tendency to miss out on bugs;
- pick candidates for QA positions and supervise them afterward;
- represent QA team at cross-department meetings and update the customer on the progress of testing activities.
Requirements traceability matrix that Test Manager uses to check if the current project requirements are met and all test cases are covered, Source: Opencodez
In addition to handling day-to-day duties, Test Managers have a wide range of job responsibilities, as they have to take any action needed to meet the quality goals.
Test Manager’s time is divided between responsibilities in a project. Source: Software Testing Help
Test manager skills:
- experience in automation testing to define which cases will benefit from this approach and where it’s better to test without spending time on automating;
- wide knowledge of testing approaches;
- profound understanding of the business area and the client’s requirements to determine a test strategy, test goals, and objectives;
- good project planning, task, and people coordination.
Test manager tools:
- modern software tools and infrastructure;
- proficient with the tools used for the project;
- project management tools (Jira, Redmine, YouTrack, Backlog, etc.) to introduce methods to the teams, train juniors, monitor progress and quality throughout the development process.
Other common titles of a Test manager: Test Lead, QA Lead. Once again, sometimes you can come across a test manager job description that also includes a Test Architect’s responsibilities.
The Role of Test Engineers in the Software Development Life Cycle
By viewing SDLC from a tester’s perspective, we can track how the relationship between testers and other departments have evolved from Waterfall to Agile, and then to DevOps.
In the Waterfall environment, QA engineers are limited to their domain and separated from other areas of SDLC. On getting something to test from developers, the QA team plans the testing on their own. Although they interact with other roles, they still function as an independent branch of SDLC.
Testing domain in Waterfall model, Image Source: “A Practical Guide to Testing in DevOps” by Katrina Clokie
In the Agile approach, the quality of the product is considered a collective responsibility. Consequently, other roles start getting involved in testing, collaborating as one big team: the testing ideas are being shared, developers do more unit testing, the business domain is now also linked to the QA processes.
In Scrum, during the sprint, developers and QA specialists collaborate on the same tasks to avoid surprises and errors.
Testing domain in Agile, Image Source: “A Practical Guide to Testing in DevOps” by Katrina Clokie
However, Agile still has its limits as the development ends when the product is passed over to operations to be released into production. Although Agile shapes a cross-platform team, it lacks operations team members, support, etc.
Finally, DevOps goes further by merging development with operations into an infinite cycle that has testing at each stage. Conducted continuously and naturally, testing is part of every other task in the project.
The concept of continuous testing in DevOps means that the execution of automated tests is inseparable from the software delivery pipeline, which aims at instant feedback on the business risks associated with a software release. Because of continuous testing, the role of today’s tester is very much extended to deal with complex and accelerated product development and delivery.
Testing in DevOps. Image credit: Dan Ashby
The outside roles involved in DevOps testing may be the analytics team, infrastructure people, monitoring and support – all different types of roles within the operations domain. Here lies mutual benefit since not only do these people contribute value to testing, but the testing team provides them with the information for their jobs.
Testing domain in DevOps, Image Source: “A Practical Guide to Testing in DevOps” by Katrina Clokie
Full-stack Test Engineer: a Tester of the Future
With current development models – Agile and DevOps – the discipline of testing expands to influence other teams working on the same project. The role of a tester continues evolving, giving test engineers more power within a company.
Modern testers not only must work with the code before it goes to production, but also consider prevention and mitigation of product defects across the entire software development cycle. This means higher responsibility in terms of introducing acceptance criteria and testing approaches in engineering teams.
Core skills of the modern Test Engineer, Source: Redgate
By taking charge of all aspects of product quality, such as functionality, usability, performance, security, globalization, etc., and combining different strategies and technologies to test an app, testers can surely be called full-stack test engineers.
They have a rich combination of domain knowledge, technical skills, and testing expertise, that allows them to match modern demands of fast delivery. Therefore, every tester should pursue the path of a full-stack test engineer, who is involved in the project development lifecycle right from the start and, consequently, has a greater impact on the product, which results in a higher level of quality than ever before.