The Fuzzing Book is a website / online book that presents tools and techniques for generating software tests. Fuzzing is defined by Wikipedia as “automated software testing technique that involves providing invalid, unexpected, or random data as inputs to a computer program. The program is then monitored for exceptions such as crashes, failing built-in code assertions, or potential memory leaks.”
This online book addresses this problem by automating software testing, specifically by generating tests automatically. Recent years have seen the development of novel techniques that lead to dramatic improvements in test generation and software testing. They now are mature enough to be assembled in a book – even with executable code. With 17,000 lines of Python code and 125,000 words of text, a printed version would cover more than 1,000 pages of text. This work is designed as a textbook for a course in software testing; as supplementary material in a software testing or software engineering course; and as a resource for software developers. It covers random fuzzing, mutation-based fuzzing, grammar-based test generation, symbolic testing, and much more, illustrating all techniques with code examples that you can try out yourself.
While the chapters of this book can be read one after the other, there are many possible paths through the book and it is not assumed that everybody wants to read everything. The multiple authors have provided a graph to navigate through the content. There are also some preset “tours” that will guide you whether you are an experienced pragmatic programmer or a student in software engineering.
Fuzzing Book website: https://www.fuzzingbook.org/