Why Testers? An Existential Pontification
For those that are not familiar with the profession of software testing or those that don’t believe in our value, I have written this piece to shed light on the basic psychology of why there exists the occupation of software testing. However, I must not make the assumption that all know what it is to test. Even people with technical coding or programming skills tend to have some wrong ideas about what it is to be a software tester. First thing, testing is not debugging your code. If you think that’s what testing is, then hold on to your hat. I’m going to feed you some truth. Here are three definitions that cover different aspects to the essence of testing:
- Testing is a process of comparing “what is” with “what ought to be.” (Testing is a verification of business requirements. Testing is a reality check to make sure the program asked for is what was delivered.)
- Testing is the process of executing a program with the intent of finding errors. (Testing is bug and defect hunting)
- Testing is an inquiry into the value or nature of something. (Testing is an appraisal process, analyzing the value of the product. Like the Antiques Roadshow.)
Even with these definitions, as well thought out and researched as they are, I have given you but a shadow of that essence of testing. Give me a break; I have to start somewhere.
Now that we have defined testing, let’s synthesize down to the basics what it means to be a tester. Yes, by basic definition, a tester is someone that performs that process of testing I described above. But it’s more than that, but I don’t wish to go into all the roles a tester can serve in. A software tester is someone that performs software testing from a non-bias, independent point of view, using all the capacities to get the job done. Testers sell out, beg, steal, or borrower to test code. They will use formal, mathematical analysis to find the faulty, careless logic. They will use ruthless creativity to find the esoteric bugs that make no sense yet are there. They will play dumb to simulate the end user, poking holes in a brittle, poorly planned code base. Testers keep lazy coders in check by enforcing standards and bringing accountability to the table.
Really, in my opinion, testers exist because of two reasons:
- To err is human. (Oops, I made a mistake.)
- Man needs accountability. (I did it on purpose.)
One thing that separates man from God is fallability. No matter how good you are; you are going to fail on occassion. Pretending that you’re not going to fail is such a sad and futile exercise. Just get over the fact that you’re not perfect. If you’re a coder and you need convincing, look at the code you wrote 2 years ago and gawk at how horridous it was. Testers work as a safety net to catch some of these imperfections that get through. Do testers get them all? No. But we get quite a few. Trust me. We know where and what to look for.
Accountability is a great thing. When people are accountable for what they do, things tend to go better. People, being errant creatures, need the whip occasionally. Jason Blair, the now disgraced reporter of the New York Times, admitted that he was comfortable just making stories up because nobody was holding him accountable for what he wrote. In a software development group, it’s easy to go lax on coding and process standards when you don’t have anyone enforcing them. Testers are great sheriffs to stop cowboy coders from releasing junk code. We hold the software team responsible: Did you follow our coding standards or did you hack it together? Did this software get a peer code review? Did you put it into source control? Did it get tested? Did you account for this and that particular scenario? Was it approved to be released to our end user? Software developers that get grilled a couple times learn quickly. That’s accountability. When they know they will be asked the hard questions, they do it right the first time. (I’ve seen this happen over and over again.)
Does anybody have good definitons of testing to share?
Are there any interesting observations on man’s tendency to make mistakes or accountability? Maybe personal run-ins with developers?
Does anybody stronger disagree with my assessment? I’d like to hear your perspective?