Jump to ratings and reviews
Rate this book

Effective Software Testing: A developer's guide

Rate this book
Go beyond basic testing! Great software testing makes the entire development process more efficient. This book reveals a systemic and effective approach that will help you customize your testing coverage and catch bugs in tricky corner cases.

In Effective Software Testing you will learn how

    Engineer tests with a much higher chance of finding bugs
    Read code coverage metrics and use them to improve your test suite
    Understand when to use unit tests, integration tests, and system tests
    Use mocks and stubs to simplify your unit testing
    Think of pre-conditions, post-conditions, invariants, and contracts
    Implement property-based tests
    Utilize coding practices like dependency injection and hexagonal architecture that make your software easier to test
    Write good and maintainable test code

Effective Software Testing teaches you a systematic approach to software testing that will ensure the quality of your code. It’s full of techniques drawn from proven research in software engineering, and each chapter puts a new technique into practice. Follow the real-world use cases and detailed code samples, and you’ll soon be engineering tests that find bugs in edge cases and parts of code you’d never think of testing! Along the way, you’ll develop an intuition for testing that can save years of learning by trial and error.

About the technology
Effective testing ensures that you’ll deliver quality software. For software engineers, testing is a key part of the development process. Mastering specification-based testing, boundary testing, structural testing, and other core strategies is essential to writing good tests and catching bugs before they hit production.

About the book
Effective Software Testing is a hands-on guide to creating bug-free software. Written for developers, it guides you through all the different types of testing, from single units up to entire components. You’ll also learn how to engineer code that facilitates testing and how to write easy-to-maintain test code. Offering a thorough, systematic approach, this book includes annotated source code samples, realistic scenarios, and reasoned explanations.

What's inside

    Design rigorous test suites that actually find bugs
    When to use unit tests, integration tests, and system tests
    Pre-and post-conditions, invariants, contracts, and property-based tests
    Design systems that are test-friendly
    Test code best practices and test smells

About the reader
The Java-based examples illustrate concepts you can use for any object-oriented language.

About the author
Dr. Maurício Aniche is the Tech Academy Lead at Adyen and an Assistant Professor in Software Engineering at the Delft University of Technology.

Table of Contents
1 Effective and systematic software testing
2 Specification-based testing
3 Structural testing and code coverage
4 Designing contracts
5 Property-based testing
6 Test doubles and mocks
7 Designing for testability
8 Test-driven development
9 Writing larger tests
10 Test code quality
11 Wrapping up the book

620 pages, Kindle Edition

Published May 3, 2022

41 people are currently reading
337 people want to read

About the author

Mauricio Aniche

9 books16 followers

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
29 (31%)
4 stars
43 (47%)
3 stars
12 (13%)
2 stars
6 (6%)
1 star
1 (1%)
Displaying 1 - 15 of 15 reviews
Profile Image for Hampus Wessman.
12 reviews29 followers
December 4, 2022
This is my new favourite overview of automated testing and will be the book I recommend as an introduction to others from now on. Very balanced and useful coverage of the most important concepts. Worth reading for beginners and experts alike. Warmly recommended! The references to further reading throughout are useful too.
Profile Image for Michiel.
802 reviews
August 11, 2022
What a great introduction into testing! Sure, if you have experience a lot will be familiar, but there is enough interesting material for those as well.
Profile Image for Daniel.
Author 3 books37 followers
April 19, 2024
As an experienced software developer, I didn't learn a lot that was new to me from this book. So why did I read it? Because I am always interested in learning about books that I can recommend to mentees and or, more generally, more junior colleagues. "Effective Software Testing" is a book I can definitely recommend. It gives a very thorough overview of all the relevant techniques for software testing that developers should have in their toolbelt, and it gives a lot of good advice on how to systematically come up with good test suites.

