I’m an automation engineer. I haven’t always been one, however.
Fifteen years ago, I started my adventure as a software tester. Very quickly, I saw the advantages of automating recurring tests (regression tests), and I started to use specialized frameworks like Selenium, JMeter and Postman for test automation. It took time, though, for me to learn how to make the most of these resources.
While my journey toward test automation doesn’t necessarily represent the path that others will take, I think it’s illustrative of the challenges that software engineers face as they learn to embrace automated testing, as well as the strategies they can use to overcome those hurdles. That’s why I think my story is worth sharing. Keep reading for an overview of my journey into test automation.
Where Test Automation Started for Me
2005 - WinRunner
My first steps as a software tester were in finance and banking.
As a young programmer, I was tasked with creating regression tests for the software the bank was using. Doing this, I found out manual regression testing can be boring and error-prone. I asked, "Isn’t there a way to automate this?"
The answer was yes - by using HP WinRunner software (part of HP QuickTestProfessional), which was a functional GUI testing tool that allowed a user to record and playback user interface (UI) interactions as test scripts. Implemented in the software was a proprietary Test Script Language (TSL) that allowed customization and parameterization of user input. For a tester like me, it was great stuff to use, but it had a bit of a learning curve, it was also bound to Windows OS, nothing for Mac, and it only featured record and playback functionality - meaning you had to run the test first and then hopefully the recording went fine. Needless to say, a lot of tweaking was still necessary.
However, I got a taste of test automation and I was hungry for more.
Here is a video explaining more about WinRunner.
2006 - Selenium
At testing conferences, I was introduced to Selenium, a framework - or rather, a suite of tools - for testing web applications.
At that time, web applications were on the rise, and testers needed an automated solution for their regression testing.
Selenium was the answer. It could be used without a test scripting language (as in Selenium IDE), but also has its own language: Selenese, which could be written in multiple programming languages like C#, Java, Python etc. It's also multi-browser and multi-platform, something lacking in the WinRunner days.
Figure 1 shows the components of the Selenium suite:
Figure 1. Functionality of the components of the Selenium Suite (source)
My experience was mostly with Selenium WebDriver, creating regression tests on multiple browsers. These tests were easily scaled up and could be re-used every time.
Selenium is a great software testing framework for web applications, although I found out you had to know your programming languages to work with it. It needs an abstract mind.
Around that time, it became clear to me that the future software tester had to have a mix of functional and technical testing experience, with a broad knowledge of the functionality of the product, and would also need to know how to approach it technically. Seeing where we are today, my vision was not wrong.
Here is a video explaining more about Selenium:
2008 - Apache JMeter
One of the most important kinds of software testing where test automation is required is performance testing, and then (especially) load testing. Load testing is necessary when you have to model the expected usage of a web application by simulating multiple users accessing it at the same time. This is very necessary testing in e-commerce, especially at peak hours.
A great framework for load testing is Apache JMeter.
Here, you see a simple view of JMeter showing the basic features.
Figure 2. A basic view of the JMeter program showing the Test Plan with the thread groups and the WorkBench (courtesy of BlazeMeter)
Apache JMeter is open source, easy to install via command line or plugin, and has specialized plugins with which you can create different steps to add to your JMeter Test Plan. A Test Plan consists of all the actions and components you need to execute your performance test script. There are samplers, listeners, preprocessors, and many other components you can add in your Test Plan to mimic your system under test. These can be placed in special thread groups containing the threads representing the test scenarios.
Before JMeter 4.0 was released in February 2018, you could execute the Test Plan in the JMeter Workbench, but this was dropped in version 4.0 due to confusion from users.
It is possible to do API testing with JMeter. I have also used it just for functional testing, because it created the outcome I needed.
With JMeter, you can create a Test Plan very quickly, but you have to know programming to work with it in an optimal way. Again, an abstract mind is necessary to become a JMeter Pro. Apache JMeter is also usable with the command line, for those of you who prefer the CLI to the GUI..
Here is a video explaining more about Apache JMeter, the Test Plan and the Workbench:
2014 - Appium
After about eight years of working with the test automation frameworks above, another testing challenge came on my path: test automation for apps.
Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It can perform tests for iOS and Android using the WebDriver protocol.
Again, it’s easy to install via command line or plugin.
You can use your favorite test automation tools (like Selenium Web API) and program it in your favorite language like Python, Java, PHP etc.
You can also run it from the command line (Xcode is necessary for iOS) or from Appium desktop.
So, just like JMeter, it meets the wishes of both command line and visual enthusiasts.
I was impressed with Appium, and I still use it today to test iOS apps for my clients.
Here is a video explaining more about Appium.
2017 - Postman
API testing can be done with JMeter, but in 2017, I was introduced to a better tool: Postman. It is a complete API development environment with integrated tools for every part of the software life cycle.
A lot can be said of this tool, but what it offers can be shown in one picture, as seen in Figure 3:
Figure 3. All Postman features for use in the software life cycle (source)
This tool helps me a great deal with understanding and testing the APIs from my clients.
The learning curve is not so steep, and if you know your API, integration tests can be made very quickly, and with results.
Postman is a great tool to perform API testing in an automated way.
Awesome videos explaining Postman can be found here:
Companies Behind the Frameworks
A lot of test automation frameworks are open source. Exceptions mentioned in this article are Postman and WinRunner.
Sauce Labs built their Continuous Testing cloud to provide a hosted test execution, analytics and debugging platform for tests using open source frameworks Selenium and Appium.
Another company, BlazeMeter, ensures its product to be compatible with Apache JMeter. Postman is not open source, but has different plugins and add-ons, which can connect to other software applications necessary for your software life cycle.
These days, test automation knowledge and experience are required for a software tester. Agile development demands continuous testing, and test automation plays an important part.
When I started software testing more than a decade ago, test automation was just starting. My test automation journey began with WinRunner on the Windows desktop. I’ve witnessed the rise of the Web, mobile apps, and now the API, where test automation has played an important role in the QA of these products.
There are fun times ahead for test automation engineers, with IoT and augmented reality/virtual reality knocking on their front doors.
Cordny Nederkoorn is a Fixate IO Contributor and a SaaS content writer/software tester with over 10 years of experience in finance, e-commerce and web development. He is also the founder of TestingSaaS, an online research agency for cloud applications with a focus on data science, forensics, software testing and security.