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
- 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.
- 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.
- Silva L and Vilain P LCCSS Proceedings of the 14th Brazilian Symposium on Software Components, Architectures, and Reuse, (91-100)
- Salva S and Blot E Using Model Learning for the Generation of Mock Components Testing Software and Systems, (3-19)
- 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)
- Lockwood D, Holland B and Kothari S Mockingbird Proceedings of the 41st International Conference on Software Engineering: Companion Proceedings, (39-42)
- 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.
- 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)
- 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)
- Tymchuk Y, Ghafari M and Nierstrasz O JIT feedback Proceedings of the 26th Conference on Program Comprehension, (64-73)
- 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)
- 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)
- Bernstein M Storyspace 3 Proceedings of the 27th ACM Conference on Hypertext and Social Media, (201-206)
- Pryce N Refactoring and Testing in 2016 Proceedings of the Scientific Workshop Proceedings of XP2016, (1-3)
- 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.
- 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)
- Fucci D Understanding the dynamics of test-driven development Companion Proceedings of the 36th International Conference on Software Engineering, (690-693)
- 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)
- 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)
- 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)
- Hammond S and Umphress D Test driven development Proceedings of the 50th Annual Southeast Regional Conference, (158-163)
- 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.
- 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)
- 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)
Index Terms
- Growing Object-Oriented Software, Guided by Tests
Recommendations
Testing object-oriented software
ACM-SE 33: Proceedings of the 33rd annual on Southeast regional conferenceObject-oriented (OO) software development is now widely practiced because of its potential for improvement in design and maintenance. Several authors, for example [1], [2], [3], and [4], have addressed the testing of OO systems. None of the researchers ...
A Framework of Generating Software Process Including Milestones for Object-Oriented Development Method
APSEC '96: Proceedings of the Third Asia-Pacific Software Engineering ConferenceOne of the major problems in object-oriented software projects is the lack of management ability to comprehend and control the development progress of a project. This is because traditional phases of software development are not appropriate for object-...