Let’s have a look at what is on the agenda. QA Engineer is wanted!
On the one hand, everything is clear; you need a person who can test a software product. On the other hand, this is a much more comprehensive concept, which includes a wide range of skills. Very often, under the job title of a QA or a Tester, a whole spectrum of requirements may be hiding, for example, specific technology (Selenide Tester) or level of expertise (Senior QA Engineer).
Indeed, in small companies, you can meet a multi-expert, while big companies often use a detailed separation of roles. It helps to point out the experience and qualifications of team members.
Take Google as an example. They adhere to the strategy of blurring the lines between the roles of the developer and the tester. The company presumes that a coder is able to test its piece of code by himself; the tester is providing only the necessary infrastructure.
As we can see, software testing roles appear in a wide range of job titles. Some of them execute test cases without using any automation tools. Others, with the knowledge of programming languages, write autotests and create automation frameworks or other testing tools for the team. However, nowadays, we cannot deny the range of titles is getting bigger every year.
In this article, we introduce to you 6 Software Testing roles and their duties.
1. Software Test Engineer
Core function in brief: test the overall system using appropriate testing techniques and instruments.
Software Test Engineer is usually a very general term that unites many specialists as in ad hoc testing, so too in security testing, for example. However, as we decided to differentiate 6 roles, by STE, we see rather a person who rarely works with test automation. Even though automated testing is getting more and more popular today, it is not able to completely replace a person. For example, some test scenarios may be unjustifiably expensive or too long.
A tester finds system defects and brings the results in accordance with the objectives of the project. In the field of its competence, falls:
- writing a test plan (a document that describes and regulates testing tasks, as well as relevant techniques and approaches, strategy, areas of responsibility, resources, schedule, and key dates);
- creating test cases (description of steps, specific conditions, and parameters necessary to verify the implementation of a tested function or part of it).
After bugs are discovered, they should be passed on to other departments in a test execution status report or via a bug tracking system, for instance, Jira.
- Awareness of software testing (check our previous article);
- Experience of working on Agile/Scrum projects;
- Ability to create good test documentation;
- Excellent analytical skills;
- Technical skills (basic SQL, XML, web development, ability to work with schemas, build and run requests).
- Functional testing of applications including new-feature testing, GUI, back-end, regression, and compatibility;
- Verification of Functional Specifications;
- Writing test cases in search of system errors.
Surely, we are not able to mention plenty of tools that exist nowadays. We just tried to highlight those which seem to be interesting as an extension to web proxies, simulators, and so on.
- Project management software (Hygger or Jira);
- SQL clients to connect to the database;
- API testing tools (Postman, SoapUI, Katalon) for automated checks. They offer predefined snippets to speed up API testing eliminating the need to code.
Now we are slowly moving to the next role — Test Analyst. In most cases, Senior Software Tester is fine with this role. Let’s see what the difference is.
2. Test Analyst
Core function in brief: identify test conditions and features to develop test scenarios and documentation.
In this position, it’s important to have more than technical background; you should understand the business environment. Test Analyst is engaged in static testing of requirements. He/she checks how complete, unambiguous, consistent they are, delivers the product research, makes a logical map of the product, breaks a software product into components, and prioritizes testing stages.
- Common understanding of test process and test design techniques;
- Business-relevant experience;
- Knowledge of automated testing.
The work of the Test Analyst concerns various stages of testing: from test design to its execution.
- Development and execution of testing for diverse projects;
- Identification of opportunities to apply automation or other tools;
- Construction and documenting of test plans and test cases/scripts;
- Reporting issues and results, researching and identifying root causes as appropriate;
- Suggestions for improvements.
A number of tools are specifically useful for analysts working with large volumes of data; for example, tools for automated data processing, test data management, or test design, like Agile Designer or Hexawise.
3. Test Automation Engineer
Core function in brief: develop scripts to run automated tests.
By test automation, we understand a set of techniques, approaches and tools, allowing you to exclude a person from the execution of some tasks during testing. It gives the ability to perform test cases, in principle, excessive for a person due to their complexity, speed, or other factors. Moreover, automation means the collection, storage, analysis, aggregation, and presentation of colossal data volumes in a form convenient for human perception. Automated testing saves Test Engineers from routine work and helps ensure product quality before launch faster.
The main principle of any Test Automation Engineer is to make the testing process as independent as possible at a minimal cost; in other words, to optimize testing properly.
Here testing frameworks come to the rescue. A testing framework is a set of guidelines or rules used for creating and designing test cases. It provides many things that you, in most cases, would have to write from scratch. After creating the framework, writing tests boils down to a simple compilation of the sequence of steps that flow into test scripts. To reduce time consumption, use frameworks.
This position is 80 % identical to the Software Test Engineer’s position, but with a focus on automatic testing. Among the required skills, there is knowledge of programming languages, like C#, C++, Java, Python, and experience of working on particular platforms (web or mobile apps).
- Designing and developing test automation scripts;
- Using test automation guidelines;
- Identifying problems through testing;
- Staying up-to-date with the latest industry developments.
The most demanded on the software market automation testing tools are Selenium, TestComplete, Katalon Studio, and Ranorex. Among off-the-rack automation frameworks are Serenity BDD and Cypress. It is also worth paying attention to specialized tools for testing API applications and applications based on Аndroid and iOS.
4. Software Development Engineer in Test
Core function in brief: develop tools to support testing or other functions, perform low-level testing.
For the first time, vacancies of this kind appeared in large corporations such as Yahoo. He/she knows how to write code, and knows how to think about conducting the tests. He/she also provides a second opinion, which improves the quality of tests and code. All this sounds interesting and tempting — perhaps you already want to become a Software Development Engineer in Test.
Technical skills are fundamental here; therefore, an SDET is a Test Automation Engineer with a strong technical background. Among the requirements to such a position, you can find the following:
- Knowledge of C#,.NET, Java or other programming languages;
- Knowledge about various test methods and corresponding tools, like MS Test, NUnit, TestNG, Selenium WebDriver, etc.;
- Exposure to Behaviour Driven Development;
- Ability to find bottlenecks and thresholds in existing code with the help of automation tools;
- Understanding of Object-Oriented Design.
This specialist is required to complete all the tasks that an Automation Tester faces. In addition, he/she needs to be able to create testing tools. It converts into the following responsibilities:
- Collaborating with developers and product owners;
- Developing test automation frameworks and automating test scenarios;
- Knowing and using design patterns where appropriate;
- Setting up the infrastructure to run a test;
- Developing tools to assist manual and exploratory testing.
Usually, a Software Development Engineer in Test uses a range of tools described above.
5. Test Architect
Core function in brief: design complex test infrastructure, select tools for implementation.
The position of a Test Architect is quite rare, and its presence is justified in large companies. This is a Senior QA Specialist; in small or medium-sized companies, his/her tasks are performed by a Test Manager. He/she is responsible for developing the entire testing infrastructure.
- Design all kinds of test architectures;
- Identify strategies in accordance with business goals;
- Manage test data;
- Monitor the performance of the testing function and bring about improvements through insights gained via analysis.
- Coding, management, communication, and design skills;
- Knowledge of the situation in the software industry;
- Excellent QA background.
Test Architect has a rather extensive field of activity; therefore, it is important to be able to use test automation frameworks and tools for CI plus source code management and Application Lifecycle Management.
6. Test Manager
Core function in brief: prepare test strategy, control the testing process and team members.
As for leadership positions in QA teams, the role of a Test Manager deserves particular attention. Most often, this position is in work-for-hire/outsourcing companies. Test Managers have a wide range of work responsibilities, so their actions should maximize the achievement of the company’s goals. And at the same time, in small teams, this role can be executed by Project Managers or Team Leads.
- Develop test strategy, set appropriate standards;
- Control the testing process and level of performance;
- Manage the QA team and represent it.
- Experience on the project and team management;
- Profound knowledge in QA;
- Wide knowledge of testing approaches;
- Analytical and communication skills.
To organize the teamwork and maintain an appropriate level of efficiency, a Test Manager uses up-to-date project management tools (e.g., Jira or Hygger) and modern software tools and infrastructure.
Finally, Full-stack Test Engineer
The role of a tester is evolving and changing along with the growth of the IT industry, giving test engineers more career opportunities. Testers must not only work with code, before it goes into production, but also engage in prevention and elimination of product defects throughout the entire software development cycle. This means increased responsibility in terms of introducing quality criteria and testing approaches.
As testers take responsibility for all aspects of product quality (such as functionality, usability, performance, security, globalization, etc.) and combine various strategies and technologies for testing the application, they can be confidently called Full-Stack QA Engineers. The rich combination of knowledge in the field, technical skills, and testing experience allow them to meet the modern requirements for fast delivery.
It is important to understand that you always have a choice — to be an expert in a certain field with a deep immersion in a specialty or to become a wide-profile specialist. Both are required on the market, as it all depends on a particular company, the principles of team building, and work processes. If you are sure that it is really interesting for you, go for it; there are a lot of amazing discoveries ahead.