Last weekend I was invited to give a presentation on TDD (Test Driven Development) to a bunch of techies who largely constituted programmers, a couple of IT managers and some testers. At first I had wished if the audience had a major population of software testers, but as the presentation progressed I began to realize that probably I was wrong in my wish! Want to know what made me think otherwise? Read on…
But before I can start writing this post, let me tell you that this post is basically for software programmers who think:
But before I can start writing this post, let me tell you that this post is basically for software programmers who think:
1. Software Testing does not do any good to the project!
2. What is the point in spending project resources on testing activity if doing so can not guarantee a “100% Bug-Free Pakka Product” [please don’t ask me for the meaning of that paraphrase. I am simply quoting a programmer from my recent presentation]
3. Software Testers are a bunch of crazy people who find it amusing to find defects in the code.
4. Testing is a dumb job. What’s the big fuss? Anybody can do it!
5. Software Testing is a worth less process. It does not add any value to the project!
Having said that, in this post I am not going to start again the traditional Programmer VS. Tester fight. I am a Tester and I am more concerned about Testing. Hence I will try to confine this post to busting the myths of a typical Programmer about the necessity and importance of Software Testing in a Software Development scenario rather than trying to prove how programming sucks and testing rocks!
Coming back to my recent presentation, when I was trying to point out the fact that “even if a tested product can be considered as robust and reliably (known) bug-free, it may not necessarily mean that it is a High Quality Product”, a programmer friend from the audience came up with the following view point. Here is a truncated version of the excerpt of the discussion:
Mr. Programmer: If a product cannot be guaranteed of high quality even after testing, then does it make any sense to spend time, energy and effort on testing it?
Me: Well, dear friend to answer this question first of all I will need to know your understanding of “high quality”. Quality is a multi-dimensional aspect. As Jerry Weinberg describes it - “Quality is value to some person(s) who matters”! In case of Software Development, testing alone cannot guarantee high quality of a product. Think of a video game that is free from any known bugs and is robust and stable enough but unfortunately it fails to engage the curiosity of the players (users). Would you still call it as a quality video game simply because it does not contain any visible defects and is quite robust? At any rate, Software Testing is not a salesperson job. As testers we test software. We don’t sell television sets where we can (and we are supposed to) give you guarantee for the product that we are trying to sell. As a matter of fact, even television companies these days offer warranty, which comes with a long list of “if you do this you void your warranty” terms listed under Conditions Apply* column. Then how can someone expect a tester to offer guarantee for a Product, which he has not even developed himself? Isn’t it unfair?
Mr. Programmer: Taking about fairness, even after years of release of Windows XP, still Microsoft keeps releasing Service Packs to patch defects that were shipped along with the original Product. If there can be bugs in a piece of application even after testing then where is the point in testing it in the first place?
Me: That is an interesting question, thanks. Before answering your question let me tell you some facts. In an average MNC the Tester:Programmer ratio hovers somewhere around 1:3. That means for every 3 developers there is one tester to test their coded program. In case of Microsoft the ratio is said to be 1:1 and in NASA it is known to be a whopping 3:1. As you can clearly see, NASA spends obviously lot of effort on testing its projects. So apparently their projects must be the most robust among all. Unfortunately still we see major space mission failures like Space Shuttle Columbia disaster from time to time. Does this mean that the testers of NASA are doing nothing? Why don’t we look at it at from a different perspective? Microsoft had to release 3 Service Packs for Windows XP. It is quite possible that in case of lack of enough testing effort the number of Service Packs could have been even 30! NASA ends up with a space shuttle mishap once in every decade (on an average). In case of lack of enough testing it could well have been 10 accidents per year!
Mr. Programmer: Okay that sounds like a plausible explanation. But how would you defend yourself in case a Product that was tested by your testing team is reported with user found defects? They are your (tester’s) defects, which have slipped into production, right?
Me: Well, I don’t think that I need to defend my testing team here for any reason. That’s because the way I see it, it is not the tester’s defect rather it is the programmer’s! Because it was the programmer who had made an error in his code at some point of time and in turn had given birth to the defect. How can you even think of blaming a tester for a defect that was created by you (a programmer) in the first place? Having said this, I do agree that there are moral obligations for such kinds of defects that slip through the testing phase. It’s not that I don’t feel guilty for have missed such a defect before it managed to reach the end user. I DO feel guilty about it. Every responsible tester does. But I honestly feel that the programmer should also feel equally guilty (if not less) for such defects. It is not a blame game. Instead of accusing each other for the mistake made, we must feel responsible for the mistake made and more importantly take corrective actions so as to avoid such mistakes from happening in future.
Mr. Programmer: You are right. But my point is if testing can not make sure that the released Product is not bug-free then where is the point in spending resources (time, person hours, money) on testing it before releasing it? How does testing add value to a Product development?
Me: I am glad that you asked this question, thanks. Talking about value addition let me ask you a question first. Why do you taste your dish before serving it to your guests? Does tasting a prepared dish add value to the preparation? Can tasting make the dish better? I don’t want to argue whether tasting the dish adds value to the preparation or not, but I know it gives us an idea of the preparation. It gives us information about the preparation (another pinch of salt needed, the dish is bit spicy for the taste of your guest, it could have been better if you had left it on the stove for another 5 minutes etc). These information can help you in making the preparation better. So does tasting the dish add value to its preparation? It’s up to you to decide. Similarly does testing add value to the project? The answer can be Yes or NO depending on your way of looking at it. It does add value if you consider information gathering as a part of value addition. It does not add value if you think that only coding the application is all about value addition. However, testing does provide important value related information about the Application Under Test (AUT) to the stakeholders of the project. And this investigation and information gathering is as much important as the development of the application. That is why it becomes important to spend resources on testing.
Either my replies were satisfactory to Mr. Programmer or he was tired of fighting back with more “we don’t need testing” arguments, but after this I did not hear more questions from him till the end of the presentation. I genuinely thank him for bringing such questions to my attention. At least by doing so he gave me a hint of idea about how a programmer feels about testing. I have no hard feelings for him. He felt that testing is a useless job may be because he had not got any chance to be made aware of the need of testing in Software Development. I hope I was able to instill at least a little bit of awareness and respect for testing in his heart. I hope I was able to make him realize the fact that just because we testers catch defects in your codes, we are not your enemies. We simply do it to save you from the embarrassment before someone else (a senior programmer, a manager, an end user, the client) catches it!
Coincidentally, at present there is a discussion (Risk-Reward, Output-based pricing model for Testing services - Is our community ready?) going on in software testing yahoo group (software-testing@yahoogroups.com) where I saw Michael Bolton responding with an excellent reply to a similar question. I am quoting him below:
Thinking more expansively, if you consider the project as the sum of the product AND everything we know about it, then testers do add value by adding to the pool of knowledge. - Michael Bolton
I don’t think I could have described it more brilliantly. As Michael points out, testers do add value to the project by providing important mission-critical information to the stakeholders. What do you think? Do you think testers add value to the project? Or they don’t? Let me hear your viewpoint by leaving your comment.
Happy Testing…
For those who might be wondering how my presentation about TDD looked like here is the slideshow:
hi,
ReplyDeleteI feel happy to write to again .thanks for sharing your valuable argument in your blog
Raji
very nice aritcle, and u hav presented it very nice. Thanx alot......
ReplyDeleteu r helping testers,
Great to read from You again.
ReplyDeleteIn my personal experience with programmers tere is no problem with bug fixing, but there are always problems with implementation of usability tweaks which I post to our bug tracker.
"bug free but not handy/usable software".
IMHO We, testers should think for the end user about usability. Which functions will he use the most? What would be annoying for him?
It is better when testers and programmers discuss above within team, than release not usable software to client.
It seems you have protected the text of the blog. I would like to quote the sentences of your blog then comment on it.
ReplyDeleteHow can I do that?
Shrini
@ Shrini,
ReplyDeleteSorry for the inconvenience! As you can see I have tried to protect the content from plagiarists and not from readers like you.
However, one way to copy part of the article is via "View Page Source". You could use [Ctrl+F] to quickly search for the sentences from the HTML source. I understand that discarding the extra HTML tags could be a pain to do so. But at this moment that seems like the easiest way to do it. In case, you wish to quote a large portion of my sentences in your comment, do let me know and I would be happy to send you the whole write-up in MS Word format. Thanks for understanding.
Happy Testing...
-Debasis
I find that there is often a disconnection between the developer and the tester. In the environment I work in the tester is often the project manager or the client and the intensity of testing varies greatly depending on how much the client is paying.
ReplyDeleteAs we create a very wide array of applications, testing procedures become hard to standardise, this lack of standardisation then leads to bugs being reported incorrectly.
Our clients often try to reduce the cost of their projects by demanding to test the software themselves, this then leads to the disconnection as the client is very unlikely to have a rigorous testing procedure. It is extremely difficult to convince that client that a proper testing procedure will add value to their product simply by ensuring that an experienced eye has given it the go ahead.
So are there people in this world who still wonder about the use of software testing?!
ReplyDeleteAnd are there still people in this world who think that a testing team should and can find ALL the bugs for an application?!
Amazing!
Hi,
ReplyDeleteIt is first time to comment on your blog.
It is nice to know that , it is not my personal problems which are i am facing...
Anyway ,You have not presented fine ourself.
Congrates.
Best regards,
vishal shah.
Q.C , India
I liked this post.Even i had faced these kind of questions from programmers. I would like to add one more quesion i faced "Why is the need of a seperate group called testers in development team.Peer testing by developers could find equal amount of bugs " .i wonder what u would have answered!!
ReplyDelete@ Nisha,
ReplyDeleteInteresting question by your programmers and thanks for sharing it with us here.
Well, since you asked here would be my answer if I'm ever asked such questions:
"Why not? Its for the same reason why there IS a need of separate group called programmers even if "peer programming by testers" (yes, believe me or not; todays testers are as good in programming as any other programmer) could perhaps amount to equal (even better) level of coding!!!"
Very Nice article.Thanks for nice post
ReplyDeleteIts very useful for me.. thanks..
ReplyDeleteYes, I think Software testing add values to project.
ReplyDeleteWeb Testing, Example Test cases
While testing a web application you need to consider following Cases:
· Functionality Testing
· Performance Testing
· Usability Testing
· Server Side Interface
· Client Side Compatibility
· Security
Functionality:
In testing the functionality of the web sites the following should be
tested:
· Links
i. Internal Links
ii. External Links
iii. Mail Links
iv. Broken Links
· Forms
i. Field validation
ii. Error message for wrong input
iii. Optional and Mandatory fields
· Database
* Testing will be done on the database integrity.
· Cookies
* Testing will be done on the client system side, on the temporary
Internet files.
Performance :
Performance testing can be applied to understand the web site's
scalability, or to benchmark the performance in the environment of
third party products such as servers and middleware for potential
purchase.
-Kanif
Software testing is one of the important part of software engineering. You can not ignore or skip it. If you do it, it will certainly cost you a lot. I am sure the information you have shared with us will work for many out there.
ReplyDelete