Sunday, November 9, 2008

Share Market and Software Testing - Analogy


Yesterday I was reading this news (though the Market is volatile and unpredictable but still XYZ Share performed very well. Also one of Top A Group Share tumbled heavily. Investing in this market needs concentration and so on…), when the idea of this post struck my mind. To be honest, the mention of the words "Performed well", "Tumbled" and "Concentration" in the news caught my attention and when I finished reading the news item, I realized that why can’t I have a try 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 Market Index, I am not talking about the tester rating or performance index (Class: Tester, Family: Software). Rather, I am talking about the Share Market (Market is a place which is contested by two teams Buyers and Sellers, either from Same Location or Different Location). Let us see if we can correlate the Market 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 Market and Software Testing. But if you are also an investor of Market as many of us are and know something about the it, then I guess, you would not fail to appreciate the attempt after finishing reading this post. In case, you are not a investor, 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 Market:

Note : Request to all those who considers this as gambling, kindly see this is only a try to correlate the two things using Analogy. This is just a try to articulate some stuff in order to make tester’s fundamentals more clear with perfect vision.
1. (Un)Predictability: Experts say, ‘ShareMarket is always unpredictable and this is its greatest charm’! It is very difficult to predict either to gain or to loose even in the last moment of trade. And it is the unpredictability, which makes Market so interesting. Any Share Equity might look strong or weak on a piece of pen and paper. But in Market, unpredictability reins, not the statistics. Even in the worst condition of the market, Z-Group can perform extremely well while A-Group tumbles heavily.
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: Market is a place where only skillful investors can make their money and makes their account size bigger and bigger. I am not sure about your investments in other countries also, but if for sure if you belongs to India, chances are high that you might have seen Market movement on daily or periodically basis! People say, Market is a fever here in India. Here people are so obsessed with this stuff either directly or indirectly just to get more Return On Investment [ROI] what they did. So one can say that they not only play and watch Market but also eat, sleep and even drink Market! It’s becoming passion for new comers and caused heavy boom in the year end of 2007. I have played fair amount of Market since last 3 years. Even you might have too. But the reason, why players like Mutual Funds, Banks Investments to Market and all are considered as better ones and why people prefers that? Just because experts are involved, skills are put in order to get more ROI. There are facts that even in these days, in downtrend of market people made a lot of money who had the skills.
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 willpower, nothing is impossible to learn. Fortunately, software testing is no exception! Some people just say "It is not a good work but still I accepted it. I want to go to development. What ever I am doing, any one can do and blah blah…." I will just say to them be smart enough to develop your skills. If you can get credits just by being the developer why can’t by being a tester? Isn’t it true? Yes, it is. You might have seen many of your colleagues who reports the bug and their bugs are always taken in to care, though some times they seems to be easy. Why is it so? Think. Just it is because of their skills and way of finding the things. J
3. Game Planning (Knowing the Opponent): Professional Market is all about knowing the strengths and weaknesses of the opponent and deciding 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: This every one will agree that finally earning the aim of market, but still it is all about handling the pressure as well. The one should be able to handle the tremendous amount of pressure of the market when he is loosing or having less time. But still one who plays smartly even in this pressure finally wins the game and gets good return. Those people who jumped in to the market without having knowledge had made a huge losses in this year 2008. All you know this fact. This doesn’t mean that this is a bad game.
Similarly 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 label of Big Bull in Testing by accumulating more efficient bugs and thus by increasing your credits.. (ROI)!
5. Adaptability: If you have been watching market for sometime now, then you must be experienced enough to know that the one who have more exposure to the market have also lost just by investing in the one share and that share had fallen with huge amount. Here comes actual picture, why mutual funds are less risky than actual investment in the market. As these mutual fund companies are much adaptable with the situations and also they invests in many places. They have knowledge of many fields, many SMEs are involved in to it. The players who can adapt themselves quickly with the new environment can gain an edge in this market.
Just as none of the two A-Group Equity can be exactly identical in the performance, 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 not a tester. I am developer by portfolio"
» "I don’t like this. What ever I am doing, any one can do."» "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! Even many are from my team mates. Don’t feel harsh if I am telling you this or if it resembles to you. 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 many have committed in their earlier years of Software testing career.
6. Patience: Market is a game of patience. At times, a investor/player might be finding it tough to earn due to the sharp downfall in the market or bad market, tough conditions etc. But if the player has got enough temperament and patience, he might soon find it easy to not only get a single penny but ample amount of money and also get good ROI against the same bad performing share in the same market conditions. Similarly with patience and consistent good plan of investment, a investor could turn around the fate of his/her portfolio by picking up the perfect gains.
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. Think about it, get perfect hit on the right place to cause system errors or crash the system or to break the application. Perfect steady mind set will provide you an eagle eye to watch the application correct way and get the perfect bug on perfect time of delivery.
7. Team Game: Market is though played by a single person. But portfolio is a team game. Here the shares team wins the match, if your account have 10 good performing shares and 2 bad performing shares. If all performs well then this displays excellent exhibition of team play as all shares are good performer. Though one have bad performing shares, one waits for them to come up or averages the share by summing up the same at lower prices.
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 don’t want to say that some of them are bad performers, but yeah even you know that all are for sure never be of the same strength and knowledge. I do understand that there can be testing geniuses, who are jack of all testing trades and are all-rounder’s when it comes to testing. But finding such a tester can be a tough task for any test manager. If some one is there in your team, it’s an excellent stuff in your portfolio of the team like to have a good performing share in your account. 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). If one of your team member is weak, don’t blame them. One who is smart enough and capable enough has to perform well in order to compensate the performance loss made by this average team member. This will make your project status green like in the market portfolio performers. J
8. Lack of Concentration can Doom you: Market requires a high level of concentration. A small mistake can put you in a heavy loss. As an investor (buyer) if you loose your concentration and buy it soon when it is falling and you have to pay more from your hard earned money. As a seller if you loose your concentration and you could wait bit longer, you might have earned some more profit. Right? These can be the situations many of us have faced. (remember! Every perfect hit gives you good ROI and increases your credits!)
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 stuffs and Testers: One always invests in good shares as helmets to safeguard their portfolio heads from the fast coming changes in the market.
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 market champions like Reliance, L&T, Infosys etc… were top runners in the market for a long time and were trusted shares. But since last few months, all went down and performed bad against the similar kind of company shares. So one has to accept that profit and loss are the part of this game. Success and failures are two integral part of any game. The share once give you good profit today can put you in loss the future and vice versa.
But what differentiates a champion from an average performer 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 article, 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 Market and Software Testing.
Can you think of more such points, which can link them together? Let me know your ideas by commenting. !!!
Last analogy..
Happy T---ing.
Happy Trading… Happy Testing…

2 comments:

Anonymous,  November 9, 2008 at 4:13 AM  

Can say.. long article but really techy.
U pen down it so nicely that the one who is doing sharemarket will come to testing by reading this. Or the one who is testing will go to share market. :)

But too good. That's what all I can say.

Yesha.

Anonymous,  December 5, 2010 at 10:13 AM  

Good evening

Looking forward to your next post