There seems to be an unreasonable obsession with unit tests these days.
They certainly have their place, but the time, energy, and thought spent
mocking and the effort spent avoiding and delaying testing fully
integrated real software seems absurd in many cases.
After all while unit tests are inherently faster and highly focused,
they're "low fidelity" -- providing no assurance whatsoever of quality
of the overall integrated software. They can be a helpful
quick-and-dirty (and inaccurate) check on one's work throughout the day
and a helpful tool in tracking who-done-it when the real software
breaks, but the thing that really matters is that your overall software
behave as expected, which unit tests can never assure.
--
Jess Holle
Agreed. I may invite some criticism with what I'm about to say, but in my own experience, a solid API design early on generally allows for good isolation of functionality, such that it can be tested with or without automation and subsequently 99% of bugs reside in higher level decisions and very occasionally in implementation details. It's been very rare in my career that it would have been great to have a unit testing harness ready to go in order to instantly check that modifying implementation details of something down the road is not introducing unexpected behavior. And generally, when that situation arises, it's not so bad to sit down and put together some test cases for the "before" version, make sure it passes, and then apply it to the "after" version. To me, it's completely acceptable to make that part of the debugging/QA process rather than rigidly grown your development process around it from the very beginning of the project.
Alexey
2001 Honda CBR600F4i (CCS)
1992 Kawasaki EX500
http://azinger.blogspot.com
http://bsheet.sourceforge.net
http://wcollage.sourceforge.net
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
All I can say is that in situations like this, our biggest headaches came not from failed integrations or inability to refactor to our liking, but from difficult architecture problems, unreliably reproducible bugs, or quite simply from overly aggressive demo schedules. Yes, I've been in a position, where unit tests raised alarms. I remember a particular case, where I had joined a project that was under a lot of scheduling pressures and it was quite tough for anyone on the team to allocate sufficient time to properly introduce me into the inner workings of the code base. The system was highly modular with lots of daily changes fixing and breaking stuff. Without unit tests in place, it would have been impossible for me to even know if I'd set up the dev environment correctly.
I'm a firm believer in the right tool for the job/circumstances. All I'm saying is that I've definitely seen circumstances, where we survived just fine without automated fine grained testing, at least at specific stages of development and with developing fine grained testing for earlier written code as part of QA and debugging processes.
Alexey
2001 Honda CBR600F4i (CCS)
1992 Kawasaki EX500
http://azinger.blogspot.com
http://bsheet.sourceforge.net
http://wcollage.sourceforge.net
--- On Tue, 4/29/08, Kevin Wong <kevin.pe...@gmail.com> wrote:
http://www.artima.com/weblogs/viewpost.jsp?thread=198674
with kind regards,
David Linsin
- - - - - - - - - - - - - - - - - - - - - - - -
email: dli...@gmail.com
blog: http://dlinsin.blogspot.com