Software Testing and Cricket - an Analogy! Howzat!

Yesterday I was reading this news (4 obvious errors show inadequate concentration), when the idea of this post struck my mind. To be honest, the mention of the words “errors” and “concentration” in the news headline caught my attention and when I finished reading the news item, I realized that it was not related with any software errors as I had anticipated before starting reading it. However, on a second thought, when I tried to correlate it with software testing and software testers, it started making some sense to me and the following paragraphs are a result of it.

Before I continue further, let me make it clear that when I say cricket, I am not talking about the
insect cricket (Class: Insecta, Family: Gryllidae). Rather, I am talking about the sport cricket (Cricket is a bat-and-ball sport contested by two teams, usually of eleven players each). Let us see if we can correlate the sports cricket with that of software testing! I clearly understand that I might sound awfully stupid when I say so and even try to correlate two things as diverse as that of cricket and software testing. But if you are also an ardent fan of cricket as I am and know something about the sport, then I guess, you would not fail to appreciate the attempt after finishing reading this post. In case, you are not a cricket fan, you can still continue reading this post till the end to see what I have to offer via this write-up! I am going to identify and list out few points that seem similar between software testing and cricket:

1. (Un)Predictability: Experts say, ‘unpredictability of cricket is its greatest charm’! It is very difficult to predict a win or loss before the last ball is bowled. And it is the unpredictability, which makes cricket so interesting. Teams might look strong or weak on a piece of pen and paper. But in cricket, unpredictability reins, not the statistics.

Coming to software testing, there could be testers who believe that it is easy and straightforward to
expect some fixed output after executing a series of test steps, but I only wish; testing software was as simple as that! Echoing some experts in software testing: trying to predict the result of a test in terms of PASS or FAIL criteria can be one of those dangerous traps in software testing world, where a tester can shoot at his own feet! Irrespective of the number of test scripts (either manual test cases or automated test scripts) a tester has written, until the tester gets the application module to test, nothing can be told for sure about the state of the application and its behavior. Unpredictability is one of those things that make software testing so much fun.

2. Skills: Cricket is a game where only skillful players can make their team a winner. I am not sure about other countries, but if you have ever been to India, chances are high that you might have seen cricket being played on a street behind your hotel room! They say, cricket is a fever here in India. Here people are so obsessed with the game that they not only play and watch cricket but also eat, sleep and even drink cricket! I have played fair amount of cricket in my school and college days. You might have too. But the reason, why players like Sachin Tendulkar, Brian Lara and Ricky Ponting are considered as one of the finest cricketers and not us, lies in the cricketing skills they possess.

Likewise, in software testing too, it is the testing skill that differentiates a good tester from a mediocre one. The one, who has the better testing skills in his arsenal, can
find more important defects quickly in the software that he is testing. Learning, practicing and applying are three golden rules to acquire any skill. With determination and strong will power, nothing is impossible to learn. Fortunately, software testing is no exception!

3. Game Planning (Knowing the Opponent): Professional cricket is all about knowing the strengths and weaknesses of the opponent team and devising a game plan in order to combat their strengths and to exploit their weaknesses.

In software testing, knowing the testing mission is the first step in determining the goal of the testing effort. Without being clear about the goal, it might turn out fatal to go about testing straightaway. Once the tester is clear about the testing mission, then he can analyze his chances of success or failure depending on the availability and expertise of the resource in hand and the complexity of the testing problem. e.g. imagine a situation where the tester has to test the application to find out it’s robustness to guard against
hackers and other malicious users. Knowledge of a fair deal of details about the level of attack that can be attempted against the application, can give the tester a better chance to plan out a strategy to emulate the attack and to test how the application guards against it.

4. Handling Pressure: Winning a game of cricket is all about handling the pressure well. The team that is able to handle the tremendous amount of pressure of the game finally wins the game.

For those who think or have been told that software testing is an easy job and can be done by every Tom Dick and Harry, let me warn you, you have been terribly misguided! Testing is a career, which demands lot of intellectuality and stability of mind to work under variety of pressures (like technical pressure, pressure due to workload, managerial pressure, pressure of deadline, pressure arising from the nature of the job etc). As testers, the basic requirement of our job demands us to deliver bad news (presence of defects, buggy modules that fail miserably on testability grounds etc) to different stakeholders (the programmers, management staffs, clients) of the product under development. Nobody likes to hear bad news. Unfortunately, gone are the days when messengers were not hanged just because they brought in a bad news to the king! Hence, unless the tester is quite good at handling the pressure arising as a byproduct of his work, and is not so good at being diplomatic, he might find it tough to carry on with his job for long. On the other hand, the tester who has got the capability to handle the pressure till the end, has every chance of winning the
Testing World Cup!

5. Adaptability: If you have been watching cricket for sometime now, then you must be experienced enough to know that whenever a team visits a different continent for playing cricket, it often finds it difficult to play up to its usual standards, of course unless we are talking about a team like Australia. Most Asian teams find it difficult to play down under and the vice versa. And the reason lies mainly in the difference in the
pitch condition in the different continents. Soil texture, clay quality, humidity, temperature, amount of grass, dust etc can affect the behavior of a cricket pitch. The players who can adapt themselves quickly with the new environment can gain an edge in the game.

