Growing Object-Oriented Software, Guided by Tests
Home > Computing and Information Technology > Computer programming / software engineering > Object-oriented programming (OOP) > Growing Object-Oriented Software, Guided by Tests: (Addison-Wesley Signature Series (Beck))
Growing Object-Oriented Software, Guided by Tests: (Addison-Wesley Signature Series (Beck))

Growing Object-Oriented Software, Guided by Tests: (Addison-Wesley Signature Series (Beck))


     0     
5
4
3
2
1



International Edition


X
About the Book

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  

Table of Contents:
Foreword     xv Preface     xvii Acknowledgments     xxi About the Authors     xxiii   PART I: INTRODUCTION     1   Chapter 1: What Is the Point of Test-Driven Development?     3 Software Development as a Learning Process     3 Feedback Is the Fundamental Tool     4 Practices That Support Change     5 Test-Driven Development in a Nutshell     6 The Bigger Picture     7 Testing End-to-End     8 Levels of Testing     9 External and Internal Quality     10   Chapter 2: Test-Driven Development with Objects     13 A Web of Objects     13 Values and Objects     13 Follow the Messages     14 Tell, Don’t Ask     17 But Sometimes Ask     17 Unit-Testing the Collaborating Objects     18 Support for TDD with Mock     19   Chapter 3: An Introduction to the Tools     21 Stop Me If You’ve Heard This One Before     21 A Minimal Introduction to JUnit 4     21 Hamcrest Matchers and assertThat()     24 jMock2: Mock Objects     25   PART II: THE PROCESS OF TEST-DRIVEN DEVELOPMENT     29   Chapter 4: Kick-Starting the Test-Driven Cycle     31 Introduction     31 First, Test a Walking Skeleton     32 Deciding the Shape of the Walking Skeleton     33 Build Sources of Feedback     35 Expose Uncertainty Early     36   Chapter 5: Maintaining the Test-Driven Cycle     39 Introduction     39 Start Each Feature with an Acceptance Test     39 Separate Tests That Measure Progress from Those That Catch Regressions     40 Start Testing with the Simplest Success Case     41 Write the Test That You’d Want to Read     42 Watch the Test Fail     42 Develop from the Inputs to the Outputs     43 Unit-Test Behavior, Not Methods     43 Listen to the Tests     44 Tuning the Cycle     45   Chapter 6: Object-Oriented Style     47 Introduction     47 Designing for Maintainability     47 Internals vs. Peers     50 No And’s, Or’s, or But’s     51 Object Peer Stereotypes     52 Composite Simpler Than the Sum of Its Parts     53 Context Independence     54 Hiding the Right Information     55 An Opinionated View     56   Chapter 7: Achieving Object-Oriented Design     57 How Writing a Test First Helps the Design     57 Communication over Classification     58 Value Types     59 Where Do Objects Come From?     60 Identify Relationships with Interfaces     63 Refactor Interfaces Too     63 Compose Objects to Describe System Behavior     64 Building Up to Higher-Level Programming     65 And What about Classes?     67   Chapter 8: Building on Third-Party Code     69 Introduction     69 Only Mock Types That You Own     69 Mock Application Objects in Integration Tests     71   PART III: A WORKED EXAMPLE     73   Chapter 9: Commissioning an Auction Sniper     75 To Begin at the Beginning     75 Communicating with an Auction     78 Getting There Safely     79 This Isn’t Real     81   Chapter 10: The Walking Skeleton     83 Get the Skeleton out of the Closet     83 Our Very First Test     84 Some Initial Choices     86   Chapter 11: Passing the First Test     89 Building the Test Rig     89 Failing and Passing the Test     95 The Necessary Minimum     102   Chapter 12: Getting Ready to Bid     105 An Introduction to the Market     105 A Test for Bidding     106 The AuctionMessageTranslator     112 Unpacking a Price Message     118 Finish the Job     121   Chapter 13: The Sniper Makes a Bid     123 Introducing AuctionSniper     123 Sending a Bid     126 Tidying Up the Implementation     131 Defer Decisions     136 Emergent Design     137   Chapter 14: The Sniper Wins the Auction     139 First, a Failing Test     139 Who Knows about Bidders?     140 The Sniper Has More to Say     143 The Sniper Acquires Some State     144 The Sniper Wins     146 Making Steady Progress     148   Chapter 15: Towards a Real User Interface     149 A More Realistic Implementation     149 Displaying Price Details     152 Simplifying Sniper Events     159 Follow Through     164 Final Polish     168 Observations     171   Chapter 16: Sniping for Multiple Items     175 Testing for Multiple Items     175 Adding Items through the User Interface     183 Observations     189   Chapter 17: Teasing Apart Main     191 Finding a Role     191 Extracting the Chat     192 Extracting the Connection     195 Extracting the SnipersTableModel     197 Observations     201   Chapter 18: Filling In the Details     205 A More Useful Application     205 Stop When We’ve Had Enough     205 Observations     212   Chapter 19: Handling Failure     215 What If It Doesn’t Work?     215 Detecting the Failure     217 Displaying the Failure     218 Disconnecting the Sniper     219 Recording the Failure     221 Observations     225   PART IV: SUSTAINABLE TEST-DRIVEN DEVELOPMENT     227   Chapter 20: Listening to the Tests     229 Introduction     229 I Need to Mock an Object I Can’t Replace (without Magic)     230 Logging Is a Feature     233 Mocking Concrete Classes     235 Don’t Mock Values     237 Bloated Constructor     238 Confused Object     240 Too Many Dependencies     241 Too Many Expectations     242 What the Tests Will Tell Us (If We’re Listening)     244   Chapter 21: Test Readability     247 Introduction     247 Test Names Describe Features     248 Canonical Test Structure     251 Streamline the Test Code     252 Assertions and Expectations     254 Literals and Variables     255   Chapter 22: Constructing Complex Test Data     257 Introduction     257 Test Data Builders     258 Creating Similar Objects     259 Combining Builders     261 Emphasizing the Domain Model with Factory Methods     261 Removing Duplication at the Point of Use     262 Communication First     264   Chapter 23: Test Diagnostics     267 Design to Fail     267 Small, Focused, Well-Named Tests     268 Explanatory Assertion Messages     268 Highlight Detail with Matchers     268 Self-Describing Value     269 Obviously Canned Value     270 Tracer Object     270 Explicitly Assert That Expectations Were Satisfied     271 Diagnostics Are a First-Class Feature     271   Chapter 24: Test Flexibility     273 Introduction     273 Test for Information, Not Representation     274 Precise Assertions     275 Precise Expectations     277 “Guinea Pig” Objects     284   PART V: ADVANCED TOPICS     287   Chapter 25: Testing Persistence     289 Introduction     289 Isolate Tests That Affect Persistent State     290 Make Tests Transaction Boundaries Explicit     292 Testing an Object That Performs Persistence Operations     294 Testing That Objects Can Be Persisted     297 But Database Tests Are S-l-o-w!     300   Chapter 26: Unit Testing and Threads     301 Introduction     301 Separating Functionality and Concurrency Policy     302 Unit-Testing Synchronization     306 Stress-Testing Passive Objects     311 Synchronizing the Test Thread with Background Threads     312 The Limitations of Unit Stress Tests     313   Chapter 27: Testing Asynchronous Code     315 Introduction     315 Sampling or Listening     316 Two Implementations     318 Runaway Tests     322 Lost Updates     323 Testing That an Action Has No Effect     325 Distinguish Synchronizations and Assertions     326 Externalize Event Sources     326   Afterword: A Brief History of Mock Objects     329 Appendix A: jMock2 Cheat Sheet     335 Appendix B: Writing a Hamcrest Matcher     343 Bibliography     347 Index     349  

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.  


Best Sellers


Product Details
  • ISBN-13: 9780321503626
  • Publisher: Pearson Education (US)
  • Publisher Imprint: Addison-Wesley Educational Publishers Inc
  • Height: 230 mm
  • No of Pages: 384
  • Series Title: Addison-Wesley Signature Series (Beck)
  • Weight: 620 gr
  • ISBN-10: 0321503627
  • Publisher Date: 29 Oct 2009
  • Binding: Paperback
  • Language: English
  • Returnable: Y
  • Spine Width: 20 mm
  • Width: 180 mm


Similar Products

Add Photo
Add Photo

Customer Reviews

REVIEWS      0     
Click Here To Be The First to Review this Product
Growing Object-Oriented Software, Guided by Tests: (Addison-Wesley Signature Series (Beck))
Pearson Education (US) -
Growing Object-Oriented Software, Guided by Tests: (Addison-Wesley Signature Series (Beck))
Writing guidlines
We want to publish your review, so please:
  • keep your review on the product. Review's that defame author's character will be rejected.
  • Keep your review focused on the product.
  • Avoid writing about customer service. contact us instead if you have issue requiring immediate attention.
  • Refrain from mentioning competitors or the specific price you paid for the product.
  • Do not include any personally identifiable information, such as full names.

Growing Object-Oriented Software, Guided by Tests: (Addison-Wesley Signature Series (Beck))

Required fields are marked with *

Review Title*
Review
    Add Photo Add up to 6 photos
    Would you recommend this product to a friend?
    Tag this Book Read more
    Does your review contain spoilers?
    What type of reader best describes you?
    I agree to the terms & conditions
    You may receive emails regarding this submission. Any emails will include the ability to opt-out of future communications.

    CUSTOMER RATINGS AND REVIEWS AND QUESTIONS AND ANSWERS TERMS OF USE

    These Terms of Use govern your conduct associated with the Customer Ratings and Reviews and/or Questions and Answers service offered by Bookswagon (the "CRR Service").


    By submitting any content to Bookswagon, you guarantee that:
    • You are the sole author and owner of the intellectual property rights in the content;
    • All "moral rights" that you may have in such content have been voluntarily waived by you;
    • All content that you post is accurate;
    • You are at least 13 years old;
    • Use of the content you supply does not violate these Terms of Use and will not cause injury to any person or entity.
    You further agree that you may not submit any content:
    • That is known by you to be false, inaccurate or misleading;
    • That infringes any third party's copyright, patent, trademark, trade secret or other proprietary rights or rights of publicity or privacy;
    • That violates any law, statute, ordinance or regulation (including, but not limited to, those governing, consumer protection, unfair competition, anti-discrimination or false advertising);
    • That is, or may reasonably be considered to be, defamatory, libelous, hateful, racially or religiously biased or offensive, unlawfully threatening or unlawfully harassing to any individual, partnership or corporation;
    • For which you were compensated or granted any consideration by any unapproved third party;
    • That includes any information that references other websites, addresses, email addresses, contact information or phone numbers;
    • That contains any computer viruses, worms or other potentially damaging computer programs or files.
    You agree to indemnify and hold Bookswagon (and its officers, directors, agents, subsidiaries, joint ventures, employees and third-party service providers, including but not limited to Bazaarvoice, Inc.), harmless from all claims, demands, and damages (actual and consequential) of every kind and nature, known and unknown including reasonable attorneys' fees, arising out of a breach of your representations and warranties set forth above, or your violation of any law or the rights of a third party.


    For any content that you submit, you grant Bookswagon a perpetual, irrevocable, royalty-free, transferable right and license to use, copy, modify, delete in its entirety, adapt, publish, translate, create derivative works from and/or sell, transfer, and/or distribute such content and/or incorporate such content into any form, medium or technology throughout the world without compensation to you. Additionally,  Bookswagon may transfer or share any personal information that you submit with its third-party service providers, including but not limited to Bazaarvoice, Inc. in accordance with  Privacy Policy


    All content that you submit may be used at Bookswagon's sole discretion. Bookswagon reserves the right to change, condense, withhold publication, remove or delete any content on Bookswagon's website that Bookswagon deems, in its sole discretion, to violate the content guidelines or any other provision of these Terms of Use.  Bookswagon does not guarantee that you will have any recourse through Bookswagon to edit or delete any content you have submitted. Ratings and written comments are generally posted within two to four business days. However, Bookswagon reserves the right to remove or to refuse to post any submission to the extent authorized by law. You acknowledge that you, not Bookswagon, are responsible for the contents of your submission. None of the content that you submit shall be subject to any obligation of confidence on the part of Bookswagon, its agents, subsidiaries, affiliates, partners or third party service providers (including but not limited to Bazaarvoice, Inc.)and their respective directors, officers and employees.

    Accept

    Fresh on the Shelf


    Inspired by your browsing history


    Your review has been submitted!

    You've already reviewed this product!