Testing is the process of identifying errors, completeness and quality of software. It involves executing programs under different conditions to check if they meet specifications and functionality. The objectives of testing are to uncover errors, demonstrate a software product matches requirements, and validate quality with minimum cost. Testing follows a life cycle including test planning, case design, execution, and reporting defects. Different methodologies include black box which tests external functionality without code knowledge, and white box which tests internal code coverage. Testing levels are unit, integration and system.