- Paperback: 384 pages
- Publisher: Addison-Wesley Professional; 1 edition (October 22, 2009)
- Language: English
- ISBN-10: 0321503627
- ISBN-13: 978-0321503626
- Product Dimensions: 7 x 1 x 9.2 inches
- Shipping Weight: 1.4 pounds (View shipping rates and policies)
- Average Customer Review: 46 customer reviews
- Amazon Best Sellers Rank: #53,515 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Growing Object-Oriented Software, Guided by Tests 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
Fulfillment by Amazon (FBA) is a service we offer sellers that lets them store their products in Amazon's fulfillment centers, and we directly pack, ship, and provide customer service for these products. Something we hope you'll especially enjoy: FBA items qualify for FREE Shipping and Amazon Prime.
If you're a seller, Fulfillment by Amazon can help you increase your sales. We invite you to learn more about Fulfillment by Amazon .
The Amazon Book Review
Author interviews, book reviews, editors picks, and more. Read it now
From the Back Cover
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 need to understand the ideas in this book."--"Michael Feathers 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. Coverage includes - Implementing TDD effectively: getting started, and maintaining your momentum throughout the project - Creating cleaner, more expressive, more sustainable code - Using tests to stay relentlessly focused on sustaining quality - Understanding how TDD, Mock Objects, and Object-Oriented Design come together in the context of a real software development project - Using Mock Objects to guide object-oriented designs - Succeeding where TDD is difficult: managing complex test data, and testing persistence and concurrency
About the Author
Steve Freeman is an independent consultant specializing in Agile software development. A founder member of the London Extreme Tuesday Club, he was chair of the first XPDay and is a frequent organizer and presenter at international conferences. Steve has worked in a variety of organizations, from writing shrink-wrap software for IBM, to prototyping for major research laboratories. Steve has a Ph.D. from Cambridge University, and degrees in statistics and music. Steve is based in London, UK.
Nat Pryce has worked as a programmer, architect, trainer, and consultant in a variety of industries, including sports reportage, marketing communications, retail, telecoms, and finance. With a Ph.D. from Imperial College London, he has also worked on research projects and does occasional university teaching. An early adopter of Extreme Programming, he has written or contributed to several open source libraries that support Test Driven Development. He was one of the founding organizers of the London XPDay and regularly presents at international conferences. Nat is based in London, UK.
Freeman and Pryce were joint winners of the 2006 Agile Alliance Gordon Pask award.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
- to apply TDD for designing not only small pieces of functionality but entire features, too,
- to connect all those little pieces developed in TDD micro-cycles together,
- to take ultimate advantage of Mock Objects usage and to know their unique place among other Test Doubles,
- to test-drive "difficult" code such as multi-threaded or DB-related one,
... then this book is for you.
Finally, there is something that doesn't just say that TDD is as easy as "Red-Green-Refactor" but describes the Big Picture instead.
I do recommend this book for those who have already read some stuff on the topic but still have some questions unanswered.
A programming book with code samples that are almost impossible to read is a huge drawback. 70% of the value is lost in the kindle version.. I am sure that sooner or later this will be fixed but until then... stick to the printed version.
What I discovered was that I was thinking about tests the wrong way. In my current shop, I often got frustrated at what was, I was thrilled to discover, a completely pointless test that felt like coding pablum to make the CI server happy with "test coverage". Genuine testing is much, much more. A dev that genuinely embraces TDD, and doesn't use it as a mere add on on his/her resume, won't be doing "Test Driven Development" but really "Test Driven Design". Some of the important higher level concepts this includes are:
1.) Listening to tests to create a more supple architecture.
2.) How to avoid "gold plating" features ( a big one for me )
3.) Using tests to describe the action of the object.
4.) Using syntactic sugar to make your exposed API far more readable to a future reader
5.) Spectacularly compact APIs
6.) If you've done XP, "ping pong" development is a real pleasure ( one writes the test, the other is forced to implement the feature to make the test pass, then they switch roles ).
7.) Focusing on the "message" an object passes to its peers or its delegators, which puts OOP in an entirely new light to me.
The standard "implementation tools" are also covered in depth to give you the ability to do the things listed above. Can't recommend it strongly enough.