Test-Driven DevelopmentA Practical Guide: A Practical Guide
This title is ordered on demand which may result in extended delivery times.
This book teaches programmers how to make Test Driven Development (TDD) work in their organization. TDD is unique because it forces the programmer to write tests for code before the code is actually written. This process is the reverse of how software testing has traditionally been conducted, but TDD ensures that software is produced more efficiently. A test-first mentality allows the programmer to define, specify, illustrate, limit, and drive the code, resulting in documented, tested, code that is as simple and lean as possible. The book also presents tools and techniques, and all major points are supported by numerous examples (including an entire project, end-to-end) and exercises.
Test-Driven Development: A Practical Guide
David R. Astels
Foreword by Ron Jeffries
- The relentlessly practical TDD guide: real problems, real solutions, real code
- Includes a start-to-finish project written in Java and using JUnit
- Introduces TDD frameworks for C++, C#/.NET, Python, VB6, and more
- For every developer and project manager interested test-driven development
Make Test-Driven Development work for you!
Test-Driven Development: A Practical Guide enables developers to write software that's simpler, leaner, more reliable... just plain better.
Now, there's a TDD guide focused on real projects, real developers, real implementation challenges, and real code.
Renowned agile development expert Dave Astels shows TDD at work in a start-to-finish project written in Java and using the JUnit testing framework. You'll learn how "test first" works, why it works, what obstacles you'll encounter, and how to transform TDD's promise into reality.
- o Relentlessly practical! Full of downloadable code examples, hands-on exercises, and a fully hyperlinked version of the "resources" appendix
- o Introduces powerful TDD tools and techniques--including key JUnit extensions, presented by their creators (Scott Ambler, Tim Bacon, Mike Bowler, Mike Clark, Bryan Dollery, James Newkirk, Bob Payne, Kay Pentacost, and Jens Uwe Pipka)
- o Covers refactoring, "programming by intention," mock objects, and much more
- o Discusses TDD frameworks for C++, C#/.NET, Python, VB6, Ruby, and Smalltalk
- o Introduces previously unpublished test-first techniques for GUI software
- o Contains appendices introducing eXtreme Programming and Agile Modeling
- o For all programmers and project managers
Read this book if you're ready to write code that's clearer, more robust, and easier to extend & maintain--in short, if you're ready to write better code!
I. BACKGROUND.1. Test-Driven Development.
What Is Test-Driven Development? Let the Computer Tell You. A Quick Example. Summary. 2. Refactoring.
What Is Refactoring? When to Refactor. How to Refactor. Some Important Refactorings. Refactoring to Patterns. Summary. 3. Programming By Intention.
Names. Simplicity. Warranted Assumptions. How to Program by Intention. “No Comment”. Summary.
II. TOOLS AND TECHNIQUES.4. JUNIT.
Architectural Overview. The Assertions. Writing a TestCase. Running Your Tests. Using setUp() and tearDown(). Using TestSuite. How Does It All Fit Together? Where Do Tests Belong? Tips. Summary. 5. JUNITEXTENSIONS.
Standard Extensions. Adding Missing Asserts with MockObjects. Performance and Scalability with JUnitPerf. Daedalos JUnit Extensions. Writing XML-Based Tests with xmlUnit. Gargoyle Software JUnit Extensions. 6. JUNIT-Related Tools.
Jester. NoUnit. Clover. Eclipse. IDEA. 7. MockObjects.
Mock Objects. An Illustrative Example. Uses for Mock Objects. Wouldn't It Be Nice? A Common Example. The MockObjects Framework. MockMaker. EasyMock. Summary. 8. Developing a GUI Test-First.
The Example. The AWT Robot. Brute Force. JFCUnit. Jemmy. Ultra-Thin GUI. Summary.
III. A JAVA PROJECT: TEST-DRIVEN END TO END.9. THEPROJECT.
Overview. User Stories and Tasks. 10. Movie List.
Make a Movie Container. Make a Movie List GUI. Add a Movie in the GUI. Retrospective. 11. Movies Can Be Renamed.
Support Movie Name Editing. Movie Rename GUI. Retrospective. 12. Movies Are Unique.
Movies Are Unique. Error Message on Non-Uniqueness. Retrospective. 13. Ratings.
Add a Single Rating to Movie. Show the Rating in the GUI. Edit the Rating. Retrospective. 14. Categories.
Add a Category. Show the Category in the GUI. Add a Selection of Category. Retrospective. 15. Filter On Category.
Get a Sublist Based on Category. Support an ALL category. Add a Category Selector to the GUI. Handle Changing a Movie's Category. Interface Cleanup. Retrospective. 16. Persistence.
Write to a Flat File. Save-As in GUI. Save in GUI. Read from a Flat File. Load in GUI. Retrospective. 17. Sorting.
Compare Movies. Sort a MovieList. Ask a MovieListEditor for Sorted Lists. Add a Way to Sort to the GUI. Retrospective. 18. Multiple Ratings.
Multiple Ratings. Rating Source. Revised Persistence. Show Multiple Ratings in the GUI. Add a Rating in the GUI. Remove the Single-Rating Field. Retrospective. 19. Reviews.
Add a Review to Ratings. Save Review. Load Review. Display Review. Add a Review. Retrospective. 20. Project Retrospective.
The Design. Test vs Application. Test Quality. Our Use of Mocks. General Comments. Debugging. List of Tests. Summary.
IV. XUNIT FAMILY MEMBERS.21. RUBYUNIT.
V. APPENDICES.Appendix A: Extreme Programming.
The Agile Revolution. eXtreme Programming. The Four Variables. The Values. The Practices. Summary. Appendix B: Agilemodeling.
The Myths Surrounding Modeling. An Introduction to Agile Modeling (AM). What Are Agile Models? Appendix C: Online Resources.
Forums. Information on Agile Processes. Information on Extreme Programming. JUnit-Related Software. JUnit-Related Information. Tools. Other XUnit Family Members. Companies. Miscellaneous. Appendix D: Answers To Exercises.
Dave Astels has close to twenty years' experience as a software developer in areas ranging from embedded environment control to intellectual property protection systems to electrical energy trading systems. For more than a decade, he has been working exclusively with object technology. He runs his own consulting company specializing in Extreme Programming and pervasive Java solutions. He is the co-author of A Practical Guide to extreme Programming (ISBN 0130674826).