Software Quality Assurance encompasses the whole development process, monitoring/improving the process, ensures the adherence to the agreed-upon standards and procedures. And it guarantees the discovery of bugs and validation of their fixes.
Quality Control sets up the process to determine bugs and sharing feedbacks to raise the quality of the application under test. It’s probably the testing team which carries out the quality control process.
Software Testing is again a process which begins with discovering bugs and ends with the final validation of the bug-fix. It also confirms the product meets the customer criteria and the procedures set by the organization.