Developers are not good testers. What you say?

This can be a big debate. Developers testing their own code – what will be the testing output? All happy endings! Yes, the person who develops the code generally sees only happy paths of the product and don't want to go into many details.

The main concern of developer testing is – misunderstanding of requirements. If requirements are misunderstood by developer then no matter at what depth developer test the application, he will never find the error. The first place where the bug gets introduced will remain till the end, a developer will see it as functionality.

Optimistic developers – Yes, I wrote the code and I am confident it's working properly. No need to test this path, no need to test that path, as I know it's working properly. And right here developers skip the bugs.

Developer vs Tester: Developer always wants to see his code working properly. So he will test it to check if it's working correctly. But you know why tester will test the application? To make it fail in any way, and tester surely will test how an application is not working correctly. This is the main difference in developer testing and tester testing.

Should developers test their own work?

Test in progress

I personally don't mind developers testing their own code. After all, it's their baby ;-) They know their code very well. They know what are the traps in their codes. Where it can fail, where to concentrate more, which is the important path of the application. The developer can do unit testing very well and can effectively identify boundary cases. (Image credit)

This is all applicable to a developer who is a good tester! But most of the developers consider testing as a painful job, even they know the system well, due to their negligence they tend to skip many testing paths, as it's a very painful experience for them. If developers find any errors in their code in unit testing then it's comparatively easier to fix, as the code is fresh to them, rather than getting the bug from testers after two-three days. But this only possible if the developer is interested in doing that much testing.

It's testers responsibility to make sure each and every path is tested or not. Testers should ideally give importance to all small possible details to verify the application is not breaking anywhere.

Developers, please don't review your own code. Generally, you will overlook the issues in your code. So give it to others for review.

Everyone is having specialization in particular subject. Developers generally think how to develop the application on the other hand testers think how the end user is going to use the application.

Conclusion

So, in short, there is no problem if developers are doing the basic unit testing and basic verification testing. Developers can test few exceptional conditions they know are critical and should not be missed. But there are some great testers out there. Through the build to test team. Don't waste your time as well. For the success of any project, there should be independent testing team validating your applications. After all, it's our (testers) responsibility to make the ‘baby’ smarter!!

What did you say? 

Recommended Reading

