QA Engineering Roles: Skills, Tools, and Responsibilities in a Testing Team

Written by AltexSoft | Published 2019/02/05
Tech Story Tags: software-development | qa | quality-assurance | devops | qa-engineering-roles

TLDRvia the TL;DR App

The quality assurance engineer is vital to every tech product release. Depending on team size and structure, QA is viewed and utilized differently, but tailored to specific organization needs.

Most often, software testing job titles are designated QA (Quality Assurance) or Tester. They may also include the following specifications:

  • technology: Selenium Tester
  • domain: Healthcare QA
  • expertise: Senior QA Testing Specialist

Other variations of QA-related job offerings are QA analyst, QA engineer, automation engineer, test automation developer, etc. However, this array of unique software testing roles ends up having similar responsibilities. Different titles may actually have a practical use for a large-scale team to indicate co-workers’ experience and give a rough idea of their competence.

Most popular QA job titles according to the STATE OF TESTING REPORT 2018 by PractiTest

The ambiguity and abundance of QA job titles may cause confusion about how exactly testers fit into the larger picture of software development. In this article, we highlight three main roles in software testing and elaborate on the skills and responsibilities specific to each of them:

  • Manual QA Engineer
  • Automation QA Engineer
  • QA Lead

For the record, we previously published an article describing software developer roles in terms of their seniority.

Main QA Engineering roles: their core function, skills, responsibilities, and the tools they use

Manual Testing vs Automation Testing

Despite having a strong tendency towards automation testing today, some test scenarios are either more time- and cost-efficient to run manually, or they are just not possible to automate, like real user interactions. Besides that, manual testing is used as an initial step in developing automated tests.

When there’s a shortage of time, manual testing is a go-to option as it’s less about planning and more about test execution. Relying on human skills is better for usability testing. An app’s user-friendliness can be properly evaluated only by human observation — a manual test helps find UI and usability issues, which automation tests are unable to identify.

QA Engineers apply automated testing to run repetitive and regression tests after implementing frequent code changes. Automation testing is also preferred for load tests, helping to verify a system’s performance under load conditions. Although initially expenses, automation testing is much faster and less prone to errors than manual testing. Moreover, automated tests are reusable and easy to run on different machines.

In case you’re interested in a more grounded analysis of manual testing vs automated testing, we have an article juxtaposing these approaches.

Manual QA Engineer

