When I first started out learning about test automation, I jumped at learning Selenium. I had no idea what Selenium was and how to use it so I picked a course on Udemy and started learning how to use Selenium using Java. I could follow along and was learning how to use Selenium but since I had no goal in my mind and no plan of action, my approach wasn’t effective. I kept skipping a few videos thinking they were not important. Soon I was bored.
I thought test automation was just about learning an automation tool but it’s so much more than that. It’s not just the tool I needed to learn but concepts, approach, process, best practices, frameworks and development methodologies as well.
1. Automation Concepts: You need to increase your technical knowledge. Focus on automation first, that will include why we automate? How we automate? What to automate? Test automation frameworks, Automation pyramid. How should you do this? Ask for help - There’s Google, developers whom you know or work with, automation staff in your company/client and my blog of course.
3. Automation Tools: I’ve chosen to go with Selenium WebDriver because its free and open source. Since you’re learning how to use a tool, you will want something that is easily accessible. Selenium is a browser automation tool and is used for GUI tests. SoapUI is a tool which I’ll be using for API testing.
4. Functional Testing Best Practices: Most of you already have this one. There may be times where you need to write test cases. You may be handed over a regression pack to automate and knowledge of functional testing will help you identify well written test cases and since there’s no 100% automation you will have to run some of the test cases manually.
5. Structured Query Language (SQL): You may already have used SQL as a functional tester, if not you need to learn SQL. Reading data from databases is mostly what you will be doing. But having a basic knowledge of CRUD (Create, Retrieve, Update, Delete) operations and the different types of databases will be vital to you as an automation engineer.
6. Version Control: Test automation code needs to be maintained and version control systems like Git and Subversion help with this task. Version control has many benefits like storing code, reverting to previous versions and backup. I will experiment with Git and Subversion to see which one fits my needs the most.
7. Continuous Integration: Continuous Integration (CI) is a build automation process. Developers check in code into a shared repository and the CI server creates a build, runs unit and integration tests and deploys the build. The same concept is applied to test automation code as well. I will be using Jenkins as my CI server.
I know I will not be able to master all these technologies before I move into test automation but the goal isn’t to master them rather to learn enough to do something useful. Consider Pareto’s Principle in this case, learn 20% of the technology which you will use 80% of the time.
I’d like to conclude by saying start by learning automation concepts and learn the basics, the rest of the items on the list will follow. This post was about “what to learn”, I will create a “how to learn” tutorial series for each of the items on the list.
Do you agree with my list? Have I missed out something? I’d like to hear your feedback on this post. Thanks for reading.