Foundations of Software Testing presents sound engineering approaches for software test generation, selection, minimization, assessment, and enhancement. Useful for students, practitioners and researchers, it offers a detailed treatment of topics such as test generation from finite state models, combinatorial designs and test selection and minimization for regression testing; step-by-step algorithms to generate tests; comparative analysis of commercially available testing tools to facilitate tool selection.