Quality Assurance is a traditional term you will frequently hear in software development when someone is referring to software testing. It originally came from the world of manufacturing, where it referred to a systematic set of actions designed to ensure that a product, such as a car or a physical item, meets certain quality standards or requirements, like 'a 6mm gap'. Unlike software, which often has requirements that are not defined to such a specific degree. When software development needed a label for its quality activities, they borrowed 'QA', and it stuck for a long time.
In many companies, you will find that the software testing team is still called the 'QA team', and that is where the confusion lies. The term implies that the act of testing can somehow 'assure' quality, but that is simply not true. As testers, our job is to find and expose risks and bugs, not to guarantee perfection. You cannot 'test in' quality at the end of a project. Quality must be built in from the very first planning meeting, involving everyone from analysts to developers.
Because of this inherent conflict between the word 'assurance' and the reality of finding risk, many modern teams are moving towards more accurate job titles such as Software Tester or Quality Engineer. This better reflects the actual work we do, which is about engineering quality into the process and thinking about product quality from the start, rather than making impossible promises of assuring quality.
In many companies, you will find that the software testing team is still called the 'QA team', and that is where the confusion lies. The term implies that the act of testing can somehow 'assure' quality, but that is simply not true. As testers, our job is to find and expose risks and bugs, not to guarantee perfection. You cannot 'test in' quality at the end of a project. Quality must be built in from the very first planning meeting, involving everyone from analysts to developers.
Because of this inherent conflict between the word 'assurance' and the reality of finding risk, many modern teams are moving towards more accurate job titles such as Software Tester or Quality Engineer. This better reflects the actual work we do, which is about engineering quality into the process and thinking about product quality from the start, rather than making impossible promises of assuring quality.