Software Testing Problems Part 4: Making Software Testable

If software is poorly designed to begin with it will be un-testable and remain bug
ridden in its delivery to the customers.  This
realization is probably what has spurred thinking around ideas like “Test
Driven Development
”.  IMO, the spirit
of concept is good, but lacking in practical fundamentals in most executions.  The
spirit is meant to say “Test early, test units, and test often”.  If
followed exclusively the practice will lead you to spend too much of your limited
time testing in small chunks without a focus on the larger system that your user sees.  Its
main strength lies in testing small isolated functions that are bound to undergo churn
throughout a cycle.  What can you do?

"urn:schemas-microsoft-com:office:office" />


You can make your software focused and testable from the start.  I’ve
become really tired of software that tries everything and isn’t really successful
at anything.  It’s unfortunately a lesson
that Microsoft has had to learn the hard way a few times.  If
you design your software around a minimal set of scenarios you want to enable your
going to be able to support them with a much smaller test bed.  When
you are designing features or software you need to think about the potential difficulties
and costs of testing each one from the start knowing, of course, that you won’t ever
catch everything to begin with.  This
is why a measure
of test difficulty
is important early in the design stages.  Don’t
design features that are going to be really difficult to test. Or at least, don’t
try to squeeze them all into one release. 


I haven’t owned any of them, but I’ve read reviews of Ipod competitors crashing frequently
and general problems that people have with them.  I
read these reviews because I’ve been tempted by additional features like WMA playback,
FM Tuner, and Recording.  In truth, I’m
the type of person that, if the Ipod wasn’t first to the market in the reasonably
sized HD music player I probably would have bought one of these devices.  After
owning my Ipod any competitor is going to have to go a step beyond these extra features
make me give up my current player.  Why?
Because it excels at one thing; Storing and playing back a large amount of music files.  True,
they did squeeze in a minimal calendar, contact list, and game, but these really do
feel “tacked-on” and out of place.  Hell,
my version doesn’t even let me create playlists on the fly if I’m not connected to
my computer and the default windows Ipod music manager is terrible.  However,
I can navigate my stored collection, pause, resume, adjust the volume, and skip/go
back while listening.  It doesn’t sound
like much, but it’s done so well I can do all this without looking at the device,
with one finger, through an Ipod cover and pants pocket that it rests safely in.  It
was designed simple and they could focus their testing on a few fundamentals in order
to refine the simplicity.  Ok, so that
was a long way to make my point.


Eventually the Ipod will end up adding more features, but they can do this building
upon a solid simple base that can be extended one piece at a time as long as they
don’t sacrifice their core scenarios.  You
won’t catch everything; pick your battles one release at a time. 


I may have strayed off of the original subject a bit here, but it’s a point that needs
to be made.  I wonder if anyone can guess
what some of the central Visual Studio scenarios where for the 2002 and 2003 releases.