In today’s scenario we cannot imagine life without machines. A number of software is being developed to make our life more comfortable but quality, correctness, security and availability of software on time cannot be ensured. Software testing is the way to verify and validate all the functionalities of software. But software testing is not as easy as it seems to be and sometimes given lower priority than other faces of software development. That’s the reason why most of the software failure occurs. To make task of software testing easier test automation approach have been proposed by using model based techniques. New developments like use of data mining techniques for test case generation, cloud testing, agile testing and agent based software testing also have been proposed. All these approaches have certain advantages and disadvantages and still more research have to be done to make task of software testing easier. This book is an attempt to describe past and present efforts that have been done to make software testing efforts that have been done to make software testing more efficient.