Foundations Of Software Testing: A Comprehensive Textbook and Reference by Aditya P Mathur
If you are looking for a book that covers the fundamental algorithms and techniques of software testing, you may want to check out Foundations Of Software Testing by Aditya P Mathur. This book is an undergraduate and graduate textbook, as well as a reference for the practicing software engineer. It presents sound engineering approaches for test generation, selection, minimization, assessment, and enhancement, using numerous examples and exercises. It also offers a lucid description of a wide range of simple to complex methods for a variety of testing-related tasks.
The book is divided into four parts: Part I introduces the basics of software testing, such as testing terminology, test adequacy criteria, test data generation, and test oracle design. Part II covers control flow testing, which is based on the analysis of the program's control flow graph. Part III deals with data flow testing, which is based on the analysis of the program's data flow graph. Part IV explores advanced topics, such as mutation testing, test metrics, testability measurement, and test automation.
The book has received positive reviews from readers and reviewers alike. According to Google Books[^1^], one user wrote: \"So much needed for studying SQA thankyou\". Another user wrote: \"nice book\". According to Goodreads[^3^], one reviewer wrote: \"This book is very comprehensive and covers all aspects of software testing. It is well written and easy to follow. It has many examples and exercises to reinforce the concepts. It is suitable for both students and practitioners of software testing.\"
If you are interested in reading this book, you can find it online at various sources. For example, you can download it for free from Archive.org[^2^], or you can buy it from Pearson Education India[^1^]. You can also read a preview of the book on Google Books[^1^] or on Archive.org[^2^].
Whether you are a beginner or an expert in software testing, you will find this book useful and informative. It will help you learn the foundations of software testing and apply them to your own projects.
Software testing methods and techniques are related to the software development models and the software testing lifecycle[^1^]. Some common software testing methods are black box testing, white box testing, gray box testing, and agile testing[^2^] [^3^]. Black box testing does not require knowledge of the internal structure of the software, while white box testing does[^2^] [^3^]. Gray box testing is a combination of both[^2^] [^3^]. Agile testing follows the principles of agile software development[^2^]. Software testing techniques can also be classified based on the level of testing, such as unit testing, integration testing, and system testing[^3^]. Unit testing checks the paths inside a unit or module, integration testing checks the paths among different units, and system testing checks the paths among the sub-systems of a product[^3^].
Some software testing methodologies prioritize writing test cases before writing the code those test cases will validate. Those types include test-driven development (TDD), behavior-driven development (BDD), specification by example (SBE), and acceptance test-driven development (ATDD)[^4^]. These methodologies are particularly relevant for teams that use an agile, or iterative, approach to software development. Teams donât have to pick one testing solution and stop there â several approaches can be used by the same team at different stages of development[^4^].
Test-driven development (TDD) is a methodology that flips the order of writing tests and code, where tests are written before the functioning code is written. By writing tests in this order, test cases can start with the definition of their purpose, or use case. Those use cases define the specification and documentation on what actions are to be supported by new code[^4^]. TDD typically involves unit tests that check individual methods and functions of the classes, components, or modules used by your software[^2^]. TDD can help developers write cleaner and more maintainable code, as well as catch bugs early in the development process[^4^].
Behavior-driven development (BDD) is a methodology that extends TDD by using natural language to describe the expected behavior of the software. BDD uses a format called Gherkin to write test scenarios that consist of given-when-then steps. For example: Given I am on the login page, When I enter my username and password, Then I should see my dashboard[^4^]. BDD can help bridge the communication gap between developers, testers, and stakeholders by using a common language that everyone can understand. BDD can also help automate acceptance tests that verify that the software meets the user's needs[^4^]. ec8f644aee