Goodreads helps you keep track of books you want to read.
Start by marking “Growing Object-Oriented Software, Guided by Tests” as Want to Read:
Growing Object-Oriented Software, Guided by Tests
Enlarge cover
Rate this book
Clear rating
Open Preview

Growing Object-Oriented Software, Guided by Tests

(A Kent Beck Signature Book)

4.19  ·  Rating details ·  2,178 ratings  ·  114 reviews
Foreword by Kent Beck "The authors of this book have led a revolution in the craft of programming by controlling the environment in which software grows." --Ward Cunningham "At last, a book suffused with code that exposes the deep symbiosis between TDD and OOD. This one's a keeper." --Robert C. Martin "If you want to be an expert in the state of the art in TDD, you nee ...more
Paperback, 345 pages
Published October 1st 2009 by Addison-Wesley Professional
More Details... Edit Details

Friend Reviews

To see what your friends thought of this book, please sign up.

Reader Q&A

To ask other readers questions about Growing Object-Oriented Software, Guided by Tests, please sign up.

Be the first to ask a question about Growing Object-Oriented Software, Guided by Tests

Community Reviews

Showing 1-30
Average rating 4.19  · 
Rating details
 ·  2,178 ratings  ·  114 reviews

More filters
Sort order
Start your review of Growing Object-Oriented Software, Guided by Tests
Alena Varkockova
Dec 28, 2013 rated it really liked it
Do not read this if you don't wanna know that you are writing your tests all wrong!

Introduction is rather slow and uninteresting for someone already testing on day to day basis. Throughout half of the book there is a step by step introduction into the TDD - I did not care that much for this part. Especially in the end it was somehow hard to follow when the code base for the example grows - especially for a non-java programmer.

But the last 100 pages with the examples of how to write more maintai
Yevgeniy Brikman
May 15, 2014 rated it it was amazing
A great read for anyone interested in automated testing and TDD.


* Makes a strong case for testing: better design, faster feedback, user experience first, regression, and most importantly, the confidence to make changes quickly.
* Includes a nice walk through of an iterative, test driven development process of a small app.
* Lots of great examples of how "listening" to tests leads to better design (ie, what the "driven" really means in TDD).
* I learned a lot from the discussion of how to m
Amy Gilchrist Thorne
Jan 10, 2010 rated it really liked it
I think there's a lot of food for thought in this book. Personally, I can remember reading Martin Fowler's Mocks Aren't Stubs some time ago and concluding that I'd be a "classicist."

Some time later, I started working with mocks as a way to isolate unit tests from "slow" dependencies, such as databases, trying to make them run more quickly. I didn't have much success, though, because I was still writing my tests in a classicist style.

This book helped open my eyes to how the "mockist" style really
Amir Sarabadani
Jun 04, 2019 rated it really liked it
One of best books about software design and TDD and tests in general.
David Lindelof
Sep 18, 2014 rated it it was amazing
Shelves: safari
I didn't know what to expect when I picked up this book. In spite of its excellent reviews I feared it was going to be another redundant addition to the mountain of books harping on the virtues of Test-Driven Development (TDD), without adding anything significant to the standard sermon.

Nothing could be further from the truth.

I read a fair share of technical books, but this book is the only one in years that I immediately began to re-read again after finishing. It is easily one of the most import
Wilson Jimenez
Jan 03, 2018 rated it really liked it
Recommended to Wilson by: Josue Abreu
Even if the book describes some OO concepts, in order to get the most out of it I suggest reading a couple of OO related books beforehand and get a good grasp of things like encapsulation, polymorphism and specially objects collaboration. As the authors state it: one of their main focus when constructing OO software is to think about how objects will send messages to each other rather than their roles, in other words, drive the design from how the moving pieces would collaborate with each other. ...more
May 12, 2011 rated it really liked it
Shelves: own-paper-copy
It took me too long to finish the book. First part was quit interesting and promising. I enjoyed reading stories from the author's practice as consultants trying to adopt TDD and unit-testing doctrine in real life. It was interesting to read their props and cons particularly because I have seen myself in the same role at my daily job. I have seen or wished to see. So I tried to learn new tricks to convince colleagues and managers to accept unit-testing as necessary part of the development proces ...more
Sep 08, 2010 rated it it was amazing
Shelves: tech, nonfiction, own
A definite must-read for professional developers, this book taught me a lot about incrementally building software that's constantly deployable and maintainable - not only the technical know-how required to do it, but also the mentality needed. Reading the book made me realize that my unit testing skills are woefully lacking in comparison, so I'm grateful that it provides extension tips, tricks, and examples that I can study for improvement. But this book covers much more than unit testing, which ...more
Jul 13, 2016 rated it it was amazing
Before reading this book, it would be wise to set your worldly affairs in order and prepare your psyche for a transformation which may move you in entirely new and unanticipated directions. Not only does GOOS offer a collection of solid practices for any software engineer to follow, it also describes a mechanism for design through disciplined planning and execution. Many have scribbled on the topic of software development, but the Venn diagram between recorded wisdom and the art of software desi ...more
Xavier Shay
Jan 27, 2011 rated it really liked it
Shelves: owned
It started a bit slow so I was concerned, but it really kicked off. Wish I'd read this 4 years ago. The guided walkthrough is good but as with clean code would have been better as a screencast. The final chapters on testing are spectacular.

