Stephen Freeman Rotating Header Image

Growing OO Software

With Nat Pryce, I’m the author of Growing Object Oriented Software, Guided by Tests.

Book Cover

Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple idea: write tests for your code before you write the code itself. However, this “simple” idea takes skill and judgment to do well. Now there’s a practical guide to TDD that takes you beyond the basic concepts. Drawing on a decade of experience building real-world systems, two TDD pioneers show how to let tests guide your development and “grow” software that is coherent, reliable, and maintainable.

Steve Freeman and Nat Pryce describe the processes they use, the design principles they strive to achieve, and some of the tools that help them get the job done. Through an extended worked example, you’ll learn how TDD works at multiple levels, using tests to drive the features and the object-oriented structure of the code, and using Mock Objects to discover and then describe relationships between objects. Along the way, the book systematically addresses challenges that development teams encounter with TDD—from integrating TDD into your processes to testing your most difficult features.

One Comment

  1. Ben Franklin says:

    Hi Steve,

    Apologies if you feel like this is the wrong place to bring this up or if you’ve heard this many times before.

    I’ve read your GOOSE book, liked it and decided to purchase a copy for my kindle. Unfortunately the code samples in the book are unreadable because the print is too small and I get a similar thing happening in the kindle applications I use on both my mobile phone and my desktop PC.

    Fortunately this problem does not occur in the physical copy of the book so I’m sticking with reading the book provided my employer.

    I thought it would worth mentioning this so you can take it into consideration for future editions.


Leave a Reply

Your email address will not be published. Required fields are marked *