How to become an SDET(Software Development Engineer in Test)
What is SDET
SDET is an IT specialist who can work in development and testing jobs equally and successfully. In addition to software testing, SDETs participate in the full creation of software. SDET Professional expertise focuses exclusively on software test and development process testability, robustness, and performance. They can also play a part in creating production software designs or in evaluating them.
The following five keys could help you to be a successful SDET.
Go beyond testing
As an SDET you will receive many inquiries from your team. Try to document all you can for your team members in a readily accessible area (I recommend an internal wiki if your company has one of these). You will probably be asked the same question again if you have been asked a question. Keep all your Test Plans, Bug Bug Records, and Function Breakdowns in one place (I like brushing all features in an explanation of what they are doing, happy tracking, and mistakes while using the feature). Enter links to the relevant documentation other people have also produced (tech specs, database schemas, future design enhancements, etc).
Give your team stats. Creation of dashboards to provide bug tracking and quality metrics and monthly reports. Show how many bugs your team has opened. You can help to divide this task or give at least some information into it if you see Developers A has 5 bugs assigned to them and Developers B has none. But also keep note of the wins. Have your team only had a terrific sprint and 6 bugs closed? Show it! Show it! Was there a security vulnerability in your team before the shipment of a new feature? Just call it out! That can enhance the morality of the squad.
Build your scripts and/or tools to improve the efficiency and productiveness of your coworkers, while also benefiting you! Does it take 5 minutes every day to perform a manual task? Machine it! Machine it! Do you require different permissions to create test accounts on the fly? Automate it too! If your co-workers come to you and ask you regularly to interrupt both your and your own workflow, discover a means of automating it.
Be a techie
I read and heard of companies that provide automation frameworks that do not enable manual testers to develop automation scripts with minimal code. You want to automate manual testers to decrease manual regression, but you need not hire a person with sufficient code for writing test scripts. Show you can do more than create scripts for testing! Learn how much you can on the technical side. Here are several things that I have learned that have helped:
- Structure of the code base (example: controller -> service layer -> repository)
- When reporting issues, I examine whether I can discover a bug or a bug on the back-end by using the Chrome dev tool for digging into consoles and network faults.
- Find the code where your problem fails by navigating stash.
If you register a bug and have specifics of which environments, login credentials, easy-to-understand reproduction methods, the error occurring, and perhaps a video or photograph, your engineers are likely glad. But if you can send all that to PLUS, who knows to (FE or BE Dev) assign this problem, the Code Line where it is not in use, and the code’s error message, they can address the bug much faster. After gaining more expertise and feeling comfortable, pull the code and see if you can fix it!
Execute all test pyramid levels
Learn how and where to automate it. In my experience (and also what I have read in the papers/discussed in workshops, though), the opposite of the test pyramid is far more frequent. There are several articles regarding the test pyramid and how it is applied. For three key reasons, I saw this failure first-hand.
- The driving unit test coverage for the functional code was not emphasized
- Two distinct initiatives were developed and QA was not worked together.
- Two different roles were used: manual testers and automation engineers, and only those specific flows were automated per instruction of the management. “Testing technicians” and “Automation engineers.” Slow, fragile, and unreliable testing would be conducted.
To implement the test pyramid correctly, developers and SDETs must collaborate much more closely and I suggest SDET drive the effort.
Call for a lightweight component-based framework that lives alongside the function code (like in the React Test Library), and which is automated (with something like Selenium) in a separate repository before a feature is developed. If the developers of the front-end have to automate RTL testing, go ahead! You can do end-to-end regression tests with both layers and provide the developers with some peace of mind with RTL testing that can run rapidly on each new release!
Make sure both unit testing and integration testing are done at the back end. To help with unit tests, I would not advise you to leave this to the developer, but I would certainly help with integration tests if necessary. Whoever writes tests, SonarQube is set up to monitor metrics. Details on code coverage, security vulnerabilities, technological debt, and more are provided.
Every Angle Thinking
The possibility to think about a product from multiple viewpoints is maybe one of the most distinctive features of being SDET. I’m trying to put myself in every place (end-user, product, design, developer, and tester). How will this functionality be used by the end-user? How would I like it to be presented to me (design) if I were to utilize this? What effects this will have on the company (good and bad) (product). What technologies (developer and tester) will be used to build this up and what will the team members do. As an SDET, aim to provide significant feedback at every level. Build good relationships in your team with everyone. Assist in driving decisions about product and design. Know what feature is created inside and outside BEFORE, so that developers may take a pleasant route and edge situations for development consideration.
Learn about tradeoffs
Maybe the most essential piece of advice, which I always strive to improve, is how to agree that trade will happen. Things in this field to learn:
- Prioritization: It doesn’t really indicate that an issue exists, it will be repaired immediately. The fact is that bugs will just exist, no way to get rid of them entirely. Learn what bugs are needed and when to prioritize. Does it effect a big part of your clients or all of them? Is the efficiency of your software having an influence on your customers? Does sales have an impact? Then that should probably be solved before the stylistic problem that causes the dropdown to seem a bit stupid.
- Flexibility: Have you spent the previous several days preparing documentation, testing scenarios and creating information/organizing a bug bash for a new feature to be notified that a strategy change was made in a firm and this product is going to be delayed? Accept this might occur. Put your best foot forward and move forward. You may drag the energy down if you get annoying, but in times of possible uncertainty you can also be an encouraging voice.
- Workarounds: we constantly need to work for the end-user (and for ourselves) to provide a desirable, well-polished experience, yet problems arise. Whether a client is blocked by a bug, please check if a solution exists to unblock the problem. This should not distinguish us from the final issue fix, but would please consumers if we can unlock them fast. Also, attempt to discover a solution if you are internally blocked. I regularly seen this with low or unstable test settings. Regardless of the topic at hand, the first step should always be to find a means to unblock those impacted, and the second step should be to find a solution to the problem on long term (and to document all the measures done!).
In conclusion, I hope this post has given you some insight into how your business might enhance its testing. I think you may profit from putting these concepts into your everyday roles, irrespective of your title: SDET, automation engineer, tester, quality analysis expert. Happy testing and good luck!