Quality assurance is a term used to signify a practice aimed at preventing mistakes in products and services, but the term or the abbreviation often refer to the person in charge of it, so instead of quality assurance manager (QAM), you may hear people talking of quality assurance when describing a job profile. This position is often considered to be synonymous with the position of a tester, but there are significant differences.
Saying that tester and QA are the same, is just like saying that a developer and an analyst do the same job, or that a paralegal and judge are two words to describe the same position, just because both are dealing with legal matters.
Testing is an activity. Anybody can test. Sometimes testing is just using a product, while QA requires a strategic approach to testing in the sense of planning how, what, and when to test.
Imagine that you're good at cooking and that you can prepare tasty meals. Given that you cook for your family and friends, does that make you capable to run a restaurant? Could you plan and design the menus, source the supplies, monitor the food and the service, train your staff, build brand awareness, know which dishes would attract new diners and so on? The ability, or knowledge how to cook and the passion is just a small, albeit an integral part of a much more complex and dynamic process that is running a restaurant. To be a successful restaurant owner and manager you need to be able to plan things strategically and execute them tactically, and perhaps most importantly, know how to handle the pressure. Same applies to quality assurance, testing is just one, although perhaps the most important part of it.
Let's call things by their name
Somewhere I read the following phrase and it really caught my attention:
"A Tester is responsible for finding failures, but a QA not only finds them but helps to prevent them."
Without going deeply into the tasks performed by each of them, this may be the best way to describe the distinction between a tester and a QA. After reading various definitions of the two positions, I find this to be the simplest, yet most accurate way to describe them:
Tester: a person in charge of testing software during its development phase in order to detect bugs and report them.
Quality Assurance Specialist: a person who performs a set of activities in order to ensure the quality of software during all phases.
The key difference is that the QA is interested in the process while the Tester is interested in the product. The difference may seem subtle, but it is rather significant. A QA is a lot more goal-oriented and is always concerned with the bigger picture.
The evolution of Tester to QA
We can safely say that a QA can and often does perform all tasks that a tester performs, but a tester cannot perform all tasks performed by a QA. I would even say that quality assurance is a tester who excelled at their position and moved on to reach the next level. Yes, the tasks are different, but there is one thread that unites them - they all contribute to the quality of the project, which in turn improves the quality of the product, and that’s the main objective. The job of a QA is a complex one and it would take another post, as long as this one, to describe it in full, but these are its most important aspects:
A QA collaborates in defining the product, assisting the product owner to define acceptance criteria. The QA may even define the acceptance criteria singlehandedly. This role is very important for two reasons:
The QA is usually the one that has more direct experience and view of the product and therefore can contribute most when defining certain requirements.
Well-defined requirements help avoid misunderstandings when it comes to communicating with the developer(s) and this, in turn, prevents potential defects.
It starts with the definition of steps of continuous integration, proceeding on to the configuration of tools and finally the creation of jobs, and QA plays an integral part in all of these steps of project development. If you have solid continuous integration, paired with effective automatic tests, you will lift the quality of the project as a whole, it is as simple as that. Good QA makes things run faster and detects defects, but most importantly avoids them.
Many of the tasks that are nowadays done by QA were considered to be system tasks in the past. However, these tasks are tightly linked QA as they help the person or the team in charge of QA to do their work better and as fast as possible. To put things into perspective, these tasks that I speak of can be linked to creation and configuration of environments, a configuration of tools, installation and more, depending on the nature of the project in question.
That being said, testers and QAs work together on projects and it is not fair to say that the latter is better than the former in any way. It is fair to say, though, that in the near future the number of testers will be in a decline as people who work with software quality will have an applicable skill set and knowledge that will enable them to complete more complex tasks, i.e. the tasks of a QA.