Software testing is a study conducted to provide stakeholders with information about the qualtiy of the test object (product or service under test). It is NOT a single activity but a set of activities undertaken to confirm that the software product is fit for purpose and to detect defect.
Software testing can be stated as the process of validating and verifying that a test object:
- meets the specified requirements that guided its design and development, i.e., verification.
- satisfies the users' and stakeholders' need in operational environment, i.e., validation.
Quality Assurance is an umberalla term that ensures the qualtiy of all the processes happening in an organization. Software testing is a quality control activity that maintains and improve the quality fo the software product. Agile is one of the many popular approach to manage projects. It is an iterative approach in contrast to the traditional waterfall model.
Traditionally most of the testing effort occurs after the requirements have been defined or after the coding process has been completed, but in the agile approaches testing effort goes hand in hand with each phase of the software deveopment lifecycle. To sum up, testing is context dependent.