I have my first software testing article published in the testing trapeze. The article is about the Robotics Challenge that I ran at Tyro. I also talked about this challenge at the Agile Australia conference.
I have an issue with the word “Manual Testing”. Say we compare a “Manual Tester”, an “Automatic Tester” and a “Developer”. When a developer builds a tool that helps them program it is not called “Automatic Programming”, it might be called a “Compiler” or some other new word. Developers do manually write code with their hands but it’s not called “Manual Development”, they use the tools and resources that are available to get the job done. Testing is the same; we use the tools and resources available to help get the job done. “Automatic Testers” manually write scripts with their hands, why are they different from “Manual Testers”? We test with our minds just like developers create with their minds. I’m a tester first and foremost; my goal is to find issues in software. What are your views?
(As a side note, this rant is heavily influenced by James Bach)
I am talking about software testing but these ramblings could be expanded to other types of product based testing.
First of all, what is a “good” tester? I think it is someone who finds issues with software and is able to make someone else understand that issue. Some people say testing is about providing quality of software. In response; I say, “bah humbug”. The way I get a sense of “confidence” about the quality of the software, is by thinking up scenarios that I think will test the boundaries of the software yet still cover the majority of the functionality. If I test the boundaries and find no major defects then I will be relatively confident that the software does what it is intended to do. I say relatively confident because no one can ever completely guarantee that software works as expected.
In no particular order, I find the following qualities make a “good” tester:
Curiosity: Is being eager to learn about the product you are testing, ask lots of questions, be curious about testing a theory/idea/hypothesis that you have about the functionality of the software. CAUTION: curiosity might lead to passion. (*gasp* Can someone actually be passionate about testing?)
Rescourfulness: Being able to find/confirm information from several sources. Sources can be ambiguous, boring to read, hard to find etc.
Letting your voice be heard, don’t be a push over and sit quietly while people talk about the product. If you think a detail has been overlooked, raise it
Being able to humbly receive constructive criticism, acknowledge everyone makes mistakes (even you) and learn from them, this leads to good team work
Communication: If you cannot explain an issue effectively, how will you make someone else (with minimum effort on their behalf) understand that issue? Try to always improve your communication skills so people are less likely to misinterpret what you say.
Creativity: Being able to think up the most amount of scenarios that will test the most coverage in the least amount of time. Making testing fun is a challenge because by gollies testing can be mundane, repetitive and infuriating (at times). I had fun moving Darth Vadar into Tasmania and installing an electricity meter on his death star, as even Darth Vadar has to pay for electricity. If you get the chance to make up test data, have fun/be creative with it.
Obsessiveness/attention to detail/pedanticness: this can be both a good/bad thing. Attention to detail is good, helps pick up on issues/defects that might have been missed, obsessiveness means when I want to understand something fully, I won’t be happy until I’ve satisfied that learning itch, often giving me a better understanding of how it works but I might spend the whole day trying to understand GPS coordinatates and spherical approximations of the earth to try and calculate the straight line distance between two GPS points, making my own excel spreadsheet with the formulaes when there was a simple webpage that already did that for me.
All these will help the tester gain an understanding and to find issues, thus achieving the goal of being a “good” tester.