Just as no two cricket pitches can be exactly identical, no two AUTs (Application Under Test) can be same. Hence, I often get surprised when I see testers trying to clean themselves off testing assignments with excuses such as:

» “I have not tested anything like this before!”
» “This platform is completely new to me!”
» “I am new to this technology. I can not test it!”
» “I am a manual tester. I can not use this test automation tool!”
» “I need the domain knowledge before I can test this application!”
» “Hey, you don’t have any base documents (URS, SRS, BRS blah blah…)! How can I start testing your application?”

To me, this simply translates as a bad attitude of a tester, who is not ready to adapt and more importantly not ready to learn something new. For such testers, I have just one thing to say:

"Don’t forget that, even big and powerful animals like the
Dinosaurs and the Wooly Mammoth became extinct just because they FAILED to adapt to their changing surrounding environments; we are just testers!"

When I say so, I DON’T mean that I am a great tester who has been excellent at adaptability throughout his testing career. On the contrary, I have been through several such instances when I was stupid enough to oppose such changes and was in fact, hostile to proposed changes. And don't be too surprised when I tell you that, some of the excuses that I have mentioned above were from my own mouth! However, I have
learnt my lesson of adaptability in the hard, bitter way. So I just wanted to warn others who are new and passionate about testing but might commit the same mistake of lack of adaptability that I have committed in my earlier years of testing career.

6. Patience: Cricket is a game of patience. At times, a batsman might be finding it tough to steal a run due to the sharp bowling attack, tough ground conditions etc. But if the batsman has got enough temperament and patience, he might soon find it easy to not only steal a single but also score boundaries against the same bowler under same pitch conditions. Similarly with patience and consistent good bowling, a bowler could turn around the fate of a match by picking up quick wickets.

Similarly, a lot of patience is required while testing an application. There might be days when nothing seemed to work right for you and you would end up without catching a single defect in the whole testing session. There might be times when you would find yourself hitting your head on the keyboard while trying to find
ways to reproduce a hard-to-reproduce defect. But you ask any expert in software testing, and he would suggest you to have patience. Putting in extra effort and having patience can help you come out of such dry days of testing.

7. Team Game: Cricket is a team game. Here the team wins the match, which displays excellent exhibition of team play. And so is software testing. All the team members of a testing team can’t be with equal skill sets and with equal level of expertise. Having a testing team with members with different specialization can add to the versatility of the team’s overall performance. I do understand that there can be testing geniuses, who are jack of all testing trades and are all-rounders when it comes to testing. But finding such a tester can be a tough task for any test manager. So as a workaround a good test manager might look forward to build a team which has testers specializing in different aspects of testing (
functionality testing, performance/stress testing, database testing, usability testing, automation engineers, risk-based testing etc).

8. Lack of Concentration can Doom you: Cricket requires a high level of concentration. As a batsman you loose your concentration and you could loose your wicket. As a bowler you loose your concentration and you could be hit for boundaries all over the ground! As a fielder you loose your concentration and you could drop a catch (remember! catches win matches!) or give extra runs by mis-fielding.

Coming back to testing, imagine a tester who misses to identify a defect that just happens in front of his eyes, as he was looking for some other defect at that moment. Experts call this phenomenon as
inattentional blindness. This can also happen if your mind is too tired due to continuous testing and you start loosing concentration, and in turn, start loosing defects!

9. Wearing safety Helmets and Testers: Batsmen (and even the close-in fielders) wear helmets to safeguard their head from the fast coming deliveries from the bowler. In case of software testing, unfortunately, the testers are like the safety helmet! They act as the representative of the client/end users of the project. And act as the last line of defense of the client/end users against the possible ways in which the software might fail. So as testers, start feeling proud of your profession, as you are safeguarding somebody by taking the hits yourself. By spending time with all those irritating defects while testing, you are making sure that your end user does not have to deal with them in future.

10. Learning Lessons from Failures: Even world champions like Australia was once defeated in a cricket match against the under-dogs like Bangladesh. Success and failures are two integral part of any game. The team that wins today can loose the next match and vice versa. But what differentiates a world champion from an average team is the extent to which they learn their lessons from their failures.

On a similar note, a software testing project can go terribly bad due to various reasons. I have witnessed and have been part of few such testing projects that went nowhere nearer where they were intended to go! Some were complete disasters and the whole project development had to be shut down. I am sure, if you are in testing field for sometime now, then you also might have seen, experienced, heard about such failures. But each experience, good or bad, has some lessons in it. A good tester tries to learn lessons from his past failures to make sure they are not repeated in future. The failure might not have been as a result of a mistake on the part of the tester, but still, there might be some lessons in that failure that could help the tester in becoming better at his testing in future.

If you have reached this paragraph after patiently reading through my post, then I must appreciate you for your patience. You have certainly shown a desirable skill of a good tester – patience. :) I would like to hear your ideas about my analogy between cricket and software testing. Can you think of more such points, which can link them together? Let me know your ideas by commenting. Howzat!!!

