Synopses & Reviews
The groundbreaking book Design Driven Testing brings sanity back to the software development process by flipping around the concept of Test Driven Design such that design comes in its rightful order--first. This book introduces the premise of Design Driven Testing: that you first create a software design, and then drive the tests and the code from that design model. The purpose of the tests then is not to drive the design but to reliably prove that the design has been correctly implemented.
Before you design, though, you need requirements: and you must be able to test that the requirements have been implemented to spec, using acceptance tests driven by critical control points that you will learn to identify in your use cases.
Design Driven Testing is an agile process. The author's approach to design is a lightweight, use-case driven methodology based upon a core subset of the UML. Design Driven Testing does not burden your projects with cumbersome design processes. Rather it recognizes reality--that design comes first. You design. You build tests to verify the design. You write code to implement the design. You run the tests to verify the code. With Design Driven Testing, you get all the benefits of Test Driven Development while recognizing the reality that design is, in fact, paramount. Brings sanity and design back to software development Illustrates a lightweight and highly-effective design approach Applies design driven testing to each stage of the project lifecycle What You'll Learn Bulletproof your code and test smarter, not harder Generate appropriate tests for each stage of a project's lifecyle Learn a streamlined approach to object-oriented design Verify detailed design through unit testing Drive acceptance testing through a design model based upon use cases Prove that requirements have been met through effective requirements testing Recognize and sidestep the problems inherent in Test-Driven Development Who this book is for
Design Driven Testing appeals to developers who want to throw of the shackles of extreme programming and test-driven design, and put some sanity back into their development efforts. The book especially appeals to those developers who are contractually obligated to verify their software against formal requirements, and to developers working on large-scale, multi-million-lines-of-code systems. These developers will benefit greatly from the rational and disciplined approach espoused by the authers.
Synopsis
In this chapter we illustrated how to drive unit tests from a software design, identifying test scenarios in a systematic way that ensures the code is covered in all the right places. We also illustrated the use of stunt services and mock objects to isolate the code being tested; finally, we discussed driving unit tests deeper into algorithmic code that may benefit from finer-grained testing. Is there a way to get 95% of the benefit of the comprehensive unit testing we did in this chapter with significantly fewer tests? In the next chapter, we ll show how to do exactly that with controller tests. As you ll see, unit tests do have their place, but controller tests can often represent a smarter, more structured approach to application testing. 136 C H A P T E R 6 ? ? ? Conceptual Design and Controller Testing As you saw in Chapter 5, unit testing doesn t have to involve exhaustively covering every single line of code, or even every single method, with tests. There s a law of diminishing returns and increasing difficulty as you push the code coverage percentile ever higher. By taking a step back and looking at the design on a broader scale, it s possible to pick out the key areas of code that act as input/output junctures, and focus the tests on those areas."
Synopsis
- Somebody Has It Backwards
- TDD Using Hello World
- "Hello World " Using DDT
- Introducing the Mapplet Project
- Detailed Design and Unit Testing
- Conceptual Design and Controller Testing
- Acceptance Testing: Expanding Use Case Scenarios
- Acceptance Testing: Business Requirements
- Unit Testing Antipatterns (The "Don'ts")
- Design for Easier Testing
- Automated Integration Testing
- Unit Testing Algorithms
- Alice in Use-Case Land
- 'Twas Brillig and the Slithy Tests
Synopsis
The groundbreaking book Design Driven Testing brings sanity back to the software development process by flipping around the concept of Test Driven Development (TDD)?restoring the concept of using testing to verify a design instead of pretending that unit tests are a replacement for design. Anyone who feels that TDD is ?Too Damn Difficult? will appreciate this book.
Design Driven Testing shows that, by combining a forward-thinking development process with cutting-edge automation, testing can be a finely targeted, business-driven, rewarding effort. In other words, you?ll learn how to test smarter, not harder.Applies a feedback-driven approach to each stage of the project lifecycle. Illustrates a lightweight and effective approach using a core subset of UML. Follows a real-life example project using Java and Flex/ActionScript. Presents bonus chapters for advanced DDTers covering unit-test antipatterns (and their opposite, ?test-conscious? design patterns), and showing how to create your own test transformation templates in Enterprise Architect. What you?ll learn Create unit and behavioral tests using JUnit, NUnit, FlexUnit. Generate acceptance tests for all usage paths through use case thread expansion. Generate requirement tests for functional requirements. Run complex acceptance tests across the enterprise. Isolate individual control points for self-contained unit/behavioral tests. Apply behavior-driven development frameworks like JBehave and NBehave Who this book is for
Design Driven Testing should appeal to developers, project managers, testers, business analysts, architects?in fact, anyone who builds software that needs to be tested. While equally applicable on both large and small projects, Design Driven Testing is especially helpful to those developers who need to verify their software against formal requirements. Such developers will benefit greatly from the rational and disciplined approach espoused by the authors. Table of Contents Somebody Has It Backwards TDD Using Hello World ?Hello World ? Using DDT Introducing the Mapplet Project Detailed Design and Unit Testing Conceptual Design and Controller Testing Acceptance Testing: Expanding Use Case Scenarios Acceptance Testing: Business Requirements Unit Testing Antipatterns (The ?Don?ts?) Design for Easier Testing Automated Integration Testing Unit Testing Algorithms Alice in Use-Case Land ?Twas Brillig and the Slithy Tests