The SDET Cookbook

Kunal Jor
10 min readJun 15, 2023

--

If you are about to begin your journey in the Software Testing field and have aspirations of becoming a SDET, then you might have a lot of questions like…

  • Where should I start?
  • What all things i need to learn?
  • What should I practice?

And many more questions like that.

Generally when we are surrounded with such questions, we immediately run to our modern day `friend philosopher and guide` .. the Google Baba !

But asking open ended questions to the `All knowing one` will only result in bewilderment and apprehension, since you will be bombarded with plethora of information

Here is an example , the search result for Testing tools used in the software industry

Here’s the good news .. You need not know so much!

To be a good cook you need not know recipes of all the cuisines out there.

What you need to know is right proportion and technique for the cuisines that interest you.

Similarly, to be successful in SDET role, you need not know every tool or technology that is used in the industry..rather identify your requirements or inclinations , focus on the most essentials and understand their application in the right proportion.

This blog will help you with it,

To understand about right proportion , we will break the all that is to be known into 4 parts

Learn — The essentials !!! These are tools or technologies that have to be understood in detail and depth.

Can you learn horse riding from Google? For that you need to go to place which has at least one horse and at least one experienced riding instructor

Same rule applied here..Don’t rely on Google Baba for this.

Take an online or offline course for this one OR go for OJT . You might have to undergo more than one training as well.

Whichever way, learn it from a reliable source/person that can help you understand the nitty gritty aspects of the subject at hand.

Practice- The hard way.. no shortcuts here. This is what cements your learning for the long term. Here repetition is key.

Read About — The good to know.. This is the crusting .. it is about market awareness..about things that make your knowledge well rounded and make your work profile sophisticated

Dabble With — The cherry on top.. Need not go too deep in this.. Just know enough to stay in tune with times

So with this in mind let’s jump right into it

Learn

  • Software Testing Process

You need to understand and study the way software testing is done in the industry.

Why is it required?

What are its goals?

When does it start?

When does it end?

What are the artefacts created or used during this process?

What are the parameters of its success?

The course or OJT that you undergo, make sure that it helps you with finding answers to all these questions

  • Software Testing Types & Methodology

Understand the various methodology used for software testing. Learn about the many testing types. Some keywords are given here to begin.. But this list is not exhaustive. Take guidance from your mentors, also do your own research.

Boundary Value Estimation, Equivalence Partitioning, Smoke Testing, Sanity Testing, Regression Testing, Black Box Testing,White Box Testing, Grey Box Testing, Functional testing, Non-Functional Testing

  • One Programming Language

Yes. To do well as a SDET, it is enough to know just one programming language , but you need to know it well.

Choose a programming language that supports object creation and handling, since Object-oriented programming (OOP) is still the most popular method for writing code in the industry.

Following languages are more in demand in the SDET space

Python

Java

Javascript

C#

Again, the ingredients to be used have to be decided based on the cuisine you are trying to prepare.

So if your requirement/inclination lies in some other programming language then go for it.

Just make sure you are clear with its concepts and application.

  • One Test Automation Tool

There are test automation tools out there that support every programming language. Some automation tools are tailor made for a specific programming language, while some support multiple languages.

It is recommended to learn any one automation tool that supports the programming language of your choice.

The point to note here is that the essential part of learning automation are not the commands used during automation but the automation methodology

Commands can be memorised, also can be referred from the helper docs of those automation tools.

But Automation methodology is the key.

Automation methodology is mostly common across all automation tools. So once you understand that well, switching over to another tool if required becomes easy.

  • One Test Management Tool Or Library

Automation testing is not just about mimicking user actions, it’s mainly about writing tests for the observed outcomes of those user actions.

Test Management is also about managing those tests into various logical test categories and when required having the option to run only a specific category of tests.

So for this , learning about a tool or library that can help you convert a piece of code into a test and group tests is required.

  • Basics of API testing

Today information is available from various sources at the click of a button.

This is possible largely due to the existence of APIs which are the connecting bridge and toll gates between the data providers and user interfaces of various apps and websites.

So for a SDET it is important to learn the basics of how APIs function and how APIs should be tested.

  • Agile Software Development

Most of the Software industry today uses some form of Agile Software Development.

So it is important to understand in its basic form.

Agile Software Development differs from Waterfall approach because here, the whole is broken into parts and the parts are built and tested separately and then assembled and tested again and again in different conditions before the final product is made live.

So this brings aspects of context switching , planning, prioritisation and other process aspects into the foray.

So for a SDET it is important to learn about sprints, planning, estimation, retrospectives and other agile ceremonies from any person experienced in working in teams using agile way of software development.

Practice

  • Coding problems of low and medium complexity

The acronym SDET stands for Software Development Engineer in Test. In other words SDET is a Software Developer who is given the responsibility of testing applications.

So just like any other developer , SDET needs to be good in algorithms and problem solving through code.

So practicing coding problems is a must to hone your skills as a developer.

You can find many good skill development sites online where you can practice these kind of problems. In some the sites, the solutions are also provided.

Some examples are GeeksForGeeks , HackerRank , CodeNinjas

  • Object Modelling & Design Patterns

Since Object Oriented Programming is a de facto standard in the software industry, it is important to understand and put it to regular use.

