Hello Debasis, I am a regular viewer of your blog. In (and through) your blog I have got (and still gaining) immense knowledge about the field Software Testing. Your work is highly appreciable. Coming to the point I want to ask you something. Do you think a Tester needs to have a critical approach to the work he/she does? i.e. critically judging the task/build at hand. By nature I am a self-proclaimed critic (few others agree). And my job as a tester is only making it more evident. Need your valuable inputs.
I felt that this question was worth spending some time (brainstorming). Some readers have asked me this question few times before. So I decided to take Sombit’s question and try coming up with a blog post as my answer.
Being critical while testing. Is it an absolute necessity?
Among others, verification and validation are often considered as some of the responsibilities of a tester. While validating a functionality/feature/program, a tester is left with at least a couple of approaches to start with.
1. To validate whether the program functions as intended.
2. To validate whether the program does not function as intended.
Going by the first approach is important to see if the application performs as it was designed to. But testing whether the application fails to function as per the intended design is equally important too. And usually it is the second approach that digs out more unexpected bugs out of an application. Often people in testing refer the first approach as “positive testing” and the second as “negative testing”. [However, the notion of positive and negative testing is debatable. And I would like to leave that topic for another blog post]
Experts in testing say that our craft is similar to that of a criminal detective. We as testers, do technical investigations to reveal important project related information and deliver the same to the stakeholders of the project in order to help them take any critical decision about the project. A good criminal investigator believes in the saying: "The suspect is guilty until proven innocent". And I believe a good tester also should believe the same. Unless and until we test and verify that a particular application works as it is supposed to be working, we must not believe it’s innocence (that it should be working without any ambiguity). Being skeptical can help us in nailing down bugs that could not have been caught if we had started with an over-optimistic mindset! Once we start with a mindset that the AUT (Application Under Test) works as intended, we risk falling into a trap that can create illusion (inattentional blindness) in our mind. Such illusions may distract us when we come across real bugs in the software while testing. Our earlier assumption (that it must be working fine) may restrict us from identifying the bugs while they happen in front of our eyes. So YES, I do feel that we must be critical in our approach to testing unless of course the context demands us to act otherwise. A tester should be critical while testing the software (or anything else). Being critical helps us with a greater sense of cautiousness and attention. And as we all know, an attentive mind is more capable of identifying a defect than a mind that has already presumed that there are no possible defects here! How many times have you heard an alarm going off in your brain (sounding "he must be kidding!"), every time a programmer had told you that "I have confidence in my code that it wouldn't break!"? The more skeptical you are while testing, the more you must have heard such alarm!
Can there be contexts where a tester must leave aside his skepticism while testing?
Being critical while testing. Is it an absolute necessity?
Among others, verification and validation are often considered as some of the responsibilities of a tester. While validating a functionality/feature/program, a tester is left with at least a couple of approaches to start with.
1. To validate whether the program functions as intended.
2. To validate whether the program does not function as intended.
Going by the first approach is important to see if the application performs as it was designed to. But testing whether the application fails to function as per the intended design is equally important too. And usually it is the second approach that digs out more unexpected bugs out of an application. Often people in testing refer the first approach as “positive testing” and the second as “negative testing”. [However, the notion of positive and negative testing is debatable. And I would like to leave that topic for another blog post]
Experts in testing say that our craft is similar to that of a criminal detective. We as testers, do technical investigations to reveal important project related information and deliver the same to the stakeholders of the project in order to help them take any critical decision about the project. A good criminal investigator believes in the saying: "The suspect is guilty until proven innocent". And I believe a good tester also should believe the same. Unless and until we test and verify that a particular application works as it is supposed to be working, we must not believe it’s innocence (that it should be working without any ambiguity). Being skeptical can help us in nailing down bugs that could not have been caught if we had started with an over-optimistic mindset! Once we start with a mindset that the AUT (Application Under Test) works as intended, we risk falling into a trap that can create illusion (inattentional blindness) in our mind. Such illusions may distract us when we come across real bugs in the software while testing. Our earlier assumption (that it must be working fine) may restrict us from identifying the bugs while they happen in front of our eyes. So YES, I do feel that we must be critical in our approach to testing unless of course the context demands us to act otherwise. A tester should be critical while testing the software (or anything else). Being critical helps us with a greater sense of cautiousness and attention. And as we all know, an attentive mind is more capable of identifying a defect than a mind that has already presumed that there are no possible defects here! How many times have you heard an alarm going off in your brain (sounding "he must be kidding!"), every time a programmer had told you that "I have confidence in my code that it wouldn't break!"? The more skeptical you are while testing, the more you must have heard such alarm!
Can there be contexts where a tester must leave aside his skepticism while testing?
These are few contexts that come into my mind where a tester should focus more on the positive side of the things (how the software works) rather than spending energy on criticizing it!
» During the last stage of a scheduled project deadline when the testing mission is to do a quick sanity testing of all major and commonly used functionalities and verify if they are functioning as intended.
» During the initial phase of integration of different modules where the main goal is to test and see whether those independent modules couple with each other seamlessly and still continue to work as a common integrated program.
» Can you think of more such scenarios where a tester must leave aside the critic inside him and focus just on the positive sides of testing? Then feel free to mention them as comment below.
Few points to remember while dealing with the critic inside us:
Being a skeptical tester that I am, I have already faced many awkward situations where the critic inside me had managed to overpower me. However, I have learned that sometimes it is good to identify contexts where we must control the critic inside us. Here are few pointers:
1. Once Mahatma Gandhi had said: "hate the disease, not the patient". Likewise, criticize the defect in the software, not the programmer. This would save you lot of friction with the development team (which is an unfortunate yet common scenario in many organizations; a bitter relationship between the testers and the programmers).
2. Learn and practice how to control your critic mind while dealing with human beings. Human beings are much more sensitive than a mere software. Moreover, a human being possesses emotions, which the software usually lacks! So it is important to control one's critic part while dealing with humans. Try to practice - "no testing at home". [I owe this wisdom to James Bach (via Ben Simo)]
3. If you find the above too difficult to practice and "if you fail to resist the urge to test and no testing at home is almost impossible, then at least there must be no bug reporting at home". [I owe this wisdom to Ben Simo]
4. Try to direct the criticism towards yourself once in a while. Practicing self-criticism is a very powerful skill of a good tester. Self-criticism helps us to evaluate ourselves and identify the areas of our weaknesses before someone else points it out. As Jerry Weinberg once said: "if you can't think of at least 3 reasons how and why your proposed solution for some problem can’t fail then you have not understood the problem well enough!" [While I am sure that Jerry is the original author of this quote, someone please point me to the actual source so that I can link there. I could not find out the online source of this statement]
Coming back to the need of being critical while evaluating the software that we test, what do you think about it? Do you think that a tester must remain critical while testing? Or do you feel it is absolutely unnecessary and an extra burden on the shoulders of the tester? Share your views.
Merry Christmas and Wish you all a very Prosperous and Happy New Year. Happy Testing...
Hi
ReplyDeleteI am Arun Gupta, I am an IT Specialist. I am a big fan of Indian IT sector. Its my hobby to read bolgs and different articles written on different IT related topics. I went through your blog, this is really a good and informative blog. Especially i liked your this write-up where you have about Application Testing services.
@ Arun Gupta,
ReplyDeleteI know Satyam is going through a bad patch recently (especially after it was blacklisted by the World Bank for 8 years for bribery). But, still it comes to me as a surprise that big brands like Satyam still needs cheap methods like comment spamming to get some attention.
Arun (or whoever you are), I genuinely DON'T believe that you are an IT Specialist. Because, if you were one then you must be aware that Blogspot (and most other blogging popular platforms) has rel="nofollow" enabled in it's comment section just for spammers like you. So, the link that you just dropped in your comment (anchor text) is not going to get any PageRank juice from this blog.
@ Readers,
Normally I would not have allowed a comment such as the above to show up on the blog post. But, I was intrigued to find companies like Satyam trying to use cheap comment spamming methods to get some link love/popularity. I am really shocked!
NOTE: I have not mentioned/covered anything related to either "Application Testing Services" or "Satyam" in my above post, in contrast to how the above comment describes! I think this is enough to prove the spammy nature of the above comment.
DISCLAIMER: I personally don't have any problem with Satyam. But I can't stop being annoyed when I see someone trying to SPAM my blog. In case, the above comment was NOT submitted by someone affiliated to Satyam, then may be it's time for Satyam to wake up and catch those people who are hurting it's reputation by doing mean things like the above.
-Debasis
Thank You...Debasis. Your post really provided me a clear picture of my action plan from now on.I will take your words and put it into use.And will inform you about my inference after a while.
ReplyDelete@ Sombit,
ReplyDeleteI am glad that you liked my perspective on the topic at hand. While you are free to take my words and try implementing them in your actions, I would urge you NOT to take any of my advice for granted, ever. As a tester, you must use your own skeptical mind to first analyze and evaluate my advice and then if you find them rational, you can go ahead with them. After all, the above post is talking about the importance of being a critic while doing testing, isn't it? :)
At any rate, thanks for bringing up this topic and giving me a chance to write this blog post. I look forward to interacting more with you in future.
Happy Testing...
-Debasis
HI Debasis,
ReplyDeleteI am Syed and i really like your posts. This post on criticizing the software is very informative and helpful in the testing practices. Thanks and keep blogging.