View all services
Talk to QA Advisor
Browse the Knowledge Hub211 resources
/Books/Growing Object-Oriented Software, Guided by Tests
Books · Honest notes

Growing Object-Oriented Software, Guided by Tests: is it worth reading?

TDD applied to a real system from first commit to delivery, and the source of the outside-in approach.

We earn nothing from any link on this page. No affiliate links anywhere in this library.

published
2009
key ideas
3
reading path
1

Reviewed by Viral Patel

Co-Founder, QAble

Cover of Growing Object-Oriented Software, Guided by Tests
Unit testing & TDD

Growing Object-Oriented Software, Guided by Tests

by Steve Freeman, Nat Pryce

Publisher
Addison-Wesley
Year
2009
ISBN
9780321503626

Useful when you are: Senior / lead

Verdict

Should you read it?

Read it if

You already practise TDD on small problems and want to see it sustained across a whole system, or you want to understand the London school from its primary source.

Skip it if

You are new to TDD. Start with Beck. This book assumes the basics and moves quickly.

The argument

What it argues

The book builds a complete application over several hundred pages using TDD throughout, starting from a walking skeleton that proves the deployment pipeline before any feature exists.

It introduces the outside-in approach: begin with an acceptance test describing externally visible behaviour, then drive inward with unit tests until it passes. It is the clearest demonstration of how the outer and inner TDD loops relate.

It is also the canonical statement of the London school, using mocks to discover the interfaces between collaborators rather than merely to isolate them.

Key ideas

Ideas worth taking from it

  1. 01

    The walking skeleton

    Build the thinnest possible end-to-end slice, including deployment, before any feature. It surfaces integration and infrastructure risk at the point it is cheapest to address.

  2. 02

    Outside-in development

    Start from externally visible behaviour and work inward. Implementation is driven by a demonstrated need rather than by anticipated requirements.

  3. 03

    Mocks to discover interfaces

    Using mocks as a design tool to work out what a collaborator should look like, which is a genuinely different purpose from using them for isolation.

Criticism

What has dated, and what it gets wrong

The extended example is long and demanding, and many readers do not finish it. The heavy mocking has also aged into genuine controversy: the resulting tests are tightly coupled to collaboration structure, which is exactly what Khorikov later argues against. Read both and form a view.

Reading paths

On our reading paths

Becoming an automation engineer

Book 3 of 5 · Automation and SDET

Shows tests driving the design of a realistic system from the outside in, end-to-end tests included. Harder going than the first two, and worth it.

  1. Cover of Test Driven Development: By Example1. Test Driven Development: By Example
  2. Cover of Unit Testing Principles, Practices, and Patterns2. Unit Testing Principles, Practices, and Patterns
  3. Cover of Growing Object-Oriented Software, Guided by Tests3. Growing Object-Oriented Software, Guided by Tests (this book)
  4. Cover of Working Effectively with Legacy Code4. Working Effectively with Legacy Code
  5. Cover of Specification by Example5. Specification by Example

Keep reading

What to read next

Ready

Reading about quality is cheaper than learning it in production.

QAble runs QA for products in BFSI, gaming, healthcare and SaaS, with engineers who have read these and argued about them. Start with a free QA audit.

Talk to QA Advisor