The most often asked question by those who are willing to enter into Test Automation domain is:
Q: What skills a test automation professional should have?
Q: Where to start to develop skills to become a test automation developer?
Q: What tools I should use to automate applications?
There are so many technologies available in the market so it is very easy to get lost. But, don’t get overwhelmed…You can’t be a master of everything. So, the most important question is what you want to achieve?
Your choice of tool will depend on what objective you want to achieve.
Automation testing can be performed on different type of applications:
- Desktop application
- Web Application
- API / Web Services
- Mobile Applications
You first need to focus on one set of skill (say automating web applications). Once you develop necessary skills for your chosen interest area, you can go ahead and move on to next domain. By exploring latest automation technologies available in the market, you will be able to have more breadth & depth and choose best available option to automate ANY application.
What should be your action plan?
You can’t learn everything at once. To develop required technical skills you better have a phased plan:
Phase 1: Developing basic programming & automation skills by choosing a language & some automation technology.
Suggested: Java OR Python with Selenium Webdriver.
Note: You can start with Selenium IDE (records clicks and replay) – it is a great tool for complete beginners to have an idea about Selenium. User can record clicks and then export recorded actions as scripts to one of the many languages (python, ruby, Java) and learn from them. Only recommended as an interim step before moving to Selenium Webdriver.
Phase 2: Develop understanding about DevOps and start using some build management tool plus continuos integration tool.
Suggested: Maven, Jenkins
Phase 3: Learn about concepts like TDD, ATDD and BDD. Explore some tool that supports BDD
Phase 4: Learn about Web Services & API’s and technologies like XML, JSON, SOAP and start exploring some tool that helps perform API & web services automation
Suggested: REST Assured, Postman, JMockit, WireMock, Groovy, Scala
Note: Groovy and Scala are programming languages & both have some built-in support for XML and JSON and provide various ways for building web services.)
Phase 5: Mobile Application Automation. Learn about technologies behind mobile apps. Learn about mobile operating systems such as Android. At this stage you can also start exploring Apple devices & technologies like iOS, Xcode, Swift.
What you can do as Automation developer?
1. Automate applications that have scenarios with repetitive task. (usually your assigned project.)
2. Create utilities/tools to help automate all repetitive & boring stuff that consumes lots of time & effort during your automation tasks (i.e during your assigned project).
E.g. During my recent project I was needed to analyze & merge 10 different excel data sheets . Each sheet had 30+ tabs & each tab with 30+ data columns. I designed a python script that can grab information about all work sheets available in excel workbook. After determining sheets info, it pulls all column names from all sheets. This script can pull required information within minutes that otherwise would have taken hours.
Caution: When performing such task always keep an eye on ROI (Return on investment). The time you spent on automating is valuable. So, only automate any task that is really requires and provides you benefit in terms of time & money.
3. Improve Automated Testing Efforts
Step 1 – Identify processes/practices that should be improved to allow automation team to work more effectively & efficiently.
Step 2 – Identify approaches that can be used to improve identified problems.
Step 3 – Share your knowledge with the team to be able to see the results of your suggested improvements.
Remember: All the times you must be patient, diligent, and curious, to be successful.
Toolset for Test Automation Professional:
Java, Python, VB.NET/C#
Supporting both Desktop & Web Application: QTP (Now known as HP Unified Functional Test)
Web Applications: Selenium,
AngularJS applications: Protractor
API / Web Services: SOAPUI, SOATest, REST Assured (Java Library), Postman, JMockit,WireMock
Behavior Driven Development Tools:
Cucumber, JBehave, Serenity
Mobile Automation Tools:
Appium, Espresso, XCUITest, Perfecto, SeeTest
Mobile Apps Background:
Apple: iOS, Xcode
Android: Android OS ,Android Studio
Popular Automation Frameworks:
Robot framework, Serenity, RedwoodHQ, Sahi, Galen framework, Gauge
Test bench tools: JIRA, Zephyr
Version Control: Git, GitHub, BitBucket
Unit testing frameworks/tools: JUnit, TestNG
There are also some basic concepts/technologies that are MUST to know for any automation developer:
HTML – Defines web page contents. Learn about HTML structure, page elements, DOM, Tags and attributes
CSS – Responsible for Look & Feel of the web page, Learn about classes and how it specify element size, position, colour, borders, etc.
XML / JSON – Used for storing and transporting data.
SOAP / REST – SOAP uses services interfaces to expose the business logic. REST uses URI to expose business logic.
DevOps – Set of practices that emphasize on the collaboration and communication of everyone involved in software development.
Browser Developer Tools – Developer tools offered by Firefix, Chrome & IE that help identify page locators.
Design Patterns – Design patterns such as Page Object Model (POM), Page Factory, Screenplay, Observer, MVC, DSL, Actors.
Virtualization – This is about creating virtual version of anything. Learn about virtualization and how it can help in test automation.
Agile Development & Management Practices – Get familiar with Agile methodology and know how it fits in with test Automation.
Regular Expressions – Learn to compose and analyze regex patterns. By using regular expressions, you can perform certain tasks very easily that will otherwise require lots of coding.
Java: A Beginner’s Guide by Herbert Schildt
Selenium Testing Tools Cookbook by Unmesh Gundecha
BDD in Action by John Ferguson Smart
Cucumber Cookbook by Shankar Garg, Packt Publishing
Automate the boring Stuff with Python by Al Sweigart (https://automatetheboringstuff.com/)
Clean Code by Robert Cecil Martin