Testing tools and environments may change. Application tools and environments may change. But the principles of good sound testing remain the same: timing, organization, logic, thoroughness, clear communication, and attention to detail.
Timing is everything. A friend of mine told me about David Ives’ play—actually, a group of plays—called “All in the Timing”. Each play within the group has its own wacky setup and plot. Here’s the catch: the actors don’t know which play they’re going to do each night until they get to the theater! They must be prepared to quickly put their minds and their bodies into the right gear for that evening’s characters and perform the comedy with the timing required for that particular play.
Now isn’t that a lot like testing? The timing at which we enter the project is key: Enter early enough, in the requirements development stage, reviewing for testability as the requirements are forming, and sailing is relatively smooth. We gain an early understanding of the project, start formulating tests early on, and are ready to test as new modules are developed. The further along the development process is before we become a part of it, the closer we get to David Ives’ world, hoping we can write and execute really good tests and don’t hit the wacky stage in the process.
Or how about the timing of performing the testing? Thorough, consistent unit testing combined with system/feature testing as each new feature or feature component is developed leads to early bug detection and plenty of time to address and repair issues, modify design, or whatever is needed to correct the problem. Test too early and developers claim the development isn’t ready yet…sometimes even if they’ve put a checkmark in the box that says that feature is ready. Test too late in the cycle and we miss key bugs, we don’t have time to re-test after the bugs we did find are repaired, or the bugs simply don’t get fixed at all. And then the application heads toward David Ives’ world.
Speaking of timing, I think I’ll stop with what I’ve got here for the time being. We’ll address some of the other key principles as we go along later.
But for now…what are your thoughts on timing? Funny stories? Horror stories? Timing issues I haven’t listed here?