Key takeaways:
- Focus on the communication between objects.
- Ports and adapters architecture to separate the domain.
- Proper division between unit, integration and acceptance tests.
- Use test builders for complex test setup.
- Transactional tests are a hack bec
Vitor Cavalcanti de Albuquerque
A must read for anyone willing to learn and understand how to write concise and maintainable tests, and how to grow a code base in an object oriented fashion. The techniques and principles shown in this book are pure gold: walking skeleton, depth of testing, async code testing, data test builders, mocking, single responsibility, only mock classes you own, hexagonal architecture, etc. If you're still in the fence about the advantages of TDD, this is for you. It displays how quick it is to add new ...more
Isidro López
OK... so now I understand why this book became so popular :-)

It's that kind of book that I feel I should reread immediately after finishing it.
The part with the worked example is great, but personally I found specially interesting the chapters with insights about OOP design and sustainable TDD.

The ideal way to get all the value of this book is to write yourself the worked code as they are doing it. If you don't do it, at least take a look to the code here http://www.growing-object-oriented-so..
Baal Of
Oct 28, 2019 marked it as dnf
I hope to come back to this one at a later time.
Jan 31, 2020 rated it it was amazing
Shelves: software, favorites
This book is truly amazing, I have learned a lot of things about: what types to mock, how to write my tests properly, test driven development, UI testing and other things.

The only downside is that this book uses Java and I'm not experienced with it, reading Chapter 3 was hard and not very rewarding.
Jun 18, 2020 rated it it was amazing
Great book. I wish more people would follow the advice from this book.
May 12, 2012 rated it it was amazing
Shelves: software

I did not realize how much I still have to learn about writing good object-oriented (OO) code, and about hewing to a tight test driven development (TDD) methodology, before I read Growing Object-Oriented Software, Guided By Tests. My education in OO and unit testing has been largely theoretical, with no time spent directly learning from experienced OO programmers; my best mentor was a COBOL coder. Books like Design Patterns: Elements of Reusable Object-Oriented Software, Patterns of Enterprise A

Bjoern Rochel
Nov 16, 2012 rated it it was amazing
Shelves: 2012
Pretty cool book. I wish I had it 6 years ago. Learned quite a few of the lessons they talk about the hard way in those years. I really, really like the emphasis on growing and nurturing a software design. I've seen too many codebases that slowly but gradually went off the rail because of too much pragmatism or simply the lack of a big picture on what the software was supposed to do and how it actually did it.

Software teams often don't fail delivering the first version of a software. They fail
Jeanne Boyarsky
Jun 20, 2011 rated it really liked it
Shelves: technology
The person who handed me this book said it was "better than Lasse's book" (Test Driven.) I disagree. One can't compare the two books - Test Driven is meant for beginners and this book is meant for an advanced audience. If you have never written unit tests before, this book is very hard to follow. So put it down, get an intro book and come back.

I really liked the emphasis on making the software responsive to change along with separating acceptance and unit tests. The book uses Junit 4.6 and ther
Jan 01, 2015 rated it really liked it
A great book on a little bit different approach of testing. Going end-to-end and grow your software one test at a time will result in a much more stable software that most other approaches. The authors know a lot about writing good and useful test-suites and can explain the main things you should look out for.

The only downside in this book is the big focus on a library like jMock. Outside Java you can’t use it and when you program in any other language that part is of no use to you.
Aug 21, 2011 rated it it was amazing
Best TDD book and best OO book I ever read. Amazing.
Mar 30, 2013 rated it it was amazing
This is the best guide to TDD and emergent design I've read. I have two copies, one of which is permanently loaned out to friends and colleagues.
Dec 06, 2013 rated it liked it
While there was a lot to learn and take away you have to overlook the over architecting that took place in the code.
Michael Gaudet
Jan 12, 2019 rated it really liked it
I found this to be a tough read, even for a dry topic like this. Its mostly in Java, which is applicable enough to most languages that it’s still accessible even if you program in a different object oriented language.

