The question is asked by many people so I decided to devote the post to explaining these terms. Let’s look at the standards first:
Quality Assurance (QA) is a part of quality management focused on providing confidence that quality requirements will be fulfilled. [ISO 9000]
Testing is a process consisting of all life cycle activities, both static and dynamic, concerned with planning, preparation and evaluation of software products and related work products to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects. [ISTQB glossary]
According to these statements, we can make a conclusion: QA is care for quality as a prevention of bugs appearing, software testing is care for quality as uncovering bugs before users will find them.
QA and Testing both have to make software better, but QA enhances the quality via an improvement of development process and testing enhances it via finding bugs. Testing is also called Quality Control (QC).
QA is performed by QA Engineer. He helps Project Manger to create such development process that produces software with required quality. QA Engineer can analyze current state of company processes, estimate these processes according to international standards, design a plan of correcting actions and create documents defining company requirements to processes execution.
Tester verifies correspondence of produced software to customer requirements. He must find as more bugs as possible in an already developed program.
QA Engineer must create such development process of a project that all tasks will be finished in time and with fitting quality level.
I hope, now you will not confuse QA and Testing.