Two specialized jobs exist in well-run software development shops: one that focuses on performing software quality tests and another that focuses on building the foundation for those tests. Both provide equally important value when ensuring software performs as expected.
While individual teams may use unique titles, these roles are typically segmented between QA staff -- which includes titles like QA engineers and QA analysts -- and those known as software development engineers in test (SDETs). While it's possible for a single team member to successfully handle both areas of responsibility, they represent two very distinct classifications of skillsets and experience.
Let's examine the basics of both the QA and SDET roles, including the precise value each brings to an Agile development process. Then we'll look at the various approaches certain software departments take when it comes to assigning these roles as well as some techniques for helping the two disciplines work in sync.
QA roles and responsibilities
Regardless of the specific title, QA in an Agile team handles myriad tasks:
- test project supervision;
- test suite builds;
- automated test configuration;
- manual and automated test execution; and
- test environment management.
In addition, the QA role often designs test cases for smoke, feature, functional, integration and regression tests. For example, someone in a QA role may review user stories; develop manual and automated functional tests based on the story feature; and then build the appropriate collection of smoke, integration and regression tests.
QA will also execute test suites for each stage of the team's software testing process. They will take on the task of entering defects, often using a shared QA tool such as Jira or Kualitee to improve reporting and bug-tracking processes. The QA role may also require those staff members configure test environments for new feature releases or execution cycles.
Finally, QA staff will create report documentation that describes test processes and shows the results of each test execution cycle. Part of this may include defining the styles, templates or frameworks that teams use for both manual and automated testing.
SDET roles and responsibilities
SDETs focus on automated test planning, framework creation and automated test support. Most SDETs have in-depth programming or development knowledge. They have some development experience combined with an understanding of test concepts. A good SDET understands how to design and develop both manual and automated tests to find defects.
Like their QA counterparts, SDETs are involved in the software development lifecycle from beginning to end. SDETs collaborate with QAs and developers within the team. The SDET will also review developer code, provide feedback during code reviews and understand code design concepts to create a fully functional application.
The SDET role typically performs the following tasks in an Agile team:
- test automation framework planning;
- framework and tooling management;
- unit test process management;
- automated test design, development and support;
- debugging and test failure analysis;
- aligning test suites with specific code builds; and
- scripting for tests related to CI/CD.
Essentially, SDETs provide the code support for test automation design. Additionally, they may be asked to develop automated tests for security, application performance and unit testing. SDETs can also play a critical part in an Agile team's efforts to improve software resilience by helping developers debug problematic features and regularly participating in code reviews.
The value of QA and SDETs in Agile development
While it largely depends on the specific demands and purpose of the Agile team, an ideal staffing approach focuses on cultivating collaboration between QA and SDETs. Doing so should, over time, generate increasingly comprehensive test coverage across the entire application ecosystem. Of course, there are certain scenarios where an organization may find it beneficial to focus on specifically filling one of these two roles.
For example, applications that must comply with extensive regulations require heavy amounts of both validation and verification processes, some of which may need to be automated. In a case like this, where the organization needs to increase test automation and provide support for complex test procedures, it may be best to focus on filling the SDET role.
Do SDETs and QAs need a coding background?
Regardless of whether someone wants to take on the SDET or QA role, it never hurts to know how to read and write application code. Exposing oneself to the full spectrum of application development methodologies and techniques fosters design skills that are extremely useful when working with manual and automated test builds.
The ability to code also lends itself to unique career advancement opportunities for both SDETs and QA staff, each in their own way. By sharpening their coding skills, SDETs can provide themselves insurance; they could move into a back-end developer role if they so choose. Likewise, someone in a QA role could carry their coding skills over to product management or UX/UI design.
However, application teams that release rapidly and let developers perform their own unit testing may benefit from focusing on the QA role, as they can verify developers' changes before a release or user acceptance testing. They can also document those changes and monitor them once deployed into production.
A positive coexistence
It's not uncommon to find development teams that lump the QA and SDET role together. Most software testers would likely prefer to occupy one role or the other, since each one's segment of responsibilities entails a significant workload to handle.
In an ideal scenario, an Agile team includes both positions and takes advantage of the collaborative effort between SDET and QA roles. Because the roles focus on different levels of code testing coverage, these positions can enhance a team's test coverage, validity and overall depth of the testing efforts.
The main goal of every Agile team is to develop software with quality built in from the beginning. This requires a collaborative effort between the Agile team, developers, and testing and product teams. QA and SDET roles come into play within the testing group of an Agile team. QA and SDET complement each other with their shared goal of creating a product with limited defects and high quality through thorough testing.
Other major differences between the roles are their required knowledge and skills. While most Agile teams lump SDETs into the developer role, that's not the whole story. Both roles focus heavily -- or exclusively -- on testing and need to go beyond the basic testing concepts to effectively provide valuable test coverage.