There are a number of books out there on TDD, but this one is pretty unique out of the ones I’ve read so far in that it includes integration testing of the example, not just unit testing. There’s almost a whole chapter on testing persistence layers, which most books on testing pract
Martin Chalupa
Sep 04, 2017 rated it it was amazing  ·  review of another edition
Shelves: technical
This is an amazing book. I've read some classic books about programming but they seems to be more targeted at beginner programmers. They don't offer so much for developers with some experience (even it is useful to read them to remind yourself about industry basics). On the other hand this book is better for advanced programmers. You will know most of described concepts at least from theory but this book shows useful practical usage. The main part of the book is an example of application develop ...more
Rory Armstrong
Oct 04, 2017 rated it it was amazing
An absolutely wonderful book on TDD. Really explains the process of writing tests before features both technically and pratically.
In the middle of the book the authors develop a Auction Sniper application using Swing using the TDD method and bring the reader through the TDD process every step of the way which is a brilliant idea for a technical book as it explains the concept very well.
Don't let the fact that it's a swing app deter you however as this could easily be a web framework or some othe
Shahriyar Nasir
Jul 30, 2017 rated it it was amazing  ·  review of another edition
GOOS is one of my all time favourite software development books. It guides the reader towards building a software system through test-driven development. The authors discuss many important techniques such as Acceptance Testing, Encapsulation/Information Hiding, "Tell, Don't Ask", Listening to the Tests, and The Walking Skeleton just to name a few. These techniques are strung together with a real example of how they build an automated auction bidding app. The techniques help the authors build res ...more
Peter Aboalim
Oct 08, 2018 rated it it was amazing
This is one of best books I have read. It is very good book if you wanna how to use TDD in a right way. The way the authors proposed their ideas and experience were amazing. You will learn how to do incremental development and how to make your tests drive your application. The book starts with 10 chapters include all concepts and approaches you wanna learn. Then it has complete example to create an application from scratch which is driven by tests. From chapter to another, you add a new feature ...more
Leo Maslovs
Dec 27, 2018 rated it it was amazing
Definitely liked the book and added it to "Must read" category. Brief, practical, inspiring and down to earth introduction into TDD practices.

I concur I am not sold on Mocks as a golden hammer to drive the design and building blocks to Test Suites. In my practice - Mocks are something dreadful and better to be avoided by means of simpler tools (e.g. FakeRepository (in-memory database) over _mocked_ Repository).

I particularly liked the _practical bit_ it, e.g. 2/3 of the book materials are acco
Jun 06, 2020 rated it really liked it
Shelves: it
Pretty good book. "Part III: A Worked Example" uses rather old technologies, so I just skimmed through it. Other parts are very informative. I really liked Part IV about Sustainable Test-Driven Development (naming, data-driven test, etc.) and Part V containing good recipes for testing persistence, threads, async code.
Interesting short end chapter about the history of mocking, Jmock, and Hamcrest. I didn't know that the authors of the book are creators of the mentioned tools. Although there are n
Carlos Buenosvinos
Sep 24, 2017 rated it really liked it
It’s a nice book to improve your TDD and testing skills. Probably the one you need to read after TDD by Example by Kent Beck and before the xUnit Test Patterns.

I’m giving 4 stars because at the time written was probably the best material on the topic. However, I think that now, there is better material about when to mock, testing schools, trade-offs, etc. I even disagree with some parts, such as starting with the end-to-end tests. I prefer to start to start with the Use Case (Interactors or Appl
« previous 1 3 4 next »
There are no discussion topics on this book yet. Be the first to start one »

Readers also enjoyed

  • Working Effectively with Legacy Code
  • Design Patterns: Elements of Reusable Object-Oriented Software
  • Domain-Driven Design: Tackling Complexity in the Heart of Software
  • Refactoring: Improving the Design of Existing Code
  • Clean Code: A Handbook of Agile Software Craftsmanship
  • The Lean Entrepreneur: How Visionaries Create Products, Innovate with New Ventures, and Disrupt Markets
  • The Pragmatic Programmer: From Journeyman to Master
  • Extreme Programming Explained: Embrace Change (The XP Series)
  • Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)
  • Notes to a software team leader
  • Refactoring to Patterns
  • Clean Architecture
  • Head First Design Patterns
  • The Clean Coder: A Code of Conduct for Professional Programmers
  • Building Microservices: Designing Fine-Grained Systems
  • Patterns of Enterprise Application Architecture
  • Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation
  • Effective Java
See similar books…

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »

Other books in the series

A Kent Beck Signature Book (7 books)
  • Test Driven Development: By Example
  • Implementation Patterns
  • ATDD by Example: A Practical Guide to Acceptance Test-Driven Development
  • User Stories Applied: For Agile Software Development
  • Implementing Lean Software Development: From Concept to Cash
  • Leading Lean Software Development: Results Are Not the Point

News & Interviews

We're halfway through the year that time forgot! Ahem...I mean, 2020. Believe it or not, it's June. Traditionally, this is when the Goodr...
150 likes · 154 comments
“One Domain Vocabulary A class that uses terms from multiple domains might be violating context independence, unless it’s part of a bridging layer.” 1 likes
“How can we hope to catch all the configuration options in an entire system? At some level we can’t, and this is at the heart of what professional testers do.” 1 likes
More quotes…