Naturally, some topics are not covered in as much detail as is necessary to really dig them. For example, the introduction to property-based testing only scratches the surface and doesn't have a lot of advice on how to devise good properties for the unit under test. To be fair, entire books can and have been written about this, and the author does a good job of arousing the reader's curiosity. Also, the book, which uses Java for all its examples, has a strong focus on object-oriented design with mutable classes. Readers who use functional programming, for example, will have to abstract from the concrete examples.

I don't agree with everything the author writes. Nevertheless, I think that this book is a valuable resource for junior or intermediate software developers who want to get better at writing tests.
31 reviews1 follower
March 6, 2023
I extraordinarily advocate "Effective Software Testing: A developer's guide" for builders who prefer to go past simple trying out and research Best QA Practices for 2023. The e book gives a complete and systematic strategy to software program checking out that can assist builders optimize their trying out insurance and pick out complex bugs in nook cases.
The author's writing fashion is clear and concise, making it effortless to recognize complicated trying out concepts. The e book consists of sensible examples and case research that illustrate the ideas and strategies discussed. Moreover, the writer offers pointers and recommendation that builders can use to personalize their checking out techniques based totally on the precise desires of their projects.
Overall, "Effective Software Testing: A developer's guide" is an awesome useful resource for builders who prefer to continue to be up to date with the contemporary satisfactory practices in software program testing. I relatively advise this e book to every person who desires to enhance their checking out capabilities and make their improvement method greater efficient.
Profile Image for Henrik Warne.
309 reviews49 followers
June 19, 2022
Solid book on developer testing. I particularly like chapters 2 and 3 - a systematic way of coming up with test cases, based on both the specification and the structure of the code. Also, the examples are great throughout the book - not too simplistic, but still small enough to keep in your head.
The author is a professor of Software Engineering, but has also worked as a developer. This shows in the book: it is quite pedagogical, with many interesting and relevant references to research. There are also many instances where he uses his own experience in the discussions of different techniques.

I have written a much longer review here: https://henrikwarne.com/2022/06/19/ef...
Profile Image for Luís Soares.
38 reviews20 followers
August 3, 2024
It is well-structured and has some good tips.. but it's too tied to an outdated definition of unit testing (that a unit test is a function test and everything has to be mocked).
Besides, it gives some weird advice, like adding new queries to production code only to be able to test commands. Also, the 1st half of the book is about writing production code and running behind writing tests for it. It mentions TDD too late, like just a nice-to-know the technique.
It's still worth a read.
Profile Image for Zisu Andrei.
15 reviews8 followers
April 16, 2024
I've long been looking for books on testing.

This is a good read if you are looking to brush up on software testing implementation techniques. It is clearly targetted at software engineers.

Unfortunately I came to this book with the wrong expectations. As I was looking for reading material for software testing and strategy.
Profile Image for Andrei Tarutin.
41 reviews2 followers
April 21, 2025
This book took me some time to read carefully—not because it's difficult to understand, but because it's packed with valuable information. The density of knowledge is quite high. Although I was already familiar with much of the content, the book helped me organize and structure what I knew, which I truly appreciate, as I prefer systematic material. The author clearly has deep expertise and has invested a great deal of time in the subject of software testing. I highly recommend this book to anyone looking to either gain a deep understanding of software testing or to bring clarity and structure to their existing knowledge.
1 review
October 4, 2022
One of the best books about software testing I have ever read. Maurício describes the theory behind testing software in a pleasant way. Also, the examples are well written and it is easy to read even for people that don't use Java in a daily basis
Profile Image for Juani Nicolai.
1 review
May 21, 2024
Amazing book! Highly recommended for every developer keen on getting better at testing. Not only covers testing practices and principles but also suggests tools and techniques with actual examples. Kudoz for the author on such a great book. I am definitely going to spread the word at my workplace!
1 review
Want to read
March 24, 2024
Completely useless website, It is not allowing me to read this book. fake website.
Profile Image for Larry.
756 reviews4 followers
December 16, 2024
This seems like an OK book, but not what I was expecting/looking for. Did not finish.
Displaying 1 - 15 of 15 reviews

Can't find what you're looking for?

Get help and learn more about the design.