“You know, my grandfather was an egg farmer?”
“This is not going to be about your rough childhood, is it ?”
“No, I used to candle eggs at his farm. Do you know what that is? You hold an egg up to the light of a candle, and you look for imperfections. The first time I did it, he told me to put all the eggs that were cracked or flawed into a bucket for the bakery, and he came back an hour later, and there were 300 eggs in the bakery bucket. He asked me what the hell I was doing. I found a flaw in every single one of ’em. You know, thin places in the shell, fine hairline cracks…
You look closely enough, you’ll find everything has a weak spot, where it can break, sooner or later.”
Nobody could’ve said it better than legendary Sir Anthony Hopkins playing brutally calculating and cold-hearted aeronautical engineer Ted Crawford in the movie Fracture (2007).
As a Quality Assurance Engineer, that is basically your job to look for the weak spots in the product, whatever that product may be, and report them back, so that they can be fixed and thus, the product you are working on can be of the highest quality possible.
To do your job successfully, you need to have a Testing mindset. What does that mean? Among other things, it means you have to think in the most destructive way possible and be as creative as possible.
Why is destructive thinking important in testing?
One of your guidelines should be Murphy’s Law, which means in the simplest possible terms: “Anything that can go wrong will eventually go wrong.”.
Your job is to prevent those unavoidable eventualities as soon as possible, preferably in earlier development phases, because that will prevent all sorts of inconveniences later. So when you receive a product to test it out, it is not enough to make sure that the product is working as expected, when being used properly, it is also important to make sure that the product can handle improper uses as well because no matter what you are working on, the product will be misused in real life situations sooner or later. When developing a certain product, the products of higher quality are also “foolproof,” which means that those products of higher quality can also handle improper uses gracefully. One of the most recent innovations that come to mind is the reverse inhibitor in automatic transmission cars. This inhibitor essentially prohibits the car from being shifted into reverse while driving forward until the vehicle has slowed down to an acceptable speed. Nobody in his sane mind would want the car he’s driving to be shifted into reverse while driving forward at high speed because that would cause mechanical issues or, even worse, traffic accidents with fatalities. That is why this innovation is important, it killed two birds with one stone because it prevented both misuses of the transmission, whether that misuse was accidental or with intent. This is just one of the examples of the product being misused in real-life situations after its release, and the people responsible for testing it out did not anticipate in the earlier stages how crazy bad their product could be misused and the consequences that can ensue that misuse.
DISCLAIMER: Whether you have a newer/older automatic transmission car or not, neither the author of this text nor the ABH encourages you to try this out, and if you do, the author of this text and the ABH is not responsible for the consequences.
How does creativity improve testing?
Now we come to the other important thing, creativity in testing. This might seem abstract, but creativity in testing can help with product quality. The more creative the QA Engineer is, it means that QA Engineer can find more edge cases in testing a particular product out. The more edge cases are covered, the broader test coverage of that product is, and more potential issues can be found. If we take the example above, we can deduce that the people testing the older transmissions were not creative enough to test this particular test case out, or maybe they did not think it was important to have this fail switch earlier, either way, it could and should have been done sooner. More creative QA Engineers will usually go beyond written requirements when testing and go through different approaches to test out the same product, which can be helpful in the development phase because sometimes the agreed solution is not the optimal one. Maybe the original solution is not intuitive to the end user, maybe there is a better solution available, and the best way to find that out is by doing exploratory testing in as many different ways as possible so that there is an actual comparison of the product while being used in various approaches and from that it should be easy to find the most optimal solution possible.
These are two important qualities for a QA Engineer to possess. However, it is also essential for a QA Engineer to have the domain knowledge about the product which needs to be tested out. This is, so to say, a requirement. You can have the best Testing mindset, but if you don’t know how your product should behave, it is all in vain because you do not know what the wanted behavior of the product is and what is not. Even the best fictional British detective you can think of has to go to the crime scene to get himself more familiar with the crime, so eventually, he can figure out what happened.
Summa summarum
So, to make a high-speed recap at the end:
- Know the product you are testing
- Don’t be afraid to think outside of the box when you are testing it
- And don’t be afraid to misuse it as much as possible.
In the end, that is your job, and that is the time for it because the sooner a defect is spotted, the sooner it will be fixed, which will make the product quality better and development faster, which should be your team’s goal.
“Testing mindset” Tech Bite was brought to you by Edin Rožajac, Junior Test Engineer at Atlantbh.
Tech Bites are tips, tricks, snippets or explanations about various programming technologies and paradigms, which can help engineers with their everyday job.