Quality assurance embraces all steps concerning technological stages of software development, release and usage, which are undertaken during different software life cycle stages in order to provide the required quality of the released products.
Close to the quality assurance goes quality control, which includes all the actions done to a product in the process of its development in order to get information about its actual states in terms of readiness to release, correspondence to fixed requirements, and correspondence to a certain quality level.
Software testing is one of the quality control techniques which includes activities on test management, test design, test execution and test analysis.
Two more notions that should be introduced early are verification and validation. Verification is assessment of a system or its components with the purpose to detect if the results of current development stage meet the conditions set at the beginning of this stage. Validation means checking if software under development meets users’ expectations and system requirements.