This Tutorial Discusses all the Aspects of an SDET (Software Development Engineer in Test) Including Skillset, Roles & Responsibilities, Salary & Career Path:
We will discuss the SDET role in-depth, the expectations and responsibilities from this role that the companies expect, the skill-set that an SDET must possess, tools, and technologies that the candidate should be hands-on with and also the salaries generally offered.
What You Will Learn:
Understanding the SDET Role
The expanded form of SDET is – Software Development Engineer in Test
In very simple words, this role is a combination of an intermediate between a pure developer role and a pure tester role. SDETs are skilled professionals in both – Quality Engineering as well as Software Development.
The term SDET was first invented by Microsoft, which was then followed and used by most big Product names like Google, Amazon, Adobe, Expedia, etc. The roles major expectations were to replace manual repetitive tasks with some automation to increase efficiency as well as reliability for the applications under test.
Comparison Between SDET And Manual QA
Manual QA testers are mainly focused on the Black box or Application testing. What it means is, for a QA tester, what matters is a specification of how an app is expected to behave when given a certain input.
QA tester would just use the Application/System under test as any normal user/customer would use but with focus on more minute details as well as edge scenarios by trying different input combinations, etc.
SDET’s focuses on application from both White Box as well as Black Box testing. In other words, they would also be aware of the inner functioning of the app, which enables them to write Automation tests using both White Box or Black Box testing techniques.
In essence, a Software Development Engineer in Test must be aware of all Black Box testing techniques along with hands-on development/coding knowledge to understand the inner functioning of the app which ensures better quality standards as well as a less defective software product.
Essentially, an SDET should act as an enabler for effective QA through any means. What this also means, that the individual would use his/her skills to ensure all parts of the software under test are validated in the best possible way which should include testing both functional and non-functional areas.
Let’s see SDET and Manual tester comparison on different parameters
|Testing Scope||Focuses on a wide variety of testing techniques and types. |
Example: Functional, Non functional,Security, Performance etc.
|Generally, focus on the functionality perspective of the application under test. A manual tester behaves like a user/customer of the app under test and validates it from that perspective.|
|Automation||SDETs mostly focus on automating repetitive scenarios to ensure that manual testers can focus on more complex and edge scenarios and use their bandwidth and skills more efficiently.||Manual testers possess some or no skills for automation. However, it's required that manual testers should be aware of using tools that assist in manual testing
Example: Using Postman for executing API endpoints, using cloud providers like sauce labs for executing tests on different platform versions, etc.
|Primary skill-set||SDETs are primarily responsible for automating test cases as well as writing reusable scripts/tools that help the team to reduce repetitive efforts. A senior member of the SDET team is also responsible for creating automation frameworks and enabling other SDETs to write tests using the framework.||Manual testers primarily focus on app functionality, focus on edge-case scenarios, and complex test cases.
For example: A manual tester testing a mobile app, would in addition to all functional scenarios think of scenarios like
- What if I close the app when there’s a backend operation/network call in progress.
- What happens if mobile is suddenly switched off when customer was on a particular page on the app.
- What happens if the Internet goes off in the middle of uploading a document on an app etc.
|Salaries||SDETs are generally offered higher salaries (~ 40-50% higher than manual testers), on account of the skills they possess and experience they have.||Pure manual testing roles command a lower salary in comparison to a hybrid role where a manual tester also strives to learn new tools and add value to the product being delivered.|
Software Development Engineer in Test Skillset
Enlisted below are the skillsets that an SDET must possess:
#1) Open Mindset
The first and foremost skillset is that any Software Development Engineer in Test should be open to learning any scripting language/tools that are required to enable them to have thorough testing of the app under test.
It’s quite likely that as an SDET in one company, you might end up working using Microsoft/.NET tech stack but in another company, development language is primarily Java – so SDET is expected to have an open mindset to learn new stuff/tech as and when required.
A Software Development Engineer in Test must adapt to the needs of the project, tools, and technologies, databases, etc. For example – as an SDET you might have an experience of doing API testing, but another role requires you to test UI or frontend. Hence, the role requires you to adapt to the needs of the project, to deliver a high-quality standard product.
At most of the product companies, often DEV and QA ratio gets skewed to a large extent. This means that it’s common to see teams having a DEV: QA ratio of 4:1 or even 5:1. Hence it’s imperative that an SDET would be expected to be involved in multiple things and deliver.
These are a couple of responsibilities that an SDET would be expected to work on:
- Participate in stakeholder meetings: An SDET has to closely liaise with both developers as well as product folks to understand the product from both developers as well as product standpoint and then devise/suggest automation strategy.
- Create framework/tools
- Strategize test planning
- Raise/Investigate defects
- It can be required sometimes to contribute to Unit testing along with developers.
#4) Exploratory Mindset
Each SDET should remember these lines at all times – “If you’re repeating the same actions all the time, consider automating it”
The person would have a mindset to reduce the effort for anything that comes their way with the help of tools to enhance productivity as well as to ensure high-quality software products.
In addition to all automation work, SDET’s primary job is to deliver high-quality products with whatever it takes, hence he/she would also need to focus on testing products through exploratory ways to uncover more and more hidden bugs and defects.
#5) Collaborate, Contribute & Communicate
SDET’s role mandates liaising between different stakeholders like Developers, Product, Manual testers, etc.
It’s important that SDETs collaborate with all the required stakeholders as well as communicate all the necessary details as and when appropriate.
SDETs and QA team hold the quality gates for a product before its open to the public and hence they play an important role in terms of deeming a product fit to be launched to customers or not.
Roles And Responsibilities
So let’s try to understand, what are SDETs day to day jobs and responsibilities and the different tasks they are expected to do.
- Work alongside developers as well as the business stakeholders and strive to automate the acceptance criteria. This means in simple words is – an SDET first understands the requirements from acceptance/customer perspective and also has to understand the way the product is developed in terms of coding language, databases, etc, and then plans a strategy to automate maximum scenarios as possible.
- Responsible for building robust, and high–quality test automation solutions for functional, regression, and performance testing.
- Create reusable scripts/tools wherever required.
- Contribute to both functional and non-functional areas of testing. Functional testing includes testing from functionality/requirements perspective and is largely driven by acceptance criteria or user stories.
However, non-functional testing is equally important too. For example, how performant is the application, is the application secure enough, ensure that there are no hacks left in the app which could result in hampering the security of the app and might end up causing a great loss to both customers as well as the organization.
- They also participate in the design and architectural design discussions as well as provide effective feedback in code reviews.
Become A Great SDET
To become a great SDET, let’s see some tips / basic tools and technical skills that must be learned to better fare in their roles.
In the previous section, we learned about qualities a Software Development Engineer in Test must possess to become great in their roles. They must have an open mindset, be adaptive, and should be able to communicate, collaborate, and contribute in whatever way as mandated by the product or team.
Let’s see a list of some common tools and technologies that SDETs must learn:
- Should have a solid understanding of testing principles, testing types, and methodologies.
- Highly proficient at debugging issues – learn debug tools like – Chrome Web Debugger which are extremely helpful for debugging web applications, as well as investigating network logs for an app under test.
- They should be able to write reusable code/scripts and hence they should be proficient in at least one scripting language. The easiest to learn is Python which could be applied to a wide variety of tasks, automation frameworks, etc.
- Be familiar with API testing clients like POSTMAN
- Should be aware of White box testing tools and techniques – like Mocking frameworks (Mockito), etc as they might be expected to contribute writing unit tests as well when required.
- They should be aware of versioning tools like Git. Also, they should be familiar with the concepts of Pull requests, code reviews, etc.
- Understanding of architecture of web applications and general client-server model.
- Should be aware of basic Object-Oriented Programming concepts and understanding of SOLID model (Single Responsibility, Open/Closed Principle, Liskov Substitution, Interface Segregation, Dependency Inversion)
- Basic understanding of Continuous Integration / Continuous Delivery concepts (CI / CD) and also should be aware of CI tools like Jenkins/Bamboo, etc.
SDETs are generally expected to take care of deployment issues as well hence understanding these tools is imperative.
- They should be familiar with at least one front end automation framework. The easiest and the most widely used in Selenium. It’s the holy grail of front end testing for web applications and almost all organizations use the Selenium framework for automating UI tests.
- Learning the basics of performance testing as well as writing simple scripts using open source performance testing tools like JMeter is very helpful and you can refer to this Jmeter tutorial. This is helpful as SDETs are also expected to take care of non-functional requirements like performance testing.
- They should also be aware of the fundamental concepts of Security testing. This also encompasses having knowledge of basic coding standards which ensures that there are no basic security flaws left unaddressed in the app. OWASP is a great reference for all such fundamental concepts.
- SDETs are expected to know, understand, and implement agile development methodologies and should be comfortable in working with teams using the Sprint/Scrum methodology of agile.
- Should be aware of anyone cloud technology platforms like – Amazon AWS, Google GCP, or Microsoft Azure.
Since most of the companies are now moving to a cloud-based infrastructure, having a basic understanding of cloud tools and technologies is generally helpful to get started with.
Certification For SDETs
In general, there are no specific certifications that are available for SDETs
If someone wants to start their Software Development Engineer in Test journey, they can just focus on the points that are mentioned in the “How to become a great SDET” section of this tutorial, and then SDETs with their open mindset should continue their learning journey on the job.
For testing terminology and basics, it’s good to have everyone who’s in the Software testing profession to be certified with the ISTQB Foundation testing certificate.
This certification covers all the basic software testing concepts like,
- Testing types – functional/non functional
- Black box/White box/Grey box testing
- Test planning/Defect management
- Test techniques – Equivalence partitioning, Traceability matrix, etc.
There are also other international software testing certifications available, but most of them are not very major selection criteria for companies to hire SDETs.
A list of all such certifications is available here.
With most of the bigger product companies, Software Development Engineer in Test interview is a lot more compared to those with developer interviews as they are expected to know most of the development of methodologies and related concepts.
However, the interviews are a little lenient as compared to developers. What is emphasized here is how the candidate approaches a problem and how broad can a person think about the problem.
In general, SDET interviews consist of following rounds/question types at almost all big product organizations like – Amazon, Microsoft, Adobe, Expedia, etc.
- Written Round: Writing test cases for a given product. Here, the intention is to get an idea of what all facets of testing can the person think about the candidate like if he thinks/lists all functional scenarios, edge-case scenarios, is candidate focusing on security testing, performance testing, etc.
- Coding Round: A small coding exercise is given and also the candidate is expected to write down all unit testing and functional testing scenarios. Here the area or skill that’s being tested is – basic coding knowledge/constructs, writing testable code, and knowledge about white box testing techniques like Unit testing, Mocking, etc.
- Design Round: A system design question is thrown, example, how would you design youtube
These type of questions generally hold more relevance for developers, but for SDETs, the interviewer is looking for how broadly can the person think, does the candidate know about OOPs concepts, is the candidate capable of thinking about scalability, robustness, load balancing, etc, can the candidate use right databases for the application that’s to be designed
- HR/Manager Round: Here things like team fitness, culture fitness, etc are observed about the candidate as well as salary discussions, and negotiations are also done.
Recommended Reading=> SDET Interview Questions
As we have discussed in our previous sections, SDETs command higher salaries than most of the manual testing roles. In a lot of cases, salaries are comparable to those with developers at a similar experience level.
You can refer here to find out about the range of salaries at different SDET profiles in different organizations. In general, SDET salary differs by experience band as well as organization.
Below is a comparison of SDET salaries for top companies such as Microsoft, Expedia.
|Level||Microsoft ($)||Expedia ($)|
|SDET - I||65000 - 80000||60000 - 70000|
|SDET - II||75000 - 11000||70000 - 100000|
|Sr SDET||100000 - 150000||90000 - 130000|
In general SDET career ladder starts and grows in the following way:
- SDET-1 – Junior level SDET capable of writing automation scripts.
- SDET-2 – Experienced SDET capable of writing reusable tools and automation frameworks.
- Sr SDET – Senior level SDET capable of being an individual contributor like SDET 1 and SDET 2 but is also capable of
- Conducting code reviews.
- Participate in design discussions and make suggestions to have appropriate changes in design.
- Participate in the overall testing strategy of the product.
- Participate in CI/CD delivery models, create execution pipelines, etc.
- SDET Manager – After SDET2, you can choose either Sr SDET or SDET Manager Path. An SDET manager has management/leadership responsibilities as well in addition to core SDET work.
- Test Architect / Solutions Engineer – Test Architect or Solutions Engineer is someone who mostly designs/architects an overall framework for multiple projects, frames test specifications, can also act as a delivery manager. These folks are goto individuals and help multiple projects to achieve their test outcomes and ship an extensively well tested and defect-free product.
Here’s a block-level representation of SDET Career Path:
In this tutorial, we learned in-depth about what is an SDET in terms of the roles and responsibilities, must-have skills, what’s the difference between SDETs and Manual Testers, and what it takes to become a great Software Development Engineer in Test.
In general, SDET is a role that’s in high demand and almost all good product companies have this role in their teams and are highly valued.