avatarDmitry Yarygin

Summarize

Quality Assurance: What do you need to know to become an automation test engineer?

Photo by Tirza van Dijk on Unsplash

Quality Assurance used to have two separate testing profiles: manual and automated testing. Manual test engineers' main task was running regression and new features testing while automation test engineers focused solely on writing code.

The connection between those worlds was rarely a thing except those cases where automation engineers wanted to explore additional test cases to automate.

Today the situation is different. Yes, both manual and automation testing are still important. However, the gap between those worlds is getting smaller. Companies require their employees to have experience in both manual and automated testing.

However, how to start being an automation tester if you don’t have the skills required for that? Thankfully, it’s a problem that is not that hard to solve, but it does require an action on your part.

There are 3 main elements required to be a successful automation test engineer. It depends from role to role and there might be additional requirements, but those are the core.

Programming language

You need to know a specific programming language to become an automation test engineer. Everything depends on the role you are applying to, but most of the time knowing popular languages such as Java or Python would be enough.

You don’t need to be a developer with many years of experience, but you to have enough knowledge to write automation scripts. What you need to know is the foundation of OOP languages and for Java, it would be:

  • Classes, objects, and methods
  • Inheritance
  • Strings, Integers
  • Interface concept and how to use it
  • Polymorphism
  • Arrays (single and multi-dimensional)
  • Override and overload
  • Access modifiers
  • Date class
  • Role of constructors

Those concepts would be enough to start writing automation code.

Unit testing framework

Next thing that you need to know is a Unit testing framework. Before we go further, let’s ask Wikipedia what Unit testing is:

In computer programming, unit testing is a software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine whether they are fit for use.

The goal of the unit tests is to verify that specific blocks of code are working fine and the values that it produces matches the expected results. I would recommend starting with those unit testing frameworks: TestNG and JUnit. Both are very similar, but TestNG is more powerful in terms of modern capabilities.

Why do we need to perform Unit testing and not focus solely on UI testing? Two main reasons for that are:

  1. Allows to find bugs earlier
  2. Reduces overall costs

There are more reasons, but the main point is that UI testing requires running low-level checks that under the hood your application behaves correctly even before UI appears.

What do you need to know to start building Unit testing framework:

  • Build management tools (e.g Maven / Gradle)
  • Understanding test annotations
  • Managing tests (using XML file) and Groups
  • Parametrization
  • Helper methods and Utilities
  • Listeners
  • Report generation

UI Automation framework

Unit tests allow us to verify that the modules of our application are operating properly. But we also need to verify the application from end-user standpoint.

To do that we need a UI automation framework. There are plenty of frameworks available for each specific task, but let’s discuss the typical sequence of actions to perform when creating a UI testing framework:

  1. Creating a new project in your favorite IDE
  2. Setting up dependencies in a build management system
  3. Creating a base class for the framework
  4. Setting up global properties for your project
  5. Implementing the page-object model for your project
  6. Writing test cases for your project
  7. Grouping your test cases
  8. Wiring up a tool for generating reports and screenshots for failed test cases
  9. Running your test cases efficiently by using an automation server (e.g Jenkins)
  10. Analyzing the result of executed test cases

Conclusion

After the framework is finished it needs to be constantly maintained, especially if the application is developed in an Agile company. You need to know the correct test results rather than deal with problematic automation framework.

The specifics of writing a UI automation code would depend on a platform (e.g mobile or desktop) and other factors, but this is basically what you need to focus your attention to.

Hopefully, this article would make you understand better things that you need to learn to switch to be an automation test engineer.

Software Testing
Software Engineering
Software Development
Automation
Automation Testing
Recommended from ReadMedium