Organizations are adopting Agile and DevOps frameworks to accelerate their releases without compromising Quality. Test Automation is the backbone of this accelerated software development methodologies. This has led to a lot of buzz around automation. Whether it’s functional, load, stress, or security aspects about testing, testers are taking the help of scripts and programming languages to ease or reduce the repetitive work. Most tiring tasks and responsibilities which range from setting up a test environment and test data to reporting the status of each build are being scripted.
Let’s take help from the State of Testing survey which clearly creates a picture that testing is adapting scripts to automate repetitive work with-
- Functional Testing – 77%
- CI/CD – 50%
- Load/Stress Testing – 41% and many more
And these are rapidly increasing!
First Step: Java Python Javascript??
The first big question: which programming language to learn !! A few years back I had the same question. By the end of this, I will reveal what I chose. If you look at the trend of programming languages to learn, we will find the data which probably is biased by the participants. Majorly the search result ends up with-
- Javascript,
- Java,
- Python
Oh my god!! Which one of these three now ??
Calm down no need to panic; every problem has a solution. Each of us has or had been to a cross junction with a path to the automation world of testing. Regarding the programming language selection let me help you with the following tips which may speed-up kickstart:
- What you have to do?
- When do you have to do it?
- Do you have a mentor?
- Are you equipped with the fundamentals of programming?
- What is the eventual target?
What you have to do?
Automation is multifaceted and it covers several aspects of testing like UI, UX, API, Stress, security. (I have not added unit testing here as it is performed by the developer.). There are a lot of tools and frameworks in each language for testing, say, Postman, TestNG, Pytest, Cypress, etc.
Scenario 1: Automate APIs for branch testing or ASAP
Solution: Postman.
Why?
- Lower learning curve
- Preset examples for a quick assessment
- Easy to use UI/UX
- Quick Results
- Good community support
Scenario 2: Automate APIs for regressions and CI/CD test suite
Solution: Frameworks like Pytest, TestNG, and Cypress.
Why?
- Test Data management easier with frameworks
- Eases Reporting.
- Can get support from developers if get stuck somewhere(the best part)
- Community support
Scenario 3: Automate API for assessing the reliability
Solution: Locust, Gatling, Jmeter.
Why?
- Support for features to alter the requests time
- Requests per minute can be altered
- More insights regarding the uptime, throughput, etc
Assessing the requirements will help to choose the best-suited solution and save a lot of time later as the per saying “A stitch in time saves nine”
When do you have to do it?
This is the hard part; finding time from your busy schedule. As a starter you can invest the time immediately after starting your day or time just after lunch; basically whenever you can squeeze some time for self-improvement. Managing time is crucial in two ways:
- Kickstart the idea
- Continue the idea
Here, the idea being your interest in automating. Most of us initiate the process, get the requirement, and even set a POC but soon after that it is lost in time. In fact, I was also stuck with such a situation in my initial days while switching to scripted testing. I had created my first collection in postman which was covering the sanity tests for a feature which could have taken around ¾ of an hour if I did it without scripts but with scripts it took 5mins. So I ran it every time the code was given for testing. Approximate stats for understanding:
Action/Solution | Without Scripts | With Scripts | |
Initial setup | X | X + 60min | One time |
Adding tests | 30min | 40min | One time per feature |
Execution | 45mins | 5mins | Repetitive |
With just 4 times of testing time saved: 30 + 4*( 40) – 60 -40 – 4*5 = 70 mins |
That’s more than an hour to invest in oneself from the busy schedule one has. I think you could see how scripting helps you script more and more. And with more scripts, you save more time. The stats may be a little rounded but the gist is the same.
Yay !! No more “no-time” excuses.
Do you have a mentor?
Having a mentor is not a necessity but rather a luxury. A mentor would help you to accelerate your journey exponentially. Without a mentor, you will still be able to achieve your goals but can turn out to be a little challenging. You can always leverage online communities like stackoverflow to find solutions from professional and enthusiast programmers.
The term mentor rings an image with glasses and serious-looking personnel but surprisingly for you the mentor can be anyone in your team, your office, your social connections anyone. There is no mandate to ask your senior to mentor you; personally, I had asked a developer in my team to be a mentor for me. The mentor in this context is not a person who is going to guide you to solve your challenges but rather a face in which you are comfortable asking dumb questions openly. In this era of information; everything is available online but the mentor may guide you to the location where you can find the solution faster.
From my experience, I am pretty sure any enthusiast developer will be more than happy to help you. This way of mentorship promotes in both directions, you both will have an understanding of the other field. So it’s a win-win tip.
Are you equipped with the fundamentals of programming?
We all have been to a position when for some reason we may have to park the programming aspects for the time but this is the best time to brush up on those. If you like to learn new languages then do not worry brushing up on earlier learnings will only be helpful as most of the concepts and logic are almost the same across languages; it’s just some features that get changed with each language. If you already have learned to program then learning a new one is way easier than the first time. When you are learning a new language; try to exploit the special features that language provides, say for example if you are learning Python then exploit its multi-threading and multi-processing.
What is your eventual target?
When someone asks where do you see yourself in 5 years, then it may be easier for developers or managers to answer but with testers, it is a little complicated as there is no single career path for us. This is the moment when having an edge with scripted testing expands the possible fields of growth and as we all know the more the merrier.
With your current role and responsibilities you might see your Plan A getting nearer everyday. And with a selection of programming languages, you would be able to make a Plan B or Plan C. With respect to your target responsibilities you can prioritize your learning. Say if you want to be a part of Machine Learning then Python/R may be a better solution. Similarly, if you want to be a test environment engineer then Go language would be a good option.
There are multiple catchphrases floating around the testing community and the biggest one is that without automation or scripting you are not going to grow in a career which is completely absurd. There are fields of testing which are not practical to achieve via automation example UX testing, but with the knowledge of any programming language, you are expanding your options to explore.
Scripting can expand your capabilities as a tester and resolve common challenges faced in the fast-paced world of software testing. Scripting can take your career to the next level. Start small, find some good resources/courses, and practice regularly. Implement what you learn in your day-to-day work to eliminate boring and redundant tasks. Mindset is everything, and all you need is the right state of mind to begin your journey of scripting.
Welcome onboard!
I started my journey with Java for basics, then jumped to Javascript to cope up with Postman. Once I faced the challenges with test data management I moved to Python. Now I am exploring Go. In other words I had switched my selection twice before finalising and currently both Python and Javascript play important roles.
About the Author:
Habin Prasad | Senior Software Engineer in Automation
Habin Prasad is a Senior Software Engineer in Automation at Moengage. He is helping the QA team with platforms and solutions to bridge the gap for Testing. He has exposure to Functional and Non-functional aspects of testing. He also completed ISTQB CTFL certification. A keen interest to explore and experiment drives him. Love to ride, shuttle and cricket.