One of the areas I love in software development is testing. Specifically, automated testing. When I write an application I always write tons of unit-tests and when appropriate also integration tests and other types of test.

I also help companies introduce testing and test automation to their companies.

I also see that many companies are looking for Automation engineer or Test Automation engineer, or QA Automation engineer.

Let's see what kind of personality traits will help you in this position and do you need to know if you are interested in one of these positions?

Non-Technical Skills

You'll have to be able to have a broad view of the product, products of the company.

You have to be an investigator. Being able to find the source of a problem in a usually large and messy environment.

You'll have to be able to learn about technologies that sometimes have no good documentation. Part of your job might be to actually check how good the documentation is.

You'll have to communicate your findings with the rest of the company. Both with the developer, the manual QA people, and management.

I'd say empathy should be high on the required personality traits as you will need to be able to look at the product as a client even if you don't have a personal use for the product. You also need to be able to think how and why a developer might make certain mistakes creating bug or broken features.

Technologies

There is a very broad set of technologies that are in use in various companies. There can also be specialized tools that are relevant only to a small group of companies. Even in-house technologies that are only used in the specific company.

So I won't give a comprehensive list, but you will get the picture.

Programming language

You'll definitely need to know at least one programming language. Maybe more than one. These days Python, JavaScript (with NodeJS) are popular languages in the field.

In Unix/Linux environment Bash or some other Unix/Linux shell language.

Java, C# .NET are often required if those are the languages used in the company for writing their products.

Perl and Ruby are also still used, but as far as I can tell they are both used less and less.

Databases

In some places you'll need to be familiar with specific relational databases and maybe some non-relational (also referred to as no-SQL) databases.

In any case it is general a good idea to be familiar with SQL.

Version Control

You will have to be familiar with the Software Version Control System (SVCS or VCS) or the company. These days Git is by far the most popular version control system.

You will also have to also know one of the Git server systems. Either cloud-based or local.

You will have to understand Git and the difference between Git, and any of the cloud-hosts such as GitHub, GitLab, and BitBucket.

Bug tracking system

You'll have to understand the concept of the bug and feature-tracking systems. There are many such systems, Jira seems to be one of the popular ones, but the Git servers system also have their own.

CI - Continuous Integration

While running the CI system might be the job of the DevOps team, you will have to be familiar with the concept and you'll have to be able to use at leas one of such systems. The most popular open source CI system is Jenkins that uses the Groovy language.

Travis CI is a very popular cloud-based CI system.

There are many others of course.

CD - Continuous Delivery or Deployment

Another area where DevOps will be heavily involved, but where it will be quite important for you too to have some understanding.

CI/CD

See above under CI and CD.

Testing tools

Containers - Docker

Another area that might be handled by the DevOps engineers, but where you will probably also have to have some understanding is Docker.

Other

  • Experience in manual testing.
  • Good understanding of software testing theory and methodologies.
  • Knowledge in unit tests, integration tests, and data validation.
  • Knowledge of test framework.
  • Skills in diagnosing and solving complex problems and providing detailed technical analysis.