In this in-depth guide, you'll learn all about the role of an SDET. Read on to find out what are the roles and responsibilities, career path, salary, and skill set needed for this position.
First of all, if you’re wondering what SDET stands for, it’s a software developer engineer in test.
I’ve also seen it listed in job descriptions as “SET software engineer” in tests.
I’ve been asked many times to define the difference between a software tester, a QA engineer, a manual tester, and a software developer that I decided to finally write a post on it.
Demand for SDETs is Growing
I first heard of the role of SDET from Microsoft, where I believe it originated.
But I think now it’s the norm within most high tech companies—especially the ones in and around Silicon Valley.
Although I think Microsoft has dropped this title it lives in companies like Amazon and Google and in job postings.
You can also see the trend for the number of times the term “SDET” is searched in Google:
With the growth of Agile, DevOps, and Continuous Testing the role of an SDET Developer in Test is on the rise.
With more and more companies shifting left in their software development lifecycle, the need to run tests and get quick feedback to the developers is critical.
Differences between SDET, QA, Tester?
Because of these developer-like activities, a software development engineer requires a unique set of skills; someone who has testing skills, understands testing, and can also program.
Enter the role of an SDET.
Very often SDET is involved in both white-box and black-box testing—all the way from helping create low-level unit tests to high-level activities like test planning, creating test cases and manual testing.
SDETs also have skills that make them perfect resources for creating test automation frameworks and tools. Many times they are part of a development team. They are also the ones that help select what might be the best test automation tools for their teams.
Here's the thing.
They really are a hybrid-type of a role.
I’ve also found that there are many excellent testers on a test team that doesn’t have the technical skills or desire to code.
But I think there’s an opportunity for more SDET professionals at most companies to fill in the gap between developers and traditional testers.
Having an SDET as part of your developer's code reviews to make sure this is happening is crucial if you plan on having your developers focus on test-driven development.
Can Developers Even Test?
Some folks will say that developers can’t test because development and testing are two different skills that require two different systems of testing.
Alan Page, one of the most respected testers I know, doesn’t feel this is an issue.
In my interview with Alan on the testing lessons he learned at Microsoft he told me that almost every developer he knows can write very good functional tests—after being taught how to do so.
This is where someone in an SDET role can join in to help lead the team with their developer-centric testing efforts.
Alan went on to say, “I probably spent three months straight reviewing code—about two to three hours a day of all the check-ins for our team, just reviewing the test code and giving feedback. I don't need to do that anymore because I have developers who, for the most part, write pretty good tests, and they kind of get it now.
Of course, I think you need someone like an SDET to make sure when the developers are under pressure to deliver quickly that they don't skimp on the testing quality.
What is the difference between SDET and Tester QA?
So how do you get hired as an SDET for one of the big tech companies? Or get promoted from a QA tester to a software development engineer?
One way to find out is to check job descriptions on hiring sites like indeed.com, Dice, or Simply Hired to find out what is the difference between a post for a QA tester vs an SDET.
For example, here is a generic job description and salaries I found on **Payscale
Software Test Job Description Example
In any software development lifecycle, a software tester plays a key role in the process.
Although many teams have moved to Agile I know many testers still report to the quality assurance or engineering quality control department.
As a tester receive a new software build or function at any stage in the software development pipeline they put the program through a variety of tests, documenting the software's response.
One of the key components in testing is documenting the steps performed in software testing; documentation is especially important since it is often key to helping programmers and software engineers discover coding problems.
Another key aspect of the tester's work is finding repeatable crashes and bugs in a program.
Common Software Tester QA Responsibilities
- Evaluate software application solutions for errors and stability
- Debug scripts and identify system flaws
- Perform both manual and automated testing strategies
- Create test plans
- Develop testing strategies and analysis for software programs
- Willingness to learn
Compare this to the software developer engineer test job description.
What are the roles and responsibilities of a SDET?
Software development engineers in test (usually abbreviated as SDETs), are software developers working within the testing team.
He or she has full access to code and carries a variety of responsibilities. One of the key things that set the SDET apart is his or her access to code; he or she actively participates in debugging and altering the code as necessary. In this capacity, at times, the SDET almost assumes something of a hybrid role between the developers and the testers. Much of their development time is creating or updated code for their test automation framework.
Besides functional automation senior SDETS typically can also assist with unit testing, API testing, security testing, DevOps and performance testing, and stress test activities. They also are required to know what automation tool to use for each of these testing activities.
Additionally, the SDET normally identifies areas within the program requiring further or varied testing, and helps design and set these tests up, provides test data and participates in administering them. An SDET also looks to identify ways that end-users and consumers will work with the software and helps create the best experience possible for the intended user by identifying areas needing continued adjustment.
To work as an SDET, a person typically must possess an educational background in programming and computer science, typically with a bachelor's degree in computer engineering or a related field. SDETs typically gain practical experience working both in development and quality testing or assurance as well. They typically work in a computer lab and development environment during regular business.
SDETS are also expected to be experts with testing tools, developing automated test and testing frameworks as well as have the domain knowledge to be able to create acceptance tests.
They also have skills commonly found for developers like programming experience, development experience, know object-oriented programming, understand all areas of the developed phase. They can also modify existing code and understand the technical architecture, software design, and the software development process.
What does an SDET do? Common Tasks:
- Collaborate with developers in reviewing unit test and integration results for coverage analysis
- Create a branching strategy and policies for high-quality automation deliverables
- Design & develop pipeline as a code for Continuous testing & continuous integration
pipeline to integrate automation scripts into CI/CD pipeline.
- Selecting test frameworks for their teams
- Drive automation efficiencies and coverage effectiveness using different automation framework tools and techniques
- Review the development code to build an effective automation suite to cover technical and business integration automation coverage
- Design real-time automation dashboard to measure build quality and provide feedback to the agile delivery team
- Mentor quality engineers on automation best practices and support automation backlog efforts
- Perform manual, exploratory and automation scripts development efforts
- Ensure the test coverage and execution of Unit, Integration, Acceptance, System, Regression, UAT, Security and Performance are met
- Design, implement, execute and debug information technology test cases and scripts
Of course, this is a generic job description.
But if you look for and view an actual open position for an SDET on a job board, you can see what a more specific job description looks like. (I also find it helpful to look at job descriptions even if I’m not looking for new employment just to make sure I’m working on the right skills to keep me employed.)
Here is an Amazon SDET job listing
Here is another senior software developer in test position job requirement for a health care company
As you can see, both jobs require someone who has both testing and programming skills and can apply them to real-world situations. (Also notice the emphasis on automation tools for functional, API, and performance testing.)
If you’re looking for the different levels of software engineers at companies like Microsoft, Google, and Facebook, you can see them on the site Levels.
SDET Salary – Pay Difference between a Tester and an SDET
Besides skill differences between the two positions, you’ll also see a significant salary difference.
Once again, the site Payscale data shows that the national average for an SDET is $88,000/yr, and a Software Tester has an average yearly salary of $55,501. That’s a difference of over $32,000!
You can see the same pay difference looking at the UK job board ItJobsWatch:
If you look at the top job descriptions of skills that can bump up a tester’s pay, many of them are SDET-related skills like:
- Selenium Automation Test Tool
- C# Programming Language
- Test Automation
Books for Wannabee SDET
Even though the book How We Test Software at Microsoft is slightly dated now, they have a nice SDET roadmap example of what Microsoft was using years ago to hire professional SDETs:
The book How Google Tests Software also contains a bunch of info on The Software Engineer in Test role, including an SET Workflow example.
Change in the Hiring Process for Testers
I’m not sure whether any of you have been on a testing job interview in a while, but that process has also changed.
Such an interview will often be for a tester’s role so you get bombarded with programming-related questions.
I’ve heard from a number of folks that have been completely caught off-guard by these types of SDET-like interview questions.
If you haven’t been on a job interview in a long time, you may want to brush up on how to pass an automation testing coding interview before you start applying for this role.
I know from my experiences with finding and hiring people with all the required skills can be difficult. So if you like the challenge of testing and enjoy developing code, a career as an SDET might be the perfect choice for you.
How can you improve your testing skills?
Of course, the key to keeping or obtaining a better job in a technology-based field is to always be working on your skills. If your a tester or already an SDET check out the yearly Automation Guild to make sure you stay up to speed with the latest tips. tools, technique and best practices you need to succeed with creating automation testing.