I’ve been asked many times to define the difference between a software tester and a software developer that I decided to finally write a post on it.
First of all, if you’re wondering what SDET stands for, it’s software developer engineer in test. I’ve also seen it listed in job descriptions as “SET software engineer” in tests.
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 posting.
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 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.
SDET vs. QA Tester
Because of these developer-like activities, it requires a unique set of skills; someone who 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 and manual testing.
SDETs also have skills that make them perfect resources for creating automation frameworks and tools.
They really are a hybrid-type of role.
I’ve also found that there are many excellent testers that don’t have the skills or desire to code.
But I think there’s a need for more SDETs at most companies to fill in the gap between developers and traditional testers. Having an SDET as part of your developer’s code reviews(like Alan did) 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 will 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 a where someone in an SDET role can step 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.
SDET Job Description vs. Testers
So what’s the difference between a software tester and an SDET?
One way to find out is to check job descriptions on hiring sites like indeed.com, Dice or Simply Hired.
For example, here is a generic job description 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 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 Job Tasks
• Evaluate software applications for errors and stability
• Debug scripts and identify system flaws
• Perform both manual and automated testing strategies
• Develop testing strategies and analysis for software programs
Compare this to the software developer engineer test job description.
SDET Job Description Example
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.
Additionally, the SDET normally identifies areas within the program requiring further or varied testing and helps design and set these tests up 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.
Common SDET Job Tasks
• Automate test cases
• Verify fixes
• Validate and document completion of testing and development
• Find bugs, defects, and regressions
• Design, implement, execute and debug information technology test cases and scripts
Of course, this is a generic job description.
But if you look for 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 software developer in test position job requirement for a healthcare company
As you can see, both jobs require someone who has both testing and programming skills. (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 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!
If you look at the 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 SDETS
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 at the time:
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 while, you may want to brush up on how to pass an automation testing coding interview before you do.
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.
SDET–The Sand Castle Test
“I think you can really see who is going to be a developer or tester by going to the beach when you’re small kids. The developers will be making sand castles and the testers will be the kid that enjoys breaking the sand castles. And I was the strange kid that liked to do both—create the sand castles then break them.”
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.