To excel at anything requires consistency, perseverance, and deliberate practice and Test Automation is not an exception – we all know that. Confusion arises when it comes to the topics and skills we try to focus on to excel in this field as a Test Automation engineer. Then, it turns out to be chaos all around 🤯
In the software industry, things are changing and evolving faster than ever before and when it comes to automation, be it for Process Automation or Test Automation, frameworks and tools are springing up like mushrooms after a summer rain 🍄
So, to excel in Test Automation, which tools should you know? Which new frameworks should you explore next?
First things first – learning every framework or tool in the market will be practically impossible. Add to that, the different programming languages you need to know to use them. Yes, you should learn several tools that you need based on context or that will be of actual help to you and fill your automation toolkit, but don’t put all of your efforts into trying to learn every tool out there to become an effective and efficient Test Automation engineer.
For some years now, I have witnessed the gradual movement of automation in software testing and the mistakes made and here in this article, I will try to provide you a few actionable tips (in no particular order of importance) which will benefit you in the long run and will help you to excel in your career as a Test Automation Engineer 🎯
1) Enhance your software testing skills
Let’s agree on one thing first – “Test Automation helps in the Testing of the software product”. You have to have a good understanding of software testing when you write your automated checks or use a test automation tool to assist you. Your testing knowledge will always help you to ask questions, evaluate your application-under-test, and identify associated problems or risks. It, along with your experience, will offer a helping hand to let you know when/what to automate and when/what not to automate.
If you have just started your career, focus on learning the testing fundamentals first. If you have gained a considerable amount of knowledge on the fundamentals, start exploring the vast field of software testing. Read, learn and explore storytelling, testing strategies, risk management techniques, risk-based testing, critical thinking, benchmarking, oracles, testability analysis, cognitive bias, systems thinking, heuristics, mnemonics, 5-WHYs, MBT, FMEA, modern testing principles, reporting, etc. Having extensive knowledge of these topics will not only help you to shine in your career but will also give your thoughts and your mindset another dimension while using automation to help in assessing the products.
2) Learn a single programming language well enough before learning other languages
Test Automation involves coding (including scripting) and trying to become a polyglot programmer is good. Being Test Automation engineers, we should always try to equip ourselves with different programming and scripting languages (both imperative and declarative), based on context and also to stay competitive. But that should not be at the expense of quality and proficiency.
Becoming skilled in a single programming language takes time and constant practice. Most of the languages have the same type of “grammar” (syntax and semantics). So, if you become proficient (if not expert) in single programming knowledge, then learning, exploring, and excelling in other languages will become much easier in due course of time.
3) Focus more on learning Core Engineering Fundamentals
Test Automation is a Development activity. If you ask me to pick a skillset that has helped me grow the most in my career in Test Automation (apart from testing) – without any hesitation I would pick the Core Engineering Fundamental skills (practices and principles).
This encompasses knowledge of Programming Paradigms, Refactoring and Rewriting Techniques, Clean Code Practices, Design Principles, Design Patterns, Prototyping, and Code Quality Improvement techniques. The difficult part about learning these things is that you often will not find them in MOOCs or other video tutorials. You have to read books, articles, and blogs on these topics and re-read them frequently and attend workshops.
Some of the books which I would recommend are “Design Patterns Explained”, “Clean Code”, “Refactoring”, “Code Complete”, “The Pragmatic Programmer” and “Head First Design Patterns”. New tools, libraries, and frameworks will keep on coming but what will stay and help you for the entirety of your career are these fundamental skills. Something worth investing your time in.
4) Understand the problems you are trying to solve and the limitations of Test Automation
Are you spending enough time to understand the problems you are trying to solve using automation? Do you analyze the problems from different angles?
There is an ongoing trend to kick-off automation with the latest, popular, shiny automation tool in the market without actually knowing the problem well and how or why to use that tool to solve the problem in the first place. More often than not, the knowledge of the bigger picture and the vision is missing. Start asking questions like – Will that tool provide enough assistance to solve the problems? Will it be able to deliver value by revealing relevant problems and risks in the application? Does it have the capability to scale seamlessly with growing automation needs?
The tool-first mindset always takes precedence but it is not going to help projects as well as it is not going to help you in your career at an individual level. We have to hone our problem-revealing and problem-solving skills which encompass a bunch of other skills like critical thinking, deep product thinking, researching, and analytical skills, along with our tools knowledge. Those are the instruments that you have to be equipped with.
5) Learn to collaborate well through the collaboration channels
You can be hardworking and talented, but it will be almost impossible for you to excel in this field if your collaboration skill is poor. With most of the work going remote these days, effective collaboration through channels like Skype, Slack, Zoom, and even good communication through source control management tools (e.g. Git) or project management tools (e.g. JIRA, Trello), is of utmost importance. Without this, you will not be able to work towards a common Test Automation goal with your team or with your clients.
A few tips that will help you to enhance your collaboration skills:
- Try to actively read or listen to others and understand what they are trying to say or the message they are trying to convey.
- Don’t assume things and always ask questions.
- Try to communicate more clearly, briefly, and stick to-the-point when you are saying or writing something.
- While collaborating, respect the diversity, background, and testing/automation/coding expertise level of the people and be always respectful towards them.
6) Make it a habit to read testing and programming blogs/articles/books
Most of the time I am self-taught and most of my knowledge comes from these resources:
- Blogs/ Articles
- Books (ebooks, audiobooks, and paperbacks)
- Free video tutorials and MOOCs
- Conference talks
- SocialMedia (LinkedIn, Twitter)
- Pairing sessions
- Code Reviews
The amount of knowledge I get from these resources is paramount. Though initially, it will be difficult for the beginners to filter out relevant resources, the filtering effort will ease out over time. I would suggest you make a daily habit of reading or listening to a topic from different writers/speakers. This will help you to quickly gain knowledge and insights from different points of view. Don’t limit the topics to only testing and programming. Expand your knowledge of DevOps, IoT, Blockchain, AI/ML, Cloud Computing, Virtualization, Containerization, and the other technologies which are gradually shaping the software industry. Also, share your learnings, opinions, and thoughts with the community and help others. We all grow together 🌷
7) Learn automation beyond the UI layer and develop a mindset to automate other repetitive auxiliary tasks
Most of the test engineers start learning automation at the UI layer with a browser automation tool (e.g. Selenium WebDriver) and very few of them enter into the realm of web service layer automation and mobile UI automation. With the gradual adoption of agile, where it is all about getting quick feedback from the automated checks, service layer tests are far quicker, more reliable, and require less maintenance than the UI tests.
So, start learning web services automation if you haven’t already. There is no harm in getting out of your comfort zone and explore the vast world of automation used in mobile testing, performance testing, desktop-based application testing, security testing, big data testing, database testing, accessibility testing, network testing, localization testing, and so on. Also, apart from automating checks, develop a mindset to automate anything repetitive and mundane, it can be related to data generation, data extraction, environment setup/teardown, generating/exporting/parsing logs, scheduling, monitoring, or reporting.
8) Be pragmatic about learning tools and technologies
With so many tools and technologies in the market which have the potential to provide value in testing, you have to be pragmatic in your approach towards learning them. Start exploring and experimenting with different browser automation libraries, web services automation APIs, unit testing frameworks, reporting libraries, CI servers, build tools and package managers, version control systems, accessibility testing libraries, etc.
Choose the ones which fill your context (which may vary). As you can see, the list is endless and so is our learning journey. Though I recommend going deeper to explore these tools/technologies, sometimes you have to be pragmatic and learn things at a surface level. To learn, my opinion will be to pick the tools/technologies which are free and open-source, have a heavy community-usage and good community reviews. If you want to explore one, which has community-driven reusable automation features, is scalable, and can be customized with your code using OpenSDKs, you can have a look at the free TestProject platform.
9) Enhance log reading and debugging skills
I cannot stress enough how important it is to enhance your debugging skills to excel in Test automation. In your work, you will come across a limited set of problems. So, to encounter many more types of issues and enhance your debugging skills, I would suggest you to start picking up and start solving other engineers’ automation problems in your spare time. I love doing this!
Acquiring debugging skills is all about practice. There will be times (and trust me there will be a lot of them) when you will not be able to find a solution to a particular problem, whatever effort you put into finding it. Also, know how to read log files effectively and how to navigate the stack traces. Since test automation engineers spend a big portion of their working time on debugging their code, going through the logs to locate the cause of errors during their test automation run, and analyzing, acquiring these skills will certainly save your time and make you more effective.
10) Create automation frameworks and small applications as side projects
In your work, you may be dealing with a single framework with a limited set of libraries and tools. To expand your knowledge, create frameworks with different libraries and tools as side-projects and test different applications with those. Always follow the good coding practices and principles while creating and scaling those frameworks.
One last tip that may come as a surprise to many of you – start creating applications as side-projects. When you create applications, you research and get to know many things about the technologies that you are using. You will know how data moves between applications, in what formats, how pages get loaded and displayed, APIs receive requests and send responses, data gets stored into, updated, and retrieved from the databases, and so on. Moreover, your programming skill will also improve.
Hope you enjoyed this article 😉
If you need any kind of test automation-related help or advice, feel free to reach out to me through email or LinkedIn.