Effective Software Testing

Effective Software Testing / Maurício Aniche / Manning / March 2022

Rating: 4.5/5 🌕🌕🌕🌕🌗

This is an excellent book describing any type of automated testing you might want to do in a software project. Even though all 3 main types of testing are covered (unit, integration and end-to-end), the content is focused mainly on unit tests.

I loved the chapter regarding specification-based testing at the beginning of the book - it describes an “algorithm” (in quotes because it is not an algorithm in a formal sense) to produce tests for all main paths and boundary conditions of your code based solely on specifications. I use my own half-baked ad-hoc version of this technique in my daily work, which took me years to devise. I’m sure the approaches here could be useful even for skilled software engineers.

Then the book deals with other important topics like coverage, designing contracts, mocks, and much more. There is also discussion on design for testability and test code quality, which often get neglected in the real world.

Overall, I liked the book and would recommend it to any software engineer who loves testing, regardless of their skill level.