When you delve into this, you will slowly but surely realise that the problem statement in any coding problem small or large, if read carefully , always talks about certain objects which are interacting with other objects, and the expected result is the outcome of the interaction of such objects under specific conditions.

Once you start visualising these Object models, you will be able to break down large complex code blocks into smaller atomic chunks which are easily readable, more flexible, with less ambiguity and easy to update.

When you focus on the interaction between objects, you will see that data is getting exchanged and processed in some or the other form. So using Data Structures will make this data management and processing lot easier.

On further study, you get to see that some object modelling techniques are standardised as they suite certain type of problem statements very well and help define the system architecture. These are called Design patterns.

All these are basic requirements of Object Oriented style programming method.

After you become comfortable solving coding problems using the programming language of your choice, you can move to this topic.

  • Finding Time Complexity of Code Snippets

It is not just enough to write correct code for a problem statement , it is also important to understand the complexity, because ultimately Time is Money!

Solving time complexity problems using Big O notation or other equivalent techniques will build a sense of how to write code with shorter execution cycles.

  • Creating Test Documents

Although in Agile Methodology there is no requirement for exhaustive documentation, but we need to create documents where necessary.

So that’s why every aspiring SDET should have know ho of the various test documents, so if need arises any such document can be created

  • Automating a website

Automation is the basic skill required for any SDET as eventually, they have to use it to fast rack the testing cycle.

Choose a dummy /real website which has some view and content variation across pages.

E-commerce websites are great for web automation practice.

  • Test Management

Use test libraries to practice writing basic tests, grouping tests , enabling or disabling certain tests, setting priority etc.,

Test Management libraries are generally language specific , so find out the library that supports the programming language of your choice.

Here are some examples ,

For Java — TestNG

For Python — Robot Framework , PyTest

For JavaScript — MochaJs , Jest

For C# — NUnit

  • API testing

There are many free dummy APIs available on the internet which can be used for practice purposes.

Tools like postman and others can be used for making the api calls and testing the response by implementing certain validation rules.

Read About

  • Best Coding Practices

English spoken on the street in England, Scotland, America etc., is very different from each other But still when it comes to communication in an official setting, everyone tries to speak a more standardised form of English language.

This is because, effective communication happens when a standardised form of language is used by the parties communicating with each other on regular basis so that there is less mis-interpretation, and ideas get exchanged quicker and in a reliable manner.

Similarly, Code is the language spoken in the development world.

Mostly there is a team of developers working on a product. So code has to follow certain guidelines to make the process standardised which in turn makes the development effort quicker and reliable.

So a SDET has to be aware about these Best Coding Practices

  • Best Testing Practices

Similar to Coding Practices, there has to be some common standardised testing practices which help with defining a clear and robust process for the testing team to ensure that the testing effort is yielding the right results.

So a SDET has to be aware about these Best Testing Practices as well.

  • QA Ops

Test automation existing in a local machine, no matter how good is of limited benefit to the overall development effort.

Ultimately the aim of any activity done by the engineering team should result in faster product delivery with fewer bugs.

So to achieve this test automation has to be assimilated into the delivery pipeline. This is why SDET needs to know about QA Ops

Inculcate Or Improve

  • Critical Thinking

A software testing engineer’s primary responsibility is to verify the application under test for accuracy and robustness.

To do this, one characteristic that needs to be developed inherently is not to take anything at face value.

Many times requirements look very well laid out, the planning looks proper, developers seem to know what they are doing, testers seem to be doing their job well and yet ..when the developed product goes live, issues are reported.

Why does this happen ?

Possible reasons-

  • Someone somewhere assumed something was right because it looked right.
  • Someone assumed that the people doing the task are qualified and competent so they can’t miss anything.
  • Someone assumed that the requirements capture everything that there is to capture and since tests are traced with requirements , we have 100% requirement coverage and hence nothing is being overlooked.

All these are logical fallacies which Software testers should be aware of and avoid because Software testers are sentinels of quality.

Critical Thinking is a necessary skill for a software tester to ensure that the testing process is robust and thus helping in building high quality products.

  • Interpersonal skills

Wherever there is more than one human being working on same goal, interpersonal skills are required.

Human beings unlike machines have emotions , are not always rational and have responsibilities other than work. Due to all this human behaviour doesn’t follow a consistent pattern and that affects output and performance.

Working on one’s Interpersonal Skills help an individual to understand, empathise, persuade, delegate, inspire co-workers so that the ball keeps rolling, team doesn’t deviate or fall back on the common goal and deadlines.

SDET requires these skills even more than others since this person is at the communication crossroads between developers, business analysts, Devops, project managers etc.,

Dabble with

  • Generative AI

It’s 2023 and the AI revolution has begun!

So while it is still not a mandatory skill to be put on your resume, do try it out and think of ways you can utilise it as a tool to maximise your output and efficiency.

One example can be using ChatGPT to generate test cases for common user flows.

A word of caution.. AI is exciting and it’s the future, but as of now it is still in its early years.. so use it but don’t blindly rely on it.. Always cross check the AI generated content with other sources and against your own knowledge and wisdom.

_________________________________________________________________

Following all the above tips will yield you guaranteed returns in the field of Software testing and set you on the path to become a market ready SDET!

--

--