Software testing is an activity which is aimed for evaluating quality of a program and also for improving it, by identifying defects and problems. Software testing strives for achieving its goals (both implicit and explicit) but it does have certain limitations, still testing can be done more effectively if certain established principles are be followed. In spite of having limitations, software testing continues to dominate other verification techniques like static analysis, model checking, and proofs. So it is indispensable to understand the goals, principles and limitations of software testing so that the effectiveness of software testing could be maximized.
No takes yet. Share an insight, caveat, or question.
Quadri et al. (2010) studied this question.
Synapse has enriched one closely related paper. Consider it for comparative context: