Sunday, March 25, 2007 1:58 AM
by
Chan Chaiyochlarb
6 things my cats teach me how to be better tester
Keeping pets can bring many benefits -- reduce stress, companionship, attract the opposite sex, etc. However, it just occurred to me that my pet cats actually are even more useful than that. There are certain attributes about them that I find interesting, and at the same time, applicable to my line of work in software testing. Here are the 6 things which I learn from my cats that help make me a better tester.
- Keen observant. The most common comment from anyone who visit my house about my three cats is: "You know, I don't feel very easy at your house because it seems like your cats are always watching me", "Why are they looking at me like that?", or "I felt like being stalked". I always chuckled when I heard this, but I realized that the cats were indeed always watching what's going on (especially with guests). They would lay around in the adjacent dining room in the corner where they were able to have their line of sight into the living room where we usually sat. Just like a predator always on the look out of their prey, a good tester should have a very keen eye on the look out for bugs. Obscure bugs tend to appear when you are least expected, and getting down the correct repro-steps down becomes extremely difficult. So keeping an observant eye is the key to success.
- Be suspicious of everything. Whenever there's something new in my house, my cats would be the first to check it out. Whether it's the new computer, bag, shoes, sofa, TV, you-name-it, the three cats would hunch back and sniff at the new object to make sure it doesn't pose any danger. This is somewhat a good trait to have as a tester. When a PM says that the requirements is complete, believe that with a grain of salt. When a dev proclaims that s/he has unit-tested his/her code thoroughly, never ever listen to that. It's our job to be paranoid. Our customers will thank us for that.
- Always keep yourself clean and tidy. The only thing worse than a messy dev code is messy test code. Dev code can be messy, especially in a large legacy system where the same code base had gone through multiple maintenance releases and were thrown around different hands. However, if test code is messy and difficult to maintain, that piece of code is as good as junk. How would one know what that code is testing or validating is valid? If the test is reporting a failure, it would be a nightmare to debug proper repro-steps and find out whether the test fail because of real error or is it just because the test code is fragile. Cat groom themselves clean all the time for their personal hygiene reasons. We should also keep our code clean for correctness and sanity.
- Clawing and scratching. My cats love to scratch their nails on our most expensive piece of furniture. This drive me nuts all the time. It's like they are intentionally doing it just to piss me off. However, thanks to Discovery Channel, I now understand that cats need to keep their "tools" sharp at all times in preparation for hunting down prey. Just like cats, we also need to sharpen our skills all the time. This can come from training, reading, practicing, and most importantly, learning. New testing methodologies or test tools pop up all the time. And if we don't utilize that and be complacent, we are just setting ourselves up for failure.
- Highly flexible and adaptable. Cats are renowned in their ability to adapt to whatever environment and survive. There are a few wild cats (I counted at least 2) around my neighborhood which I've seen roaming around. I'm surprise to see them running around after tough winter time (I never thought they would make it through the harsh snow since they both are short-hair). I'm not sure what they are feeding off nor where they live, but they both look very strong and healthy compared to my three overweight, indoor-only cats. Anyway, a tester job can involve anything from writing code for new automation or test tools, to engaging customers, to investigating an issue, to debugging a problem, to managing and prioritizing bugs for projects, etc. As you can see, a tester is almost jack of all trades. So keeping yourself highly flexible is very important to make this a long and successful career.
- Don't give up. Jiji, one of my cats, loves to look outside the window watching birds. Many times, these birds would take a break from flying and rest on some tree branches above our kitchen window. Jiji would go extremely crazy once he sees these birds -- he would jump, hiss, stalk them, and scratch on the window pane (as if it's going to open). When the bird got bored looking at a silly cat acting up inside the house, they would just fly away. But Jiji? He NEVER quits. He would ran around the house checking and re-checking every window searching for those birds. He would keep trying until either the birds reappeared (probably to tease him more) or me stomping towards him and shouting "STOP!!!". The important lesson here is be like Jiji. Don't give up even though you think the problem has simply disappear. Many times it feels as if all the stars in the universe must be in a straight line in order for the bug to appear, but the fact is, that bug will still be there if you just give up. Get down to the root cause as deep as possible
I'm not sure about what we can learn from other pets since I only have cats. If anyone would like to share their experience with dogs, fish, birds, iguanas, ferrets, etc. I'd love to hear about that.
----------
[Edited 3/27/07]
My manager, who's another cat lover, suggested the 7th:
Cats always land on their feet. Have PMs, Devs ever asked why you missed this or that bug that was found by customers in production? Yes, they have. And what did you answer? Testing can never catch all bugs. There will always be a bug that is missed in testing. ;-) True, this is why we should employ additional methods to catch bugs, like code inspections and beta testing.