Testing serves multiple purposes: finding defects in the software, gaining confidence about quality by providing information, and preventing defects through early involvement (like test-driven development or reviews). Since all three purposes (A, B, C) are valid, 'all of the above' is the correct answer.