Effective software testing

Effective Software Testing: A Developer's Guide is my new book on software testing, published by Manning in 2022.

This book teaches developers how to go beyond basic test cases, by means of systematic and effective testing practices. Learn how to engineer test cases based on the requirements of the program, how to augment the test suite via structural testing and coverage, how to design strong contracts for your methods and classes, when to mock dependencies, when to go for larger tests, and more.

Take a look at the dedicated website of the book, full of free articles on software testing, and subscribe to the free newsletter!

Simple Object-Oriented Design

Simple Object-Oriented Design presents a set of principles that help developers keep the complexity of their designs under control -- in other words, keep it simple. The principles can be grouped into six higher-level ideas: simple code, consistent objects, proper dependency management, good abstractions, infrastructure properly handled, and well modularized.

Take a look at the dedicated website of the book!

Other books

I have also authored four books, as part of my activities at Caelum. All of them are in Brazilian Portuguese and were published by Casa do Código:
  • Test-Driven Development: Teste e Design no Mundo Real (or TDD: Test and Design in the Real World), 2012. This book talks about test-driven development in a very pragmatic way. The main focus is not only in the mechanics of writing the test first and then implement it, but also on how to listen to the test code and improve the class design. The book has many versions: Java, C#, Ruby, and PHP.
  • Orientação a Objetos e SOLID para Ninjas: Projetando Classes Flexíveis (or Object-Orientation and SOLID for Ninjas: Designing Flexible Classes), 2015. This book explains the five OO principles: single responsibility principle, open closed principle, Liskov substitutive principle, interface segregation principle, and the dependency inversion principle. This book is recommended for those that want to design better object-oriented systems. See the website.
  • Testes Automatizados de Software: Um Guia Prático (or Automated Software Testing: A Practical Guide), 2015. This book is mostly focused on teaching developers the different testing tools and frameworks, such as JUnit, Mockito, and Selenium. I do not recommend readers to buy this book anymore, but favor my new Effective Software Testing book. See the website.
  • Introdução à Programação em C: Os primeiros passos de um desenvolvedor (or Introduction to Programming in C: The first steps of a developer), 2015. This is an introduction to programming book in C. Thoughout the book, we develop a series of games, the last and most exciting one, being a Pacman game. It is a recommended book for those that need to learn how to program and in C.See the website.