Understanding and Using Unit Tests was an insightful read.
The book compiles essential approaches and considerations necessary for high-quality test design. It goes beyond mere testing methods, making it a unique resource among test-related books.
Good tests provide protection against regressions, resilience to refactoring, quick feedback, and maintainability. However, meeting all these criteria is challenging, necessitating a cost-effectiveness analysis. This book includes many practical examples illustrating this mindset.
Until now, I primarily focused on writing tests for production code, but I realized I lacked a clear criterion for deciding whether to write tests or not. Writing high-quality tests requires a deep understanding of design, which I feel might still be challenging for AI.
Chapter 10's discussion on databases was particularly memorable. It covered almost all the concerns I had regarding database testing.