Authors and Acknowledgements
This book is maintained by Maurício Aniche, Assistant Professor in Software Engineering at Delft University of Technology.
Dr. Maurício Aniche is an Assistant Professor in Software Engineering at Delft University of Technology, the Netherlands. His line of work focuses on how to make developers more productive during maintenance and testing. His research has been published in top-tier conferences (ICSE, FSE, ASE) and journals (TSE, EMSE). He always had a foot in industry. He worked as a software developer for VeriFone (3 years) and Locaweb (1 year), and as a software consultant and trainer for the group Caelum/Alura (6 years), one of the most respectable software engineering training centers in Brazil. He has given training and consultancy on software development and testing to 27 different companies, from 2010 to 2015. Moreover, he published three books focused on practitioners ("OOP and SOLID for ninjas", "Test-Driven Development in the real world", and "A Practical Guide on Software Testing"), which, altogether, have sold 10k copies. All these activities have given him a very particular vision on software engineering and testing should be done in practice.
This book would also not be possible without the help of many colleagues. A special thanks to:
- Arie van Deursen, Full Professor in Software Engineering at Delft University of Technology, that has been giving CSE1110 for more than 10 years at Delft, and highly influenced me on how testing should be done. Arie is also responsible for the model-based testing and design-by-contracts chapter of this book.
- Dr. Annibale Panichella, my work colleague, for writing a chapter on mutation testing, and for providing me with great insights on AI for software testing.
- Azqa Nadeem, part of our CS teaching team, for writing the security testing, static testing, and fuzz testing chapters.
- Frank Mulder, part of our CS teaching team, for giving the book a full technical review, and for producing the web testing chapter.
- Wouter Polet, one of our many incredible TAs, for working on the initial transcripts of our lectures, and for working on this book's very first version.
- Steve Freeman, for the feedback he has provided to many parts of this book, especially related to interaction testing and mock objects. Steve's "Growing Object-Oriented Systems Guided by Tests" book has always been a great influence to me.
- Marsha Ginsberg, part of TU Delft staff, for giving the book a complete grammar check.
- The TU Delft's New Media Centre for patiently supporting me through recording, and for carefully editing the videos.
- For the many CSE1110 TAs that have helped us in improving the book.
- 2020 edition: Evaldas Latoškinas, Sára Juhošová, Dixit Sabharwal, Abel Mălan, Denise Toledo, Rembrandt Klazinga, Yoshi van den Akker.
- Finally, for our CSE1110 students that have fixed several typos, rephrased unclear paragraphs, proposed new exercises, and improve answers. The complete list of contributors can be found at https://github.com/sttp-book/sttp-book/graphs/contributors
This book was also highly inspired by many books on software testing and software design. And while we cite references per chapter, in the following, we acknowledge the ones that inspired us the most:
- Pezzè, Mauro, and Michal Young. Software testing and analysis: process, principles, and techniques. John Wiley & Sons, 2008.
- Graham, Dorothy, Erik Van Veenendaal, and Isabel Evans. Foundations of software testing: ISTQB certification. Cengage Learning EMEA, 2008.
- Freeman, Steve, and Nat Pryce. Growing object-oriented software, guided by tests. Pearson Education, 2009.
- Langr, Jeff, Andy Hunt, and Dave Thomas. Pragmatic unit testing in Java 8 with JUnit. Pragmatic Bookshelf, 2015.
- Meszaros, Gerard. xUnit test patterns: Refactoring test code. Pearson Education, 2007.
- Kaner, Cem, Sowmya Padmanabhan, and Douglas Hoffman. The Domain Testing Workbook. Context Driven Press, 2013.
- Fowler, Martin. Testing bliki: https://martinfowler.com/tags/testing.html, Last access in 2020.