Craig Berry coined an interesting phrase for what I've been doing over on vmsperl. http:[EMAIL PROTECTED]/msg05063.html
"Bull In A China Shop Testing" Take a knowledgeable tester/programmer/user and place him in an environment of which he knows very little (such as plopping a Unix guy onto VMS). Then set him free to try and make the thing work just by reading the published directions. What ensues is typically a flurry of questions, often beginning with "Why". "Why does it work this way?" "Why am I not allowed to do X?" "Why can't I do Y?" "Why do I have to do X, Y and Z when I only have to do X on Unix?" "Why doesn't X work?" (This stage could be called "Five Year Old Kid Testing") Some will be questions that would be obvious to a normal user. Those can be safely discarded. Others will be questions that wouldn't be so obvious. Those are candidates for expanding the FAQ and docs. Others will expose documentation that is either out of date, wrong or makes assumptions about the user's environment. Be patient with the Bull and you can improve your docs wonderfully. A project who's test suite has "expected failures", they've lost confidence in the tests because they always seem to fail for things that aren't really bugs, is a perfect candidate for a Bull. One of the first questions will be "Why are these tests failing?" People more familiar with the project will have unconsciously trained themselves to step lightly around certain areas of the code that they know are fragile or messy. There's always certain spots that everyone knows is a problem, but nobody really wants to go in and clean up. The Bull, being a bull, does not step lightly. He'll stomp around shaking things, looking at messy code that everyone else has written off and loudly declaring "Wow, what a mess!" [1] Asking uncomfortable questions can often lead to the problems being solved. Sometimes a little more incentive is needed, like the Bull trying to fix the problem himself, often breaking lots of things in the process motivating everyone else to come in and clean up the mess (and hopefully fixing the original problem in the first place). So the basic idea is to introduce an unfamiliar, yet otherwise knowledgeable, person to a stagnant project. The Bull. He asks lots of troublesome questions and makes fumbled attempts at fixing problems (fumbled because of the unfamiliar environment). The net result is a lot of assumptions get questioned, confidence in the existing docs and tests shaken, nasty code gets dusted off and in general breathes some new life in the project. Sort of a Darwinian approach to QA. Can you build bull-proof China shop? The downside being that you've got this big oaf charging around breaking stuff in the middle of your project. Essentially, a walking proof of Brooks' Law. In order for it to work, the Bull must be able to learn the new environment fast (*without* losing his basic naivete), rapidly correct his mistakes, work well with others, have a sense of humor about all the criticism and friction which has been caused. It helps immeasurably if the Bull can contribute useful code once in a while, especially when it comes to solving nasty, old problems. People will forgive a lot of someone that writes good code. The proportion of good patches to flubbed patches should rise rapidly over time as the Bull gets familiar with the environment. This is why its important that the part of the Bull be played by someone who is otherwise experienced. [1] Add decorum as necessary. -- Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/ Perl Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One A tickle of paste Teases down my sweaty thigh Oh, plug it again! -- ignatz