skip to main content
Skip header Section
Growing Object-Oriented Software, Guided by TestsOctober 2009
Publisher:
  • Addison-Wesley Professional
ISBN:978-0-321-50362-6
Published:22 October 2009
Pages:
384
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

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, youll 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

Cited By

  1. Chazette L, Brunotte W and Speith T (2022). Explainable software systems: from requirements analysis to system evaluation, Requirements Engineering, 27:4, (457-487), Online publication date: 1-Dec-2022.
  2. Aronshtam L, Shrot T and Shmallo R (2021). Can we do better? a classification of algorithm run-time-complexity improvement using the SOLO taxonomy, Education and Information Technologies, 26:5, (5851-5872), Online publication date: 1-Sep-2021.
  3. ACM
    Silva L and Vilain P LCCSS Proceedings of the 14th Brazilian Symposium on Software Components, Architectures, and Reuse, (91-100)
  4. Salva S and Blot E Using Model Learning for the Generation of Mock Components Testing Software and Systems, (3-19)
  5. Aniche M, Yoder J and Kon F Current challenges in practical object-oriented software design Proceedings of the 41st International Conference on Software Engineering: New Ideas and Emerging Results, (113-116)
  6. Lockwood D, Holland B and Kothari S Mockingbird Proceedings of the 41st International Conference on Software Engineering: Companion Proceedings, (39-42)
  7. Spadini D, Aniche M, Bruntink M and Bacchelli A (2019). Mock objects for testing java systems, Empirical Software Engineering, 24:3, (1461-1498), Online publication date: 1-Jun-2019.
  8. ACM
    Aniche M, Hermans F and van Deursen A Pragmatic Software Testing Education Proceedings of the 50th ACM Technical Symposium on Computer Science Education, (414-420)
  9. ACM
    Fazzolino R, de Faria H, Amaral L, Canedo E, Rodrigues G and Bonifácio R Assessing Agile Testing Practices for Enterprise Systems Proceedings of the III Brazilian Symposium on Systematic and Automated Software Testing, (29-38)
  10. ACM
    Tymchuk Y, Ghafari M and Nierstrasz O JIT feedback Proceedings of the 26th Conference on Program Comprehension, (64-73)
  11. Spadini D, Aniche M, Bruntink M and Bacchelli A To mock or not to mock? Proceedings of the 14th International Conference on Mining Software Repositories, (402-412)
  12. ACM
    Sedano T, Ralph P and Péraire C Sustainable Software Development through Overlapping Pair Rotation Proceedings of the 10th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, (1-10)
  13. ACM
    Bernstein M Storyspace 3 Proceedings of the 27th ACM Conference on Hypertext and Social Media, (201-206)
  14. ACM
    Pryce N Refactoring and Testing in 2016 Proceedings of the Scientific Workshop Proceedings of XP2016, (1-3)
  15. Besson F, Moura P, Kon F and Milojicic D (2015). Bringing Test-Driven Development to web service choreographies, Journal of Systems and Software, 99:C, (135-154), Online publication date: 1-Jan-2015.
  16. ACM
    Fucci D, Turhan B and Oivo M Impact of process conformance on the effects of test-driven development Proceedings of the 8th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, (1-10)
  17. ACM
    Fucci D Understanding the dynamics of test-driven development Companion Proceedings of the 36th International Conference on Software Engineering, (690-693)
  18. Greiler M, Zaidman A, Deursen A and Storey M Strategies for avoiding text fixture smells during software evolution Proceedings of the 10th Working Conference on Mining Software Repositories, (387-396)
  19. Greiler M, van Deursen A and Zaidman A Measuring test case similarity to support test suite understanding Proceedings of the 50th international conference on Objects, Models, Components, Patterns, (91-107)
  20. ACM
    Majchrzak T and Simon A Using spring Roo for the test-driven development of Web applications Proceedings of the 27th Annual ACM Symposium on Applied Computing, (664-671)
  21. ACM
    Hammond S and Umphress D Test driven development Proceedings of the 50th Annual Southeast Regional Conference, (158-163)
  22. ACM
    Hoda R, Kruchten P, Noble J and Marshall S (2010). Agility in context, ACM SIGPLAN Notices, 45:10, (74-88), Online publication date: 17-Oct-2010.
  23. ACM
    Achenbach M and Ostermann K Testing object-oriented programs using dynamic aspects and non-determinism Proceedings of the 1st Workshop on Testing Object-Oriented Systems, (1-6)
  24. ACM
    Hoda R, Kruchten P, Noble J and Marshall S Agility in context Proceedings of the ACM international conference on Object oriented programming systems languages and applications, (74-88)
Contributors
  • Purdue University
  • Imperial College London

Recommendations

Reviews

Michael G. Murphy

This book is a noteworthy contribution to the literature on test-driven development (TDD). As Kent Beck states in the foreword, "It is written by practitioners who code-and teach others to code-well." There are a variety of TDD styles, and this book focuses on a proven approach that is coherent, consistent, and scalable. Its 27 chapters, each with a specific focus, are smoothly organized into five parts: "Introduction," "The Process of Test-Driven Development," "A Worked Example," "Sustainable Test-Driven Development," and "Advanced Topics." In the title, the term "growing" refers to incremental development, and "guided" refers to making progress and raising quality by applying the results of the tests. The authors use Java for example code, with JUnit and jMock as supporting tools. The two appendices cover jMock and how to write a Hamcrest matcher, and there is even an afterword on the history of mock objects. Parts 1 and 2 build the foundation for a basic understanding of TDD, and Part 3 presents a very effective running example that demonstrates TDD in an object-oriented application "that watches online auctions and automatically bids slightly higher whenever the price changes." This is really the heart of the book, and the functionality of the application is built up over 11 chapters in an easy-to-follow process that presents TDD, incremental development, and the evolution of an application from a concept to a fully thought-out system. Part 4 addresses system maintainability, and Part 5 looks at the challenges of complex test data, persistence, and concurrency. As extreme programming (XP) and agile development mature, TDD is ready to take its rightful place in the pantheon of proven software development methodologies. This well-written book is intended for software developers who are open to the advantages that TDD can provide. The TDD community may also want to take a good look to see the maturing of their field as it is happening. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.