courses are full of testers who are eager to learn. I start each class with one simple theorem: "Anyone who thinks they can learn testing in a single day is a fool who has no business testing software." I invite such people to leave my course and implore them to leave the discipline. By this rather harsh statement, I stand firm: testing is not to be taken lightly.
Testing is a pursuit; testing begins, but it never ends. This is a fact of life: we can never be finished with our testing task. No matter how much code we cover, there is always more that remains uncovered. No matter how many input combinations we apply, there are so many more that we did not apply. No matter how much we think we excel at testing, there are more complexities and subtleties that elude our full understanding.
Testers must demand, and receive, the education they so desperately need. Companies that refuse continuing education benefits-conferences, onsite or remote courses, books, and (if you are lucky enough to find them) graduate college courses-should be banned from the practice of software development. Such companies are a hazard to software users everywhere. Testing is a challenging intellectual discipline. It not only requires training, it demands it. Companies that refuse to cover these expenses for testers are negligent.
The hiring of degreed engineers for test positions
Testing is not a clerical task. It is an engineering discipline and is best carried out by trained engineers. Obviously, one cannot over-generalize here. There are some people who have majored in the arts who make fine testers. And we always need domain experts to test applications that require specialized skill (imagine testing a flight simulator without a pilot or two on your team). But, in general, a computer science degree (or related major) is necessary. There is background knowledge about algorithms, computational complexity, graph theory, and data structures that are requisite skills, building blocks for a deep and well-rounded testing education.
Now, if we could get more universities to actually teach testing, we'd all be even better off. But testers need to understand development, even if they don't practice it on a regular basis.
My advice can be summarized as follows:
Begin by hiring college graduates who have majored in something technical and related to computer science (electrical engineering, computer engineering, physics, math, and so forth). The education level of your testers should be equivalent to or better than that of your developers.
Insist on continuing education benefits. Start by showing that the bugs that managed to slip into the released product could have been found with more advanced testing techniques and make a strong bid for training concerning those techniques. You must make the argument, convincingly, that more training will equate to better software.
Nurture a testing culture in your company that allows you to learn from the bugs that you find and the bugs that your customers find. Don't apologize for the bugs that slip through. Make them a learning opportunity. Pick them apart and be sure every tester knows why that bug was overlooked. Bugs are corporate assets because they teach us about what we are doing wrong. Being proactive about correcting these mistakes will go a long way toward showing upper management that Test is a crucial aspect of product development that improves when it is taken seriously. You cannot expect upper management to take
you seriously until you take yourselves and your discipline seriously. The more attention you pay to improving the performance of Test, the more respect you will gain.
Finally, I must