Making the Transition from Manual Testing to Test Automation
Plenty of engineers have the privilege to code full time and get paid for it without ever earning a computer science degree. In fact, the data produced by the 2015 Stack Overflow Developer Survey showed that nearly half of the developers that responded had not earned a computer science degree.
There are countless routes to getting that coveted coding position. Just remember that where you start your coding journey can and will eventually lead to different career opportunities and resources.
A very effective route towards a coding career involves making the transition from manual software tester to automation engineer.
What Is QA?
Most tech companies employ a variety of software testers in their respective quality assurance departments (QA). Software development is a tricky process. When new features are added to an existing coding base, it will often not work as described or will, possibly, cause bugs in other extensions of the product.
QA and testing analysts spend their time using different methods of testing in order to identify defects. Not only do they search for bugs, but also they are responsible for testing features of the product in order to suggest improvements that will strengthen the end-user experience.
Larger tech corporations will have entire QA teams devoted to specific products or even specific aspects of a product, while some tech startups might have one single QA team that manages the entire suite of software that a company sends to production.
Although there are countless methodologies and best practices for software testing, the industry can typically be boiled down to two distinct positions: manual testing and test automation.
When I decided I wanted a career in coding, I immediately began my job search for positions in manual software testing. My only experience in the tech industry was limited to sales, but I knew I could learn enough on my own to get through an interview.
During my job search, I read up on SQL and worked through daily practice exercises on SQLZOO.
I began to follow James Bach's Rapid Software Testing blog.
When I understood the difference between a smoke test and a regression test, I started tackling freelance testing projects on uTest's professional testing network.
Eventually, I landed an offer from a local tech company despite my lack of professional experience. I just demonstrated the concepts that I had learned on my own and sold them on the fact that I was a fast learner.
Although I was intimidated, I tried to let my passion overshadow my lack of knowledge.
Many tech companies, especially startups, may not even employ manual software testers. The work is rapidly moving to automation engineers and automated tests.
This makes sense. A few lines of code, backed up by a solid testing framework, can perform the same amount of software tests that would take dozens of manual testers much more time to complete.
Test automation typically involves writing software tests which access a framework that mirrors the actual product being tested. A tool such as Selenium WebDriver or TestStack.White will use the elements written in the framework to automate the browser or desktop application being tested.
Becoming an effective automation engineer requires solid programming skills, but it also has a lot in common with employing best practices as a manual tester.
Make the Transition
When I received my offer, I made it clear from the very beginning — during the initial interview actually — that I eventually wanted to transition from being a manual tester into automated testing. I think this went in my favor because the interviewer saw my drive and respected that I had set specific goals for myself.
My first day on the job, I had an eye-opening discussion with a coworker that had recently made the transition from manual to automation. I asked for her advice, and she suggested that I begin by automating the tests that I was expected to do manually.
By the time she was promoted, she was already writing nearly as many automated tests as the rest of the engineers.
So, this is what I did. First, I had to learn C# and get familiar with the testing tools that the engineers were using. I began to meet regularly with one of the automation team managers. Then I began to automate workflow tests that we typically executed manually each month.
Things moved slowly at first. Over time, I began to recognize the patterns that other engineers had built into the framework, and I began to make some significant contributions! It helped that I already had extensive product knowledge because of my time working as a manual tester.
I learned the most through the feedback I received on the various pull requests I submitted to the team. My coworkers gave me tips on how I could use certain tools and techniques to add more coverage to my testing or make the test suite run faster. They showed me how I could use comments in my code more effectively and also how I could use source control more to my advantage.
When I finally felt like I had my bearings, all of my focus turned to producing results for the automation team that would convince them I was right for the automation position. After I had written 70 passing automated tests on our product, I felt confident enough to request the promotion. I was ready.
Automation Engineer and Beyond
When applying for the promotion, I laid out the dozens of passing tests I had written, as well as the extensive additions I had made to the testing framework. I pointed out that I already had extensive product knowledge. I put all my cards on the table. An offer for my promotion was put together.
This process took almost exactly six months from the first day I was hired. It was gratifying to see the many hours I devoted outside of work coming to fruition. I could hardly believe I was wanted for a coding position when several short months prior I had little to no programming experience.
A position in manual software testing isn’t overly difficult to get, even without experience in the industry. Making the transition from manual tester to automation engineer is a great way to slowly ramp yourself up into a full-time coding job.
Many companies will support you with resources and feedback along the way because it is beneficial for them to have automation engineers with product knowledge and knowledge of testing best practices.
Remember that your progress and learning ultimately comes down to your determination and hard work. You will have to prove yourself.
So where do you go from here? A career as an automation engineer leaves a lot of room for specialization and expertise. It is also possible to eventually transition into a developer position after getting coding experience.
Keep in mind that it can be difficult to get into development after you’ve been heading down the test automation road for a while. Moving into a junior developer or entry developer role can be a substantial pay cut if you’ve been moving up the QA ladder.
Keep at It
Many tech companies actually have a hard time filling automation engineer positions, so this is an excellent opportunity to get your foot in the door, prove your worth, and get paid to code.
The two major things to do are:
- Work closely with other engineers and automation management to learn the tools and best practices that they expect from their respective teams.
- Contribute code to the team that will set you apart and show your ability to learn and execute.
For many of us, just getting the first opportunity can be the most challenging part of our coding journey. Making the transition from manual tester to automation engineer is an excellent path to success.