Aiming to present the collected work of software testing in an accessible and practical fashion, this book focuses on testing techniques and methods, describing the problems of testing throughout the life-cycle and outlining possible solutions and approaches to testing. It goes on to give an account of existing techniques and tools, a case study of applied techniques, and self-test tutorial exercises.