Exploring the roles in quality engineering
There are three main roles in the testing world without involving people management. Different companies might use or call these roles in different ways. Quality-related roles also vary depending on the size and structure of the organization. For example, smaller companies might combine all of these into a single role and call it SDET. The main differences stem from their technical expertise and overall experience in the software and quality engineering domains:
- Traditional manual tester (or quality assurance analyst)
- Test automation engineer (or software quality engineer)
- Software Development Engineer in Test (SDET)
The traditional manual tester role is not as prevalent as it used to be, as every role in quality is expected to perform some level of test automation in the Agile world. So, here, we will be focusing only on the latter two. This does not mean that manual testing is not done anymore. The responsibilities of a manual tester are shared by test engineers, SDETs, business analysts, and product owners/managers.
There are organizations where software engineers/developers perform their own testing. The engineer developing the feature is responsible for performing the required testing and delivering a high-quality product. Often, small- to mid-sized companies use this approach when they are still not able to build a separate quality organization or hire test engineers. An important downside of this is that there is a lot of context-switching that needs to be done by the developers. Also, consistently maintaining the test coverage at high levels becomes a challenge. A single developer will be focused on providing good coverage for their own feature, and it is very easy to miss the integration or system-level tests needed for a business workflow. Some developers, plain and simple, do not like to perform tests other than unit tests due to the tedious and repetitive nature of testing. It is also hard to keep track of the various details involved in testing different parts of an application.
Next, we will look at the most common testing roles that are prevalent in the market.
Test automation engineer
Test automation engineers are the core members of the quality organization within the software engineering teams. They can either be embedded into the engineering team or be part of a team of quality engineers reporting to a quality manager. The main responsibilities of a test automation engineer include the following:
- Test planning and test strategy development for testing product features (both manual and automated)
- Preparation of test cases and test data
- Setting up the test environment (usually with help from other engineers)
- Create, execute, and maintain automated tests for the product features
- Uses the existing test automation infrastructure to build a sound test automation strategy
- Collaborate with product and implementation teams to achieve good test coverage
- Reporting and retesting of bugs
- Coordinating bug fixes across teams if necessary
- Streamline test processes
To sum it up, on a daily basis, test engineers have to partner with most of the members of the team and stay on top of the user stories. They take ownership of the product quality of the team they are embedded into. Next, let’s see how an SDET is different from a test automation engineer.
SDET
An ideal candidate for the SDET position exhibits sound technical skills and a deep expertise in testing methodologies. For all practical purposes, technically, an SDET is as good as a software engineer with extensive knowledge of the quality engineering space. An SDET will be involved throughout the development life cycle from unit test creation to production release validation and always strives to enhance the productivity of both the software engineer and quality engineer in the team.
The main responsibilities of an SDET include the following:
- Setting clear objectives for test automation
- Creating and improving the test automation infrastructure
- Owning the test automation strategy
- Liaison with software engineers on the team and across teams (if needed) to build and maintain the automation framework
- Being involved in the design and architectural discussions
- Acting as a mentor for the quality engineers in the team
- Interfacing with the DevOps team to ensure testing happens at every stage of the development pipeline
- Adapting and implementing the latest technological developments in the quality engineering domain
Table 1.2 highlights the differences between a test automation engineer and an SDET:
Test automation engineer |
SDET |
Creates and executes automated and manual tests |
Creates and maintains the test automation framework |
Collaborates with the product and implementation teams |
Collaborates with software engineers and DevOps teams |
Highly skilled in programming with testing skills |
Experts in testing either manually or by automation |
Develops test automation tools |
Uses test automation tools |
Table 1.2 – Test automation versus SDET
Even though their roles demand different responsibilities, both the quality engineers and SDET are equally accountable for the release of a bug-free product to the customer. Both should be in the meetings with product stakeholders to make a final decision on every feature release. A quality engineer is good at test case creation, while an SDET specializes in choosing the right ones to automate in the best possible way. There are times when quality engineers and SDETs have to work in tandem to keep the upper management informed and educated about the capabilities of test automation and the effort it takes to achieve the ROI. Also, it is important to note that the relationship between software engineers and quality engineers/SDETs is of utmost importance to the success of any test automation work. It is vital to get continuous feedback from software engineers on the test automation code and design. Software engineers should also be educated, when necessary, about the various benefits derived from test automation
In the next section, let’s get ourselves familiarized with some commonly used definitions in the world of testing and test automation.