The Quality Assurance Engineer task is to make sure that the code works as intended, and in all possible scenarios. A QA-engineer is a professional “technician”. He looks for weak and problematic points in the product written by the programmers, finds out if there are other ways to break the product , and together with the developers they decide how to improve the software so that everything could work as originally planned.
On the surface it might seem easy. Put yourself in the shoes of the user, run the software through possible scenarios, and you are a tester! In practice, though, it’s not quite like that. In order to inspect all the bottlenecks in the code written by the programmers, the “interventionist” studies the product and its requirements in detail, and then he develops a system of tests, and only then, in fact, proceeds with the testing process. So, tester is not a correct term to call a QA-engineer. A tester actually tests a product, while the QA-engineer has more responsibilities. They plan and organize the processes which help to improve the quality of the product.
This is the list of tasks and duties of a QA-engineer:
- Review and refine the product requirements with the customer or business analysts
- Development and planning of the testing process
- Creation of test scenarios
- The test process itself
- Problems and bugs detection and fixing (sometimes, a special tracking system is created for this purpose)
- Discussing bugs with developers
- Retesting after the faults are corrected
- Analysis and optimization of the testing process, documentation management
QA-engineer is a specialty at the junction of programming and business analysis. Some believe that this profession is for those who didn’t finish education as a programmer, although there are many cases when developers become successful test engineers . For some of them it’s easier to find faults in the logic created by others than to create from scratch.
The difference between a programmer and a tester is roughly the same as between a writer / journalist and an editor. One creates, whereas another one continually criticizes and improves what has been created. So, it is not surprising that the programmers and the QAs never stop arguing about who is more important. The answer is simple. They both are.
Sometimes, special scripts are created to test the code. It makes sense when you need to test a lot of repetitive processes and scenarios. As a result, the effort spent on creating a script which is tested happens be less than manual testing. People writing these scripts are called QA Automation Engineers , quality control automation engineers. They are developers in the field of QA who need to know programming languages while testers usually don’t.
QA-engineers often grow within the company (e.g., from support engineers). There is a variety of ways to develop further. You can grow as a QA (QA automation engineer, team-lead, department manager), go into programming, get deeper into the product (business analyst), or grow as a manager (project manager, CTO). Anyway, learning new things and constantly broadening your horizons is the most important part of this profession, even if you do not plan to move into different areas.
At the PortaOne educational center, we have no aim to train our students as QA-engineers, but our knowledge will be useful to get an idea what the profession is like, and in the future to become a QA engineer.