Very often I hear people say "Quality Assurance" while talking about "Testing" and vise versa. According to my understanding these two terms mean different things. Could anyone explain the difference? Or they really mean the same?
These two terms are often used interchangeably but this is wrong understanding of their meaning.
Software Quality Assurance is a set of processes/practices which aim to assure high quality of the product. Testing is only one of these processes. QA consists, but is not limited to, design, architecture, coding standards, code reviews, testing, change management, configuration management, release management, audits, etc.
Testing sometimes is the only area where quality assurance is implemented consciously, and this is probably the source of wrong understanding of the terms. If you wanted to use other term for testing it would be quality verification, not quality assurance.
In short: quality assurance is implemented all over the production process while testing is only one of stages of it.
'Testing' is an activity to assure the quality of your end result. Hence it is a subset of Quality Assurance.
So 'Quality Assurance' are all activities you planned to to to make sure you deliver up to the quality standards you decided upon at the start of your project (= Quality Planning). Another activity could be peer code reviews for instance.
Quality Control finally = the act of monitoring the results off all those activities (like testing eg test coverage, # tests passed, # bugs, and initiating corrective actions when necessary (like bugfixing)
Hope this is clear.
Testing is something that is done to check the level of quality. It CAN be thought of as quality assurance or quality checking.
But the process of assuring that a deliverable meets a certain quality standard is something that needs to be built-in directly into the project itself. You can't make something quality at the end, you can just catch the defects and try to remediate.
Quality is planned (like meeting requirements).
Quality Control (aka testing) is checking the product after it comes off the production line.
Quality Assurance means making sure that the processes and inputs to the production line are correct so that only good products come off the line.
The slogan "you can't test quality in" can be demonstrated with the following manufacturing examples:
On assembly line A, every product coming off the line is 100% defective. If QC is doing their job correctly, every item off the line fails testing and nothing gets shipped. When QC screws up, they'll let defective products get shipped. QA would not sit at the end of the line and test everything, QA would shut the line down (since the line is producing 100% defective items) to find out what's wrong and fix it.
On assembly line B, every product coming off the line is 100% good. If QC is doing their job correctly, every product gets shipped. When QC messes up, they fail a good product. With everything working correctly, QA has nothing to do except to continue to monitor the situation.