article-spots
article-carousel-spots
programs
Hard skills

QA Automation: Testing or programming?

29 Jul 2020

Software test automation is a direction not everyone knows about. Even today, the existence of such a specialization becomes a surprise for many people because traditionally testing the quality of a product was associated exclusively with manual testing. 

How is the test automation process executed? Who will be interested in mastering this profession? What is the minimum knowledge needed to start a career in test automation? 

Mikita Yafimuk (Software Test Automation Engineer) and Ravil Yanbekov (Lead Software Test Automation Engineer) will help you understand the details of QA Automation.

The role of Software Test Automation Engineer on the project 

Ravil Yanbekov: Software test automation specialists have two main tasks. First, they write code to test product areas not available for manual testing. Second, test automation optimizes routine processes and divides time to solve more non-standard and high-priority tasks. Thanks to test automation, the release cycle is shortened, and the product sooner reaches its end users. Accordingly, test automation helps to win the competition. 

In my opinion, the Manual QA and QA Automation professions supplement each other and make the testing process faster, more efficient, and complete. 

Mikita Yafimuk: The tasks of Test Automation Engineers vary depending on the project, but, as a rule, it includes writing new autotests, creating a new framework or maintaining an existing one, analyzing existing tests (regression analysis). Sometimes the responsibilities of QA Automation Engineers include manual activities, such as writing test cases or analyzing requirements. So, for more efficient work, a Test Automation Engineer needs knowledge of manual testing as well. By the way, today, automation on its own is not popular. Engineers who can look at the developers’ code and perform test automation are more in demand. 

Who will be interested in software test automation? 

Mikita Yafimuk: Often people come to QA Automation from manual testing, this is a kind of advanced level for those who strive for further development, begin to study programming languages, frameworks, and are interested in the technical side. 

Ravil Yanbekov: Sometimes developers come to QA Automation, but usually they concentrate either on performance testing or writing automation tools. For example, the developers made a huge contribution to the work on one of the internal tools of the EPAM company—the Report portal. 

Born QA Automation specialist is a …. 

Mikita Yafimuk: QA Automation specialist is a person with attention to detail along with creative thinking and adaptability. For a good automation engineer, it is good to be a little lazy, then the ingenuity in the automation of routine work increases significantly. 

Ravil Yanbekov: QA Automation specialist is a person who sees themselves as a system architect. Unlike developers, who are often limited by the framework of a platform or framework such as Hybris or Sitecore and can only work with the technologies provided by the project, QA Automation specialists are not limited in the choice of tools. The main criterion for their success is efficiency, and they can select the tools based on their own experience. Perhaps such people can be called researchers who like to look for ways to improve the quality of work by combining different methods. 

What do you need to know to start working in QA Automation? 

Ravil Yanbekov: Novice specialists need to know well the core part of a programming language. Usually, it is Java or C#, although the trend has changed recently, there is a need for JavaScript automation, and, possibly, in the future JS will overtake Java in popularity. For now, Java is in trend, so I recommend starting with it. 

You should also know the basics of OOP, have knowledge of the web part, understand how servers and front-end technology along with HTML and CSS work. 

You need to pay attention to the frameworks that allow you to execute tests and generate reports: JUnit4, JUnit5, TestEngine, Jbehave (test runner). 

To understand how to run tests and how to track changes in an application, you need to know continuous integration tools such as Jenkins, DeepCity. 

There are different levels of automation. At the UI level, you need to know the basics of HTML, CSS, JS, and the frameworks that allow you to regulate the end-user actions. A novice test automation engineer needs to pay attention to the web driver, a technology that allows you to control the browser and frameworks built on it, such as Serenity, Selenide (Java stack), or Playwright, Protractor (JavaScript stack). 

When automating at the API level, the Software Test Engineer works with data and needs to know the principles of the application backend. 

To work with database-level automation you should know SQL, and to work with performance testing you should possess application architecture knowledge. 

To summarize, the gentleman’s set of a novice test automation engineer is Java, web driver, Jenkins, TestNG. 

Mikita Yafimuk: First, the future Junior Software Test Automation Engineer needs to decide on the direction, whether they want to develop in testing mobile applications, web, or API. Be sure to know one of the top programming languages: Java, C #, and JavaScript, at the level of key concepts, and master the basics of OOP. It is important to understand how the development process is built. In my opinion, the most important thing for a novice specialist is to start gaining project experience as quickly as possible, and most frameworks can be mastered quickly. 

Resources for novice Software Test Automation Engineers 

Ravil Yanbekov: First, novice specialists should immerse themselves in the technical details as much as possible, pay attention to the technical implementation of a tool, to the possibility of improving processes from a technical point of view, to improve knowledge of frameworks, pay special attention to programming languages.

Middle specialists should pay attention to how the processes on the project are built, see into its nuances, look for possible ways to rationalize, and optimize interaction with other teams. 

Mikita Yafimuk: 

  • Testirovanie.COM by Roman Savin (worth reading when you decided to work in testing) 
  • CS50: Introduction to Computer Science 
  • Head First Design Patterns: A Brain-Friendly Guide by Eric Freeman and Elisabeth Robson 

Software Test Automation specialties are still not taught in any of the universities. If you have a desire to develop in this interesting and promising direction, pay attention to EPAM training programs in the QA Automation specialty.