1. What are software and hardware systems?
  2. What do QA engineers do?
  3. Is this trade in demand?
  4. What skills do such specialists need to have?
  5. Are there opportunities for growth?
  6. Where can I train to be a QA engineer?

What are software and hardware systems?

As clear from their name, these are systems that combine software (operating system, drivers, utilities, applied and systems software) and hardware (processors, memory drives, data storage, network adapters, controllers, and ports to connect other devices and modules). 

This combination of hardware and software allows the system to solve tasks that are beyond the capacities of a single computer, such as data processing and storage, monitoring and control of various systems (e.g., air ventilating systems), automation of production processes, and more.

What do QA engineers do?

These specialists test the efficiency of software and hardware systems in routine and critical situations – and adjust their performance accordingly.

QA engineers check a system’s performance in various conditions, as well as its physical characteristics and compatibility of various hardware components. There are manual and automated testing engineers. The former work with scenarios that cannot be automated. For instance, they run stress tests or turn off parts of the system in order to test its performance and fail-safety.

Software testing engineers have different automated testing methods in their toolkit: they write test scripts, imitate requests from one service to another, and simulate non-routine situations on actual hardware or virtually with open-source solutions. For example, over 1,000 tests in various combinations are required to test a system’s fail-safety. How will it perform if one of its two hard drives fails? Engineers need to account for this and other combinations and develop testing scenarios that could be reused. This way it is possible to automate testing on different scales within the system: specific units (unit testing), functions of specific services (component testing), and the system as a whole (end-to-end testing).

Photo by ITMO.NEWS

Photo by ITMO.NEWS

Is this trade in demand?

According to the Russian job search giant HeadHunter, there are over 6,000 software testing engineers wanted on the country’s job market – at such leading IT companies as Sberbank, Citymobil, Alfa Bank, Wildberries, and others. YADRO alone has dozens of vacancies for QA engineers, including junior specialists.

What skills do such specialists need to have?

  1. Knowledge and experience of working with Linux operating systems; knowledge of UNIX principles. Thanks to the fact that these are open-source systems, any user can develop a program or change an existing one.
  2. Finally, QA engineers need to know test management systems that help plan and organize the testing process, form reports, and control team work. Experts from YADRO have developed TestY, their own open-source test management system. It can be simultaneously used by several hundred specialists, and its functions can easily be expanded with plugins.
  3. Another useful skill is systems thinking. QA engineers have to see the full picture: not only focus on a particular problem or solve every problem, but also look for other parts that can be affected by this problem.
  4. Knowledge of network protocols, their benefits and drawbacks, and how they transmit data. This can help develop more accurate tests and detect errors in network interaction.
  5. Knowledge of several programming languages and their specific syntax to be able to quickly switch between them. The C programming language is handy for testing firmware for specific devices, expansion cards, and drivers, while Assembler can be used to polish compiled code and read it. For end-to-end tests and automated testing, you will need high-level languages such as Python, Bash, and Go, as well as the PyTest and Allure Report frameworks that help form and display testing reports.
Maksim Terichev. Photo by Dmitry Grigoryev, ITMO.NEWS

Maksim Terichev. Photo by Dmitry Grigoryev, ITMO.NEWS

Are there opportunities for growth?

The field of testing and automation is very similar to software development: QA engineers need to think creatively to make a test that will detect the majority of errors in code. That’s why switching from software to QA engineering and back is a feasible career path. And, of course, QA engineers can grow within their field: focus more on testing automation, manage teams, and become leading specialists.

Where can I train to be a QA engineer?

In 2023, ITMO and YADRO group launched the corporate Master’s program Tools for Software Development and Analysis. There, students with backgrounds in IT learn to design multifunctional tools for developers: new programming languages and compilers, code analyzers, fuzzers, IDEs, debuggers, and profilers. Among other options, graduates of the program can work in software testing or adjacent fields: develop IDEs and compilers, manage QA research, and work as QA engineers, fuzzing engineers, or QA automation specialists.