There’s an epidemic of bad software floating around these days. Chances are you’ve encountered buggy and/or unnecessarily hard to use software recently.
This epidemic isn’t really surprising, especially if you’ve read the books I’ve written with Matt Stephens: Design Driven Testing or Extreme Programming Refactored or Agile Development with ICONIX Process. There’s a bunch of agile development shops out there underspecifying their software and (as a result) testing it inadequately, so that you and I can have the privilege of debugging it for them and putting new user stories onto their backlog.
Imagine for a moment that you’re working at a company where the agile development process has gone off the rails and there is a train wreck. There’s a lot of smoke from the burndown charts burning up. Bodies are strewn all around, there are broken bones and people are bleeding everywhere. Some parts of your code are savable, and some have to be thrown away. You need to triage the situation and do damage control. Here are some guiding principles for your triage effort:
1. You can’t unit test what you forgot to remember.
2. You can't do scenario testing without modeling scenarios
3. You can't do requirement testing without modeling requirements
4. Excessive timeboxing results in shoddy workmanship