As mentioned earlier, manual QA specialists find bugs in a system by relying on human observation. They need to make sure that test requirements match test objectives. After a QA Lead develops a test plan with a detailed understanding of the testing workflow (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, QA engineers 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 in test execution status reports or via any bug tracking and management tool, e.g., Jira.

Life cycle of the manual testing process. Image credit: Abhishek Desai

Once the engineering team reports that the defect is resolved, a QA engineer must verify whether the problem is now fixed. QA engineer’s 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

Other common titles of Manual QA: manual tester, software test engineer, QA analyst.

In manual software testing, there are three seniority levels: junior, middle, and senior QA engineers. We’ll analyze the role of manual QAs in terms of their skills, responsibilities, and the various tools they handle, considering seniority levels as well.

Manual QA engineer skills

Basic knowledge of software testing. To enter the software testing field, juniors should have a proper understanding of the main concepts and processes: the whole bug life cycle; different testing levels, methods, and types; test estimation techniques.

Bug life cycle. Source: ToolsQA

However, in order to become mid-level QA engineers, testers should already have strong knowledge of software testing processes, deep understanding of development life cycle, and practical experience with different testing types.

Fast learning. As projects usually allocate the least time to testing, QA engineers need to learn fast to be able to simplify the task and execute the assigned work on time. It’s necessary to quickly understand the requirements and the purpose of the software, considering the recent changes.

Ability to meet deadlines. QA engineers should be able to efficiently plan their work in a way that will enable them to be on time with their tasks.

User-oriented perspective. To design more real-time scenarios, a QA engineer should clearly understand who the end-user is, what purpose the product serves, and how it will be useful to the customer.

Communication and collaboration skills. Having good communication and teamwork skills is essential for software testers, as they constantly interact with project team members, clients, and stakeholders. Mastering point-to-point communication will help a QA engineer accurately decide on what information to include in the daily status reports.

Curiosity. Being a QA engineer means constantly questioning the quality of the product. Often working with incomplete requirements, they need to ask meaningful questions that will yield more information and help perform testing effectively.

Self-organized with no monitoring required. In contrast to a junior who works under constant monitoring, a senior knows how to prioritize and estimate task execution without any assistance. Seniors try to modify their working style to match the processes.

Communication tactics to work closely with a development team. Senior QA engineers often have to collaborate with developers: from reproducing the reported issue and emphasizing the fix for critical bugs to understanding how the bug has been fixed.

SQL skills can be of much use for certain projects. SQL experience is required to verify the test data, insert, update, and delete the test data values in the database. Therefore, as an advanced specialist, senior QA engineer should have the listed database and SQL knowledge:

  • Distinguish the database types
  • Connect to the database using SQL clients
  • Understand the relationship between database tables, keys, and indices
  • Write a simple SQL statement along with more complex join queries
  • Interpret more complex queries

Manual QA engineer responsibilities

Daily status reports. QA engineers must inform a QA lead about the testing activities performed via daily status reports.

Detailed defect reports, which requires being skilled in how a specific AUT (application under test) works.

Listing improvement areas. While having a fresh eye on the product, the junior QA is expected to have ideas on ways to improve the product’s usability.

Test cases documentation. The middle QA has an expertise threshold that enables them to write test cases on their own. Besides that, they have to document test cases in a specific format that differs depending on the organization.

Requirement analysis. Understanding the requirements provided by a customer and relevant domain of work is necessary to prepare a query list for a QA lead.

Test effort estimation. A QA engineer always evaluates the efforts required to complete the task efficiently.

Contributing to test planning, designing, and estimation. Senior QA engineers, being more experienced, are responsible for providing inputs on high-level test scenarios, challenges, risks, resources, etc., during test planning meetings. They should also help in test designing and structure high-level test scenarios into medium-level test cases. Based on their diverse experience, senior QA engineers are capable of providing the most accurate test estimates.

Manual QA engineer tools

In addition to using different desktop and mobile operating systems, browsers and web proxies for cross-browser testing, manual testers use the following tools.

Test management tools (TMTs) help organize the testing process. Using TMTs, manual testers can generate and store test reports, interlinking them with the release requirements. Some of the TMTs are Test Manager, TestLink, SpiraTest, TestRail, HP-ALM (QC).

Defect tracking tools (DTTs). With the help of DTTs, QA engineers track the defects found in the application and generate bug reports to communicate them to the dev team. Examples of DTTs are BugZilla, Mantis, IBM Rational ClearQuest.

MS Excel helps write large sets of test cases and later import them into TMTs. Test Studio is an alternative to Excel that provides better UI experience and test case reusability.

Project management software with features like time tracking, wikis, task lists, Gantt charts, and more is a must-have for Agile projects. Jira is a common product management choice, as are Redmine, YouTrack, and Backlog.

SQL clients can be useful for particular cases where a manual QA engineer must connect to the database.

Automation QA Engineer

Automation QA engineers have more advanced skillsets than manual QA specialists, as they write scripts to run repeated tests. Programming skills allow them to write automated test scripts. For this reason, they are often called developers in testing. Using different automation tools, these QA engineers design, build, 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, if done manually, would consume a large percentage of test resources.

Life cycle of the automated testing process. Source: Kellton Tech

Other common titles of Automation QA: SDET (Software Development Engineer in Test), technical tester.

Automation QA engineer skills

Coding skills. Knowing common computer languages will allow automation QA engineers to write code for automating testing processes. The most popular programming languages for test automation are Python and Java, followed by Ruby, С++, Perl, and PHP. Given its conciseness and comprehensive test support packages, Python allows for capturing the essence of the test case. Although Java is quite a complicated language, it is widely used, and many examples can be found on search engines. Java has a diverse platform of tools and packages, and continuous integration with Java is easy by integrating with automation tools like Jenkins. While juniors barely know one programming language, seniors are good at several coding languages. That allows them to work seamlessly in any team, regardless of the language they use. Besides that, they need a strong grasp of languages required for different automation testing technologies.

Working in an Agile environment. While primarily working in Agile, automation QAs should understand how automated QA processes work there.

Analytical skills. After examining bug reports, automation QA should prioritize necessary tests and streamline application functions by means of automated testing.

Problem-solving skills help automation QA engineers effectively find bugs and create fixes for them.

Automation QA engineer responsibilities

Writing, executing, and monitoring automated test suites. QA automation engineers design automated tests by creating scripts that run testing functions automatically. This includes determining the priority for test scenarios and creating execution plans to implement these scenarios.

Designing documentation for automated processes. These documents include test plans, test procedures, and test cases.

Using automation testing frameworks. In a nutshell, testing frameworks are sets of practices and tools for creating and designing test cases more efficiently. Although an optional part of the automated testing process, an organized framework reduces maintenance costs and testing efforts while making test automation code reusable, maintainable, and stable. Building an automation framework is an advanced task for senior automation QA engineers.

New tools selection. Automation QA engineers can be responsible for researching, recommending, and implementing tools to increase automation on the project. They proactively introduce innovative automated testing strategies and toolsets into the overall development processes. These new solutions often appear to be continuous integration (CI) and continuous delivery (CD) tools, especially when it comes to regression testing.

Automation QA Engineer tools

In addition to the tools mentioned for a manual QA engineer, an automation tester uses the following.

Automation tools. Most popular of them are Selenium, TestComplete, Katalon Studio, and Ranorex. 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.

Automation frameworks. Instead of building elaborate automation frameworks from scratch, automation testers can also make use of ready-made products, like Serenity, a Java-based framework, or developer-centric Cypress, etc.

IDEs for writing code. VSCode, Visual Studio, IntelliJ IDEA, etc.

CI/CD tools: Jenkins, TeamCity, etc.

QA Lead

In addition to handling day-to-day duties like establishing metrics, supervising team members, administering outside resources, and designing test programs, QA leads have a wide range of job responsibilities, as they have to take any action needed to meet the quality goals.

QA Lead’s time is divided between responsibilities in a project. Source: Software Testing Help

Other common titles of a QA Lead: test lead, lead QA analyst, test manager.

QA lead skills

Both manual and automated testing skills. It’s necessary for QA leads to be experienced both in manual and automation testing so that they can define which cases will benefit from manual testing, and which need automation.

Wide knowledge of testing approaches. A QA lead should be well aware of the methods, levels, and types of testing, and testing tools to choose the most suitable ones for a project. Moreover, they need to keep up to date with the latest trends and technologies.

Profound understanding of the business area and the client’s requirements. This is necessary to determine a test strategy, test goals, and objectives.

Being good at project planning, task, and people coordination. All management activities, including defining the task lists for subordinates, managing the necessary resources, and making sure necessary testing activities are being executed on time, fall on a QA lead’s shoulders.

QA lead responsibilities

Test strategy preparation. QA leads decide how the test environment is set up and how information flow is managed, what testing tools are implemented and what industry-accepted practices are applied. Besides that, a QA Lead establishes the templates for testing documents, reports, and other procedures. Consequently, their job has a lot of responsibility.

Accepting and clarifying the requirements. A QA lead should make sure that the project requirements are precisely defined. Otherwise, they need to clarify them through communication with the customer.

Setting quality metrics. QA leads should help developers establish the metrics to measure the quality of delivery. There are separate metrics for classifying defects, metrics to determine efficiency or the regression ratio, and metrics to define whether the initial quality has been delivered.

Planning and controlling the testing process. QA leads should develop test plans and procedures, schedule testing activities, plan a budget for testing, and prepare test effort estimations. Through ongoing analysis, a QA lead checks whether the team is conducting the processes correctly. A QA lead also keeps 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.

With the help of requirements traceability matrix that captures two-baseline documents — the requirements and test cases — QA leads check if the current project requirements are met and all test cases are covered.

Requirements traceability matrix. Source: Opencodez

Recruitment and supervision. A QA lead is responsible for picking candidates for QA positions and afterwards identifying whether there’s a lack of knowledge or a skill gap that requires more training.

Represent QA team at meetings across departments. A test lead takes part in different cross-department meetings and updates the customer on the progress of testing activities.

Continuous test process improvement. A QA lead always aims at optimizing the test process, including the use of appropriate testing tools, test techniques, and test automation. If for some reason the team underperforms, it’s a QA lead’s responsibility to identify and fix the issue.

QA lead tools

The QA lead should demonstrate proficiency with manual and automation tools used for the project. In addition to that, they use different management tools.

Project management tools that were previously mentioned (Jira, Redmine, YouTrack, Backlog, etc.) are of high importance for QA leads since they help determine how to introduce methods to the teams, how to train juniors, and how to monitor progress and quality throughout the development process.

The Role of QA Engineers in the Software Development Life Cycle

By viewing SDLC (Software Development Life Cycle) 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.

_Testin_g domain in Waterfall modelImage 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 AgileImage 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 DevOpsImage Source: “A Practical Guide to Testing in DevOps” by Katrina Clokie

Full-stack QA Engineer: a Tester of the Future

With new 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 QA engineers more power within a company.

Core skills of the modern QA EngineerSource: Redgate

By testing 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 QA 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 QA 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.

Photo by Shane Aldendorff on Unsplash

Originally published at AltexSoft Tech Blog QA Engineering Roles: Skills, Tools, and Responsibilities in a Testing Team


Published by HackerNoon on 2019/02/05