9 must have essential skills an every sdet must posses

9 Must have essential skills for every SDET

Mukund Billa
8 min readSep 23, 2019

--

Are you thinking to become a “Software Development Engineer As Test” in short “SDET”. SDET is a term coined at Microsoft for employees who were into development but also participated in testing. Currently, most of the organizations are demanding SDET for their agile projects. SDET is a person who participates in the development, write test script and tests it with them and also fixes bugs as part of the process. This saves a lot of testing cycles which would earlier take more time. It doesn’t matter from which background(dev, or testing) you belong to, Mostly people from the testing background who have good technical skills are moving towards SDET roles.

One of the major reasons to be SDET is an increased demand and good compensation that companies offer to an average experienced employee. The demand will subsequently grow over the coming periods and most of the organization will hire them.

If you also want to be one of them then you must check out the below essentials skills to have:

  1. Programming language: You should be familiar with at least one programming language(Java, Javascript/ES6, python). A programming language choice doesn't matter if you build the strong foundation concept of programming. This can be functional, OOPS concepts, threading, collections framework, algorithms, etc. You must familiarize with the concepts and should have thorough practice. Once you have a good piece of knowledge on any language, you can apply the same fundamentals on another language. I personally would recommend people to learn python as it is both functional as well as an object-oriented programming language and is trending for machine learning.
  2. GIT: Git is a DVCs(Distributed version control system) system which is currently the best open-source version control tool for programmers to share their projects and collaborate with others. It has multiple features which were not available in earlier systems like the full snapshots available with clients. Git has three states in which it stores the files and every operation you perform are first performed locally like commits which earlier systems needed internet connectivity. The main force of GIT is its storage states where files reside e.g. local, staged and repository.
Working tree, staging area, and Git directory (source: git)

The below steps will help you to visualize the basic process of git workflow:

  1. Initially, one will create a git repository and clone it to its local computer
  2. Once cloned the project, any changes made to the files are stored in the modified state.
  3. These modified files can be selectively added to the staged state so they are available in your next commit changes.
  4. Once, staged the files you can perform commit these changes with the comment(the reason for commit). These commits are recorded into the commit state which is pushed to the .git repository. These commits can be rolled back individually using the commit id.
  5. Post commit, an individual can choose to merge with other branches so the changes are available at different branches. This is extremely important if an individual is working on a hotfix for which changes needs to be pushed to different branches(master, dev) of a working repository.
  6. If there are any conflicts observed during merge, an individual needs to solve them manually so the changes are merged without any loss of existing code.Once these conflicts are resolved an individual can commit these merged changes.
  7. After everything is merged and committed, you can push your changes to the network repository. All the changes prior push were happening within the local repository and doesn’t need any connectivity to the network repository.
The basic workflow of GIT repository

To learn more about GIT you can download the ebook here.

3. Automation Frameworks (Mobile/Web): Automation is booming in the industry and every organization is looking for a tester who is having good knowledge on automation testing. Automation frameworks help SDET to automate most of the daily task which is a time-consuming or manually difficult to perform. Currently, there are a lot of frameworks available to automate web and mobile and most of them are open-source with the good community to support. As of now, Selenium and Appium are the tools of choice for every organization to automate their manual test. Also, there are good numbers of commercial tools which are developed on top of them to provide customized solutions for their clients. There are cloud platforms available to run your automated tests on different devices with different configurations which are hosted on their cloud infrastructure like sauce-lab, browser-stack, etc.

I have written an article on recommended libraries required for developing a customized automation framework which is available here.

To learn more about selenium and appium, please click on them.

Selenium Webdriver support for different browsers

4. API: API makes systems communicate with each other, transfer data between them from client to server. Most systems are now using API’s for every operation as it segregates the UI, data and business logic. Also with the advent of API, systems are able to access services of other systems. This makes the system more complex and dependent on other systems however it is very important to use API’s as it removes the need to reinvent the wheel for services which are already developed and available. As SDET is also been part of a development team, they must be aware of API’s and learn how to develop and use them. In order to learn about API, they should have good understanding of the HTTP protocol like its HTTP Methods(get, post, delete, put, etc.), HTTP headers, cookies, etc., API’s are categorized into two viz. XML based soap services, JSON based Rest Services. An SDET must be familiar with XML and JSON format and must learn how to parse them. Also, to test them an SDET can automate the API using the libraries available for testing.