75 thoughts on “Developers are not good testers. What you say?”

  1. I Agree.
    I don’t mind if developers are giving me the build after initial unit testing, after all it should be testable for testing teams.
    In my agile team though the time pressure I don’t even ask developers about when they r releasing the build.
    Let take them their own time. I know most of the developers are sloppy at doing testing ..

  2. Hey!

    One of the basic messages I get from your article is that you don’t want developers to spend much time for testing. I for one hate it to get a piece of software which is nothing but a big bunch of defects. What’s the purpose of writing 20 bug reports within 10 minutes? It wasts my time as much as it wastes the developer’s time. A better approach to me is to train the developer in testing so that you can spend your time finding the bugs which will cause real troubles. Instead of saying “I can test better than you”, explain to him what he’s doing wrong and what he has to consider the next time when he’s programming. Give them some background of what you are doing. You will see, his tests will improve, the quality will improve and in the end you will also improve the communication. Next time they will come to you and ask you about your opinion before they start developing. Thus you learn about what they are doing and they learn how to do better tests.
    Give them some credit for developer’s are not meant to test everything. They are supposed to test the straight path through the software and a bit to the left and a bit to the right. You are the tester, it’s yuor job to take care that the rest of the branches can keep up. And of course they are optimistic about (or let me call it proud of) their software… as much as you are proud if you can break it ;o)

  3. Though we can accpet the maxim that developers do not want to fail their code themselves, they will be more hurt when bugs are unearthed by the independant testers. We can not eliminate or under estimate the importance of unit testing as it brings out considerable percentage of the issues in the system and saves much time in the test life cycle.

    But, many a times, due importance and systematic process is not attached to the unit testing. No plans or test cases and results do not get recorded. The developer have wear the ‘other’ cap when he tests the system developed by him.

    But, we have come a long way in the journey, it is impossible to elimiante the independant testers as their value add to the application in end-user perspective have been recognized by the owners of the system.

  4. It is really good that this article clearly explained the thin line difference between the psychology of a developer and that of a tester.

  5. Hi All,
    Me too agree with above statements. Normally due to shortage of time, unit testing is not done properly due to which many bugs are missed. So we need some good tester to build a quality product.

    Pradeep

  6. @Jens –
    yes I don’t want developers to spend much time on testing unless they are good testers as well.

    “A better approach to me is to train the developer in testing so that you can spend your time finding the bugs which will cause real troubles.”

    The same approach. Developers do the basic unit testing and some straight paths and hand over the application to testing team.

    I like the idea to praise the developer for doing testing ;-) Testing what, praise for what? Finding the bugs from their own coding?

    Again I don’t mind if developers are doing the basic and smoke testing. Finally it’s testers responsibility to make sure all branches are covered in testing or not. Then why to waste time in doing repetitive tasks?

  7. @ Guna –
    “Though we can accpet the maxim that developers do not want to fail their code themselves, they will be more hurt when bugs are unearthed by the independant testers.”

    Why developer should get hurt if any important bug gets caught in testing cycle. What if the same bug gets reported by stakeholders? It’s far better to let the testers catch the error in first place only. Give test team enough time for testing.

    Though I agree that if the testing team is not that skilled or trained or don’t know the product in detail then there is a huge RISK blindly handing over the application to such team. If you know testers don’t know in depth about the AUT, then it’s worth spending some developer testing time.

  8. Nice analysis, there are few more things about developers and testers,

    1. Developer says at the time when bug is found: ” This is not my work, this is not because of my code”
    2. Developer says at the time when bug is found: ” This is how the requirement is from the client”
    3. Developer says at the time when bug is found: ” This is not a bug (error) ”
    4. Some Developer fix the bug then come to you and will ask how are you reporting this even if the bug does not exists.

    Its really hard to tackle with developers with attitude.

    What do you say??

    Regards,
    Suhas
    http://www.adccindia.com

  9. Hi All,
    This is an interesting blog which explains the boundary between a developer and tester from their respective perspective. It’s true that time constraint makes testing from the developer’s side bit straight forward. But proper training of testing related activities to the developer can eliminate the defects at the initial stage
    during the phase of development.

    Sibi

  10. No its totally wrong. I being a devoper since 3 years got a nice apprisal while being a TESTER on a project. This never happened when i was acting as a developer. So i don’t agree with the statement, “Developers cannot be good testers.

  11. Hi, I found this document very good as it clearly depicts that it is very tough for a Developer to criticize or find errors in his programming , its like a mother who could not find faults in her own baby. Developers and Testers must work hand in hand to make their project a big success and error less product.
    Regards,
    NC

  12. Hello! all
    It’s really good article ,i am very excited to know diff. between DEVELOPER AND TESTER frm no of days but after reading this article i am fully happy.

  13. Good, It talks about what developer needs to do, In order to cut down the bug counts and testers to rivet more….

  14. @Vijay
    Like I said, explain the developer how to be a better tester. Give him some insight of your way of thinking so that he can avoid to do the mistakes that he’s doing. It works well for me.

    Besides, I never said “Praise the developer for doing testing”. I said that it’s not their job to test everything, so don’t blame them for that. And this is for exactly the reasons you stated in your article. Developers are blind against their own software. Like Namrata said, “its like a mother who could not find faults in her own baby.” In the end, we testers are the ones who have to guarantee for the quality. If your boss gives you 2 days for a specific test, do you really want to spend time on finding out that the click on a certain button doesn’t work or that 2+2 is actually not 4 as the software wants to make you believe? Well, I don’t. That’s the job of the developer.

  15. Hi,
    I am not agree with all of u,developers are always young,cleaver and dynamic he has also ability to test whole software testing.

  16. Hi,this is a very good article.Nobody in this world is enough to find its mistake in depth and nobody like to find its mistake.Thats why developers are not good tester.I read the article of Satyajit rane from this i feel that satyajit has very less knowledge about testing.

  17. Dear All,
    No doubt ,All developers wants to skip the testing of application,but its all becuase of time & work assigned to them.but every developer wish to be good unit tester.That’s why they dont seem to be good tester.

  18. It is a fact, but it doesn’t apply to all the developers. It also depends on testers, how they are testing. Even testers should be able to understand the requirements thoroughly, so that they can test the module perfectly.

  19. Actually. i agree that no body can find his mistakes or not all of them. i am a tester in a team and usually if another tester continue working in same project tested by another member he’ll find a new bugs that were not seen by the previous responsible tester.

  20. Hi,
    This is fact that developers are allways looking into
    positive testings.As I am a tester developed some
    peojects too but I tested all functionalities in
    positive ways.I also validated them too.
    As Developers approches to develope the programme fisrt thats why he/she allways looking for required functionalities.

  21. Good point, but as per my experience developers must perform unit testing throughly. By doing so some of the loopholes will be solved and the code will be free from the cosmatic bugs. If unit testing has been performed properly chances are rare that there would be any functionality error.
    But, developers develop pre-notion of having tester to test an application. Its not my job to do any kind of testing. when such attitude or thoughts develop in one’s mind, there you find the things going tough and often your bug will be rejected or blah blah
    So at this node, I request fellow member to answer my (general) question:
    If developer rejects your bug or says this bug is not reproducible. what will you do?
    1) will discuss with him show him the screenshots etc
    2) will forward the problem to TL,QA etc
    3) will fight it out (hahahhah,rare case)
    4) simply reopen the bug

    Hope for the suitable answer
    Thanks

  22. @kishore
    I will see if I can still reproduce it myself. If so then I will show the developer on his PC how to do it and reopen the bug. In this way he will be able to work with it and debug it right away.

  23. Developers miss some of the important bugs when they do the testing because they would assume that they’ve done a good work after an initial testing went off smoothly. As you’ve (Vijay) said, they won’t delve into the detailed testing. That’s why, developers must be thankful that testers are here to do the dirty job of delving into the depth of their work. ;)

  24. Hi,

    From my experience I would say developers are worst testers. They just are simply too lazy to test their own application.

    Regards,

  25. A nice article about developer’s testing. I do agree with the fact that the developers shouldn’t spend much time on testing unless if they are good testers. Some of the comments I get from my developers when I found one bug in the products are
    It was working fine in the previous build and I didn’t change anything… then how it happened? (How do I know? It is not working in the latest build. That’s all. U need to correct it :) )
    I am confident it is working fine… (But I am not confident.. :) )
    Why u test in user’s perceptive? U see the requirement? (The requirement too may want the things in another way :) )

  26. As a developer, I learnt many new statements about testing from this great website. Well done!

    Relationship between a developer and tester must be always in many to many ratio.

    Share, Share, Share and Build Better Product.

  27. Very Nice Article,
    # well the Develp are not b a gud Testers, bcz they cant spend more time on Testing.
    # As per Human physiology one person can not find Defects/Mistakes on himself ., so another person is needed to point out the exact Defects/Mistakes, that should be a quality one..

  28. I never accept this words.
    y because developers analyzing everything about the software. But they can see their work they are not keep any concentration on testing so they are keep concentration on that they also do good testing. This is my assumption
    thank you

  29. Hai Every1!

    No Matter how much coding the Developers write for an application,Some where or the other part of the Program , they are tend to make some mistakes.
    Itz always taken granted and that is why they are not good some times when they write coding for any complex application.The testers need Analyse and Read the whole application and get that into the mind and start doing testing .All in all , a testers job is to locate more no of bugs in an application, no matter how perfect the application is.

  30. Hi friends
    what are the uses of the scripting windows when we use in testing (purpose of the scripting windows )
    and Data table integration and data driven test give some explanation and some examples

  31. I Agree.

    I don’t mind if developers are giving me the build after initial unit testing, after all it should be testable for testing teams.

    In my agile team though the time pressure I don’t even ask developers about when they r releasing the build.
    Let take them their own time. I know most of the developers are sloppy at doing testing.
    As number of releases goes on developers won’t concentrate on dependency area of the modules where issues are logged, here will be more chances of introducing the more and more new issues

    My solutions:
    A better approach to me is to train the developer in testing so that you can spend your time finding the bugs which will cause real troubles.
    It is a Good article to know the work difference between Developer and Tester.

    Thanks
    HP
    prasadm25ster@gmail.com

  32. Hello Vijay,

    A nice way to explain the difference between a developer testing a piece of software and a tester doing the same.

    There are 3 levels of independent testing

    1) A second developer testing a piece of software written by another developer. However a developer’s perspective will not help in effective testing. Hence this does not attain the necessary freedom for independent testing

    2) A separate testing team within the organization
    This will definitely help in attaining a higher degree of freedom as the views of the testers are not binded by the same thoughts as that of the developers. However, being from the same organization, there are issues of mutual well being. It is equally likely that a developer and a tester from the same team are the closest of pals and this will (if not a lot) affect the overall testing.

    3) A separate team from outside the organization:
    Such a team of consultants attain the highest degree of independence in terms of testing. However a disadvantage would be communication leading to misunderstandings. It is also possible depending on the kind of software under test that the domain or the environment might not be familiar to these testers and might take some time for them to get adjusted to this.

    – Keshav (keshav.kamat@gmail.com)

  33. Hello my friend !
    I agree with you . “Developers, please don’t review your own code. Generally you will overlook the issues in your code” . I’m used to being developer and always say that my own codes are well :-). Now i change to test what i did :-( . And have no experience in this field . Found out your website when i ‘m developer and now i see, your web is so useful for me. Thanks :)

  34. As a developer, I can say you are right.
    When I (developer) am working in a project, I am in love for it. And you know, it´s hard to see any defect in your loved subject (no matter if it is a humen being or a piece of code !).
    Simply, you can’t ever think that such defects exist !

  35. Hello Friends,

    Tester and Developers having different role as part of the job in SDLC. Everything is possible for a human being. For a developer can do testing but the expectation level would not match as the tester can do. Better loves your work and make more scene the type of work and level of work you are doing.

    Thanks,
    SkyTECH

  36. Hi Testers,
    I absolutely agree with the article, look myself I am both a developer and a tester by profession…but in practice I am a tester and with years of experience I come to agree with this article because I have seen it in practice

  37. Hi all,

    Yes,the article is very informative regarding the difference between testing and developing.Anyways if the developers learn to do testing also ,they will tend to make mistakes.They will be seeing their work in a positive approach,but testers are new to application and will test regardless of developers…

    So Testers can do testing much better than developers.

  38. Hi all..
    I agree to the above article..
    Developers are not good testers., though they cant find mistakes themselves., so testing a product or project, tester is very very important to produce good quality of the project.

    Venkatesh

  39. Well, let’s see…
    1st – Developers should do entity tests
    – Each developer should test their own code before releasing it
    – Each build, usually containing the code from several modules made by different developers should pass a series of entity tests in order to guarantee minimum quality for testing.
    – Note that if the general test cases are available before coding, it should be easy to develop an automation test set that can be run with every delivery. System test can then focus on Customer use cases.

    2nd – Developer / Tester communications
    – There must be a clear report procedure.
    – Note for developers: Not every bug is easy to reproduce so if it doesn’t happen on your environment, it doesn’t mean it doesn’t exist.
    – Note to Testers: You must know the system architecture, provide logs and clear descriptions of bugs and ANALYZE them.

    3rd – In the end, it’s a matter of perspective.
    – System Testers see customer applications
    – Developers see feature implementation

Leave a Comment