Here is the soft side of software testing your mum never warned you about:
Straight up, let’s start with a brutal truth. Thou shalt be organised. Period. No exceptions. If you’re a scatter-brain-the type that forgets how many spoons of sugar he just bunged into his cup of tea, the type that can’t remember where he put junior’s latest report card, the type that wears his shirt inside out-software testing is not for you. A software tester is a multi-tasker. We find ourselves handling so many different activities at a time we could give a professional juggler a run for his money. Accurate record keeping with exhaustive bug reports, up-to-date clear documentation, ability to prioritize, efficient time management, unambiguous reporting, relaying information to multiple teams, keeping track of email messages, and, not to forget, getting some actual testing done in the process-all this requires you be ponderously deliberate, painfully thorough and profoundly methodical.
Thou shalt write well, talk good, and listen better. It’s no use being a human bloodhound if you can’t convey the correct information to the correct people in the correct manner. It doesn’t matter what momentous bug you’ve discovered. It doesn’t matter how desperately critical a fix is. If you can’t inform a programmer in time and with enough detail to allow him to make an educated decision about how to proceed, you’re virtually useless. A software tester remains calm, non-judgemental, and positive when highlighting shortcomings in the system. You clearly, accurately and concisely deliver the goods-be they bug reports, test plans or causal analysis summaries. You remain actively involved in collaborating and facilitating discussions and decisions with the stakeholders. You adore email. You worship instant messenger. Above all, you love getting off your backside and walking over to a programmer to sort something out fast. You have a silver tongue. You don’t hyperventilate, make fanning motions in front of your face, or get hysterical when you find a bug in live production.
3. Analytical skill.
Thou shalt analyse everything. From requirements to architecture to design to application to bug reports to your colleague’s weak excuses, you look at everything with a questioning mind. A software tester needs must ask uncomfortable questions. A clever software tester asks uncomfortable questions early on in the lifecycle so that everyone has plenty of opportunities to find answers and rectify errors in good time. If you don’t understand something, you don’t make random assumptions; you ask. If a key piece of information appears to be missing, you don’t shrug your shoulders and expect it to turn up somewhere down the line; you ask. You ask more questions in the course of a day than a bunch of Mastermind episodes do in a month. Reading code, writing SQL to manipulate databases, building automated tests and deciphering use cases-there’s plenty of hard technical graft required. You reason, you deduce, you infer and you get the job done. In other words, you’re pretty smart and you weren’t born yesterday.
Thou shalt see all. You have an eye for detail that would rival a microscope. Did the screen just flicker when you clicked that hyperlink? Is that an orange-coloured button hiding amongst all the red-coloured buttons? Can nobody see that monstrous apostrophe glaring out from where it isn’t meant to be? Paying attention to everything you’re doing, as well as to everything that’s going on around you, takes serious concentration, and it ain’t no walk in the park. Testing is 1% intuition and 99% observation. (Speaking of which, did you observe bullet-point number 3 in this article is repeated? You didn’t? Tsk. Strike one.)
Thou shalt let thy imagination soar and consider not the cat that got killed. Think aeroplanes taking off, birds winging it, small children larking around, butterflies flitting merrily hither thither… Your imagination needs to break its bound shackles and skip along unfettered. A software tester is always curious. Users are unpredictable. They do the darnedest things. Software is unpredictable too. Put the two together and you’ve got an explosive combination just waiting for the wick to be lit. So light that wick. That’s your job. See what happens if. A software tester thinking from the user’s point of view and doing what “only a fool would do”, is a software tester on his way to success. Imagination is also required in other allied more mundane tasks like estimating timelines, effort and costs, and exploring issues reported by customers with-naturally-not enough detail. Anticipate problems and actions, and be prepared with work-arounds. You get bored easily, so you’re constantly finding yet another way of reaching that page or breaking the system.
6. Tact. Diplomacy.
Thou shalt be a smooth talker. Found a bug? Awesome. By all means, perform your particular brand of victory dance. Just don’t point an accusing finger at the poor programmer and frogmarch him triumphantly up to the boss’ office. A software tester knows how to relate bugs in an impartial, impersonal and purely professional way. You know when to force your point, when to back off, when to follow orders, when to lead, when to take risks, when to play it safe. You are adventurous, yet cautious. You know how to handle conflict, what motivates your colleagues, how to push just the right buttons and when to pull things along. You make the team feel good about the product they have, not depressed about the product they could’ve had. You know when to speak, when to keep shtum, and when to play dumb and act surprised. You are reason personified. You are challenging to the right degree, when necessary, but not aggressively confrontational. You know how to negotiate and persuade. In short, you can raise hell with programmers while appearing to be in a zen-like state at all times. A smile and wink just don’t cut it.
Thou shalt imitate a saint. A software tester is patient. You are tenacious, because you may find a bug once that you have difficulty reproducing later; especially when you have to demonstrate it to the project manager. You keep plugging away until you’ve run it to earth. In fact, just like the fellow who said, “Act as if you already know the solution and are just trying to remember it”, your whole philosophy in life should be, “I know there is a bug in this system, I just need to find it.” In this vein, you are sceptical of any new product release, but not overly critical. Aim to adopt the “never give up” attitude. Or at least the “never give up until it’s time to go home” one. Which means be sensible about being stubborn, and don’t become so dogmatic about bugs that you start cherishing them as you would your own children.
8. Thick skin.
Thou shalt not cry. You’d best know the bad news now: software testers are not popular people. On the hierarchical scale of office camaraderie our social standing is somewhere between that of the useful dustbin and the useless dust in it. So as a survivo, er, software tester, you have confidence in yourself, faith in your stars, and a steel-plated armour to ignore the bad vibes you’re going to get. In fact, if you’re “lucky”, you’ll know exactly what it feels like to be the Bacon-Lettuce-Tomato of a BLT sandwich-sharp words from the programmers whom you’ve forced into re-work/overwork, and dirty looks from the higher management who can’t get their hands on that next fat cheque from the customers due to the delayed release. Oh, and expect solitary confinement, so learn to work alone and like your own company. At such times, you are your own best friend.
As someone who-sadly-often comes in at the tail end of the development assembly line, a software tester deals with an incredible amount of pressure. Time is short, the customer is waiting and the project manager is getting impatient. Your thick skin helps you withstand this stress and maintain your sanity to live to test another day.
As if that were not enough, your thick skin protects you from feeling hurt when your precious bugs are rejected. In fact, rejection is almost a rite of passage for a tester. Until you’ve had about a hundred bugs scornfully struck off the bug list, you won’t know what true pain is. “But I need to let off steam somehow!“ I hear you complain. Sure, drown your sorrows in hot chocolate, but save the drama for after work when the spouse’s shoulders are handy.
Thou shalt be open to change. A software tester is willing to learn, and ready to support others. You are realistic, and aware of which way the wind is blowing. Software development is a minefield of change. Changing requirements, changing resources, changing deadlines, changing goalposts-all this movement can be dizzying. Remember everyone in the team needs to work towards a common goal and within the constraints of the project: time, money and effort. You might be called upon to undertake tasks that were not defined in your job description when hired. You might find yourself picking up the slack of someone else’s sloppy mess. You might be asked to test “everything” in a day. Or perhaps get your hands dirty with a task no one else wants to do. Remember that every contribution does not have to be one big bang, many small steps can be equally effective. A flexible mind keeps your outlook cheerful and lessens the strain of a difficult or unpleasant task.
Thou shalt be several other things. A software tester is much more than the above. A fast learner. A quick worker. A person who loves what he does. A believer in the product. A leader. A team player. A lone wolf, yet the life and soul of the party. An inspiration. Raising the standard of quality comes from a lot of complementary qualities put together into one neat package.
I’ve never met a software tester who had it all. But the good ones have much of this. I’ve also never met anyone who graduated from development school with the express intention of becoming a software tester. Nearly all of us we wandered into this field by chance or circumstance; most of us found we liked it, and decided to stay the course.
We’d all like to think that our work is special; that it requires a great deal of skill and talent; that no one else can do it as well as we can. The fact is, nobody is indispensible. Much like the bugs we detect, one tester will comfortably take another tester’s place. We all can learn how to do each other’s work, and the more determined ones of us can excel at it. It is my opinion, based only on my own experience, that the qualities listed above can help you master software testing more quickly and easily than if they were absent.
At the end of the day, what matters is results. You can be filled to the brim and oozing from every pore with all the supposed characteristics of an ace tester, but if you don’t use them to your advantage, then, ace shmace, you’re going nowhere.