Application API’s serving multiple clients

5. Database: Database stores the information which is available from/for the system/applications. As we are living into the information age there is a vast amount of information flowing over the internet and, with huge information the traditional databases were becoming weak and had performance issues. To store, process and analyze this huge information a NoSQL database management system is developed which uses a different approach for storing information to provide high availability, scalability, and performance. Companies like Facebook uses a NoSQL database to store all their customer's information. So an SDET must make himself/herself aware of the traditional RDBMS and the latest NoSQL database management systems. I would recommend people to learn MongoDB as it is one of the best open-source NoSQL databases and being widely used in modern applications.

6. Performance: Performance testing is one of the key skills an SDET possess, Every component/services developed has to undergo a performance test. An SDET eventually tests the components he is responsible for and also the impacted components which are being used by his service. An SDET must understand the key terminologies of performance testing like SLA’S, KPI’s correlation, throughput, response time, baseline, stress test, etc. An SDET with performance testing skills will have an added advantage over others. One of the best open-source tools that we can use is JMETER which is being developed and actively managed by Apache.

Jmeter is one of the best tools available to do performance testing of a wide variety of applications/protocols/servers. They have support for plugins which can be developed as per custom requirements. It also provides assertion capabilities, code injection using groovy/BeanShell language, parameterization, correlation, etc. This not only supports performance testing but also stress tests, distributed testing which can be used to design a holistic performance test approach.

To learn more about Jmeter you can click here.

7. Unix/Shell Scripting: Big Companies still uses UNIX based platform for their server be it like centos, ubuntu, etc. Since connecting to these servers are mostly based on a secure shell, or telnet, An SDET must be aware of the basic CLI commands which can be used while working. Also, it would be good if they know how to write shell scripts to perform a setup/cleanup activity for project builds which can be integrated later with CI/CD tools.

8. Jenkins: Jenkins is an open-source CI/CD tool which can be used for building, testing and deploying applications on the required infrastructure/server. It provides a lot of plugins which can be used to perform a specific activity. It uses CRON timestamps for scheduling jobs. Jobs typically run using pipeline which is an automated expression/code of a business process. Jenkins helps an organization to perform a continuous integration of code and delivery of product using these pipelines. To achieve this, Jenkins uses a plugin for every task it performs. One of the examples is the GIT plugin where the scheduled job gets automatically triggered if there are any check-in happens in the remote git repository’s branch. This job runs on nodes(Jenkin agents) which are configured in its pipeline. As an SDET one must be aware of the configuration of a Jenkins job and he must leverage the capabilities of Jenkins to build projects, trigger automation testing, deploy successful builds and more.

Jenkins (Source: Edureka)

9. Docker: A docker is a tool used to containerized the applications so that independently they are easily scalable and deployable. Docker uses container images which includes everything needed to run an application: code, runtime, system tools, system libraries, and settings. The container uses the host OS on which docker engine is running which results in higher efficiency and less server cost. This, in fact, is biggest difference with respect to virtual machines where each virtual machine needs a Guest OS and other resourcing which makes it less efficient in terms of space, boot-up process, or scalability.

As an SDET one must understand the docker images, which images they need and learn how they can leverage it for building services/automation testing. An example would be setting up docker images for building Selenium Grid infrastructure and use them to perform parallel testing in different browsers. Another example would be scaling the microservices which may need to migrate from one cloud infrastructure to others. Docker fits in it without much painful efforts and with bare minimum simple commands. To learn more about docker please click here.

This sums up all our essential skills an SDET must posses, Please start learning these skills to become an SDET.

Please do share, clap the article if you found it helpful.

--

--

Mukund Billa
Mukund Billa

No responses yet