Happy Testing…
Share on Google Plus

About Debasis Pradhan

Debasis has over a decade worth of exclusive experience in the field of Software Quality Assurance, Software Development and Testing. He writes here to share some of his interesting experiences with fellow testers.

16 Comments:

  1. Great!!!!!! Really superb!

    This shows that 'One can learn a lot by creativity'.

    Few more connections I felt can be added to the discussion:
    > Risk based testing: Just like having no FINE LEG and expecting the batsman to flick you onto legside and creating a chance of LBW.

    Similarly, in testing : RISK BASED TESTING.

    > ADHOC TESTING.
    Just as Misbah ul Haq tried to surprise Joginder, a tester can use surprise testing (in testing terms : ADHOC TESTING)

    Please correct me if I'm wrong.

    Great article, each sentence makes sense.
    Good work, Bug Hunter... Good Work :)

    -Ajay
    ajay184f@yahoo.com

    ReplyDelete
  2. Hey Debasis, Thanx a ton dude for this awesome article...I was suppose to give a presentation on any topic in my company and as a QA engineer I chose this topic...they were like surprise how can u relate both cricket and software testing??? All 10 points were perfect..though I had to face some really tough debatable questions but it's alright. n to be honest, I do mention it in my presentation that I got this topic from ur blog.
    Thanx again

    Regards,
    Rahul Kumar

    ReplyDelete
  3. @ Ajay,

    Thanks for your appreciation! I am glad that you showed positive spirit to take up my challenge and came up with your own ideas about the original post. I would have liked it even more, however, if you had given more explanations on your perspective on the subject at hand. Nonetheless, great effort I must say. Hats off to you for giving it a try.

    @ Rahul Kumar,

    I am feeling delighted to hear that you chose this article as your presentation paper. I must appreciate your humility and honesty as you mentioned my blog in your presentation paper.

    However, I am curious to hear those questions [though I had to face some really tough debatable questions but it's alright] that came up during your presentation. That could spark some debate on my views on the topic. Waiting for your response. Happy Testing...

    -Debasis

    ReplyDelete
  4. Awesome Creativity! Shows your passion for the field you have chosen! Its certainly exemplary!

    ReplyDelete
  5. Interesting writeup! It's been long time since I read a well written article! keep going ;)

    ReplyDelete
  6. @ Cheth,

    Glad that you enjoyed the writeup. As a matter of fact, this is an article that I had written more than a year back (in Jan 2008). Why don't you take some time to dig through the other writeups? I wonder if you find out something yet more interesting! :)

    Happy Reading...
    -Debasis

    ReplyDelete
  7. Really HATS OFF to your write ups its excellent :-)

    ReplyDelete
  8. @ Lakshmi,

    I am glad that you liked the write-up. I would suggest you to Subscribe to the blog to make sure you get automatic updates every time I have a new post on my blog. Happy Reading/Testing...

    ReplyDelete
  9. The article is awesome and shows your imagination that goes limitless..

    I am also a tester but after reading ur article specially the line (We Safeguard somebody by taking the hits ourselves), I feel more proud of my “Job”. Thanks

    ReplyDelete
  10. @ Vidushi,

    “Limitations live only in our minds. But if we use our imaginations, our possibilities become limitless.” - Jamie Paolinetti

    I believe, *imagination* is something that differentiates a good tester from a mediocre one! It's the imagination that can help you visualize scenarios where the AUT (Application Under Test) can FAIL and things can go wrong! Anyway, I am glad that my line made you feel PROUD of being a tester. Occasions like these make me feel PROUD for spending time blogging! Happy Testing...

    ReplyDelete
  11. hi,

    Truly speaking it is a fantastic and educating site.i had visited many blogs site but somehow d content was not good...but after visiting this blog...m addicted to it now...

    keep on adding educational stuff..

    thanks,
    khushboo gupta

    ReplyDelete
  12. @ Khushboo,

    Thanks for those words of appreciation. I am glad that you liked what you read here. Keep coming back [consider subscribing; it's FREE] for more such posts. Happy Testing...

    ReplyDelete
  13. As a fan of Cricket and Software Testing, I am really glad and thank you to brought a spark to think in the way of testing...and will provide a simple way to work out.

    Nice Post.....thanks

    ReplyDelete
  14. Wonderful comments!!! Moreover then your comparision i like your sense of philosophy on testing!!!!

    ReplyDelete
  15. Great comparision. I use "giving out a contract and plan (Requirements) to build my home in a different city to a builder (developer), which I cannot monitor constantly but my friend (tester) can visit and check it regularly to see if it is built as I wanted it" to explain SDLC in my training sessions.

    ReplyDelete
  16. hi,

    very nice n useful tactic to correlating real thing to testing terms.

    ReplyDelete

NOTE: Comments posted on Software Testing Tricks are moderated and will be approved only if they are on-topic. Please avoid comments with spammy URLs. Having trouble leaving comments? Contact Me!