[prog] State of software engineering profession
kat_lists at katspace.com
Tue Apr 15 21:51:44 EST 2003
On Tue, Apr 15, 2003 at 05:39:43AM -0500, Robert J. Hansen wrote:
> > rely on an external QA group to test your software. An external group
> > will never be able to test the software as well as the group that
> > developed it. Usually, black box testing can only verify the use case is
> This is, as near as I can tell, in contradiction to the best current
> practice. Every shop I've worked in has kept QA separate, precisely
> because developers are so lousy at QA. We often received builds which
> wouldn't compile and we had to fix it ourselves. Just making sure the
> code compiles is the simplest, most basic of checking, and developers
> would repeatedly not do it.
> > 6a. Know HOW you plan to test the code when you design and implement it.
> This leads to writing test cases which are meant to pass the design, not
> to test the code. "We plan to test the code by entering up to
> 80-character ASCII strings" leads to some developer thinking "okay, so
> all I need are 80 bytes and I'm safe", instead of "I don't know how long
> this string is going to be, so I'd better resize it on the fly".
> > Often, testing is passed to someone else, so very little thought is given
> > to the testing procedure.
> Which is insulting to those of us who've worked in QA, and who devoted
> quite a bit of thought to figuring out new and interesting ways to make
> developers cry. :)
Too right, mate. A good QA person is worth their weight in gold.
The thing is, what is really needed is *both*.
You need the programmers to do "unit testing" -- compile the code, run
it, and if possible, write and run regression tests for the bitsy things
that the program can do. Every time a bug is fixed, while the bug is
being worked on, add another regression test which reproduced the bug --
that way, one can test whether the bug was fixed, and test whether the
bug remains fixed in future.
Of course some software is more amenable to regression-test writing than
*Then* you get the QA people (at our small company it's the support
people who do it, we don't split it out) to bash at the program like a
user would. You *need* that, because the programmer is too close to the
system -- they know how it's supposed to be used, and unconciously avoid
the corner cases or the randomness that a user would do ("Hey, let's
press that button and see what it does. Ooops, it crashed.")
A testing person shouldn't know anything about the implementation, they
should just know what the requirements for the program are, and test
them. You need someone with a user-eye view, because the programmers
are always going to have a programmers-eye view of it. Fresh eyes are a
But it sounds like, in both your cases, that testing was simply not
given a high enough priority from either side.
Spock: Excuse me, Doctor. I'm getting a number of distress calls.
McCoy: I don't doubt it.
(Star Trek IV: The Voyage Home)
_--_|\ | Kathryn Andersen <http://www.katspace.com>
/ \ |
\_.--.*/ | GenFicCrit mailing list <http://www.katspace.com/gen_fic_crit/>
------------| Melbourne -> Victoria -> Australia -> Southern Hemisphere
Maranatha! | -> Earth -> Sol -> Milky Way Galaxy -> Universe
More information about the Programming