November 19, 2014
Software testing is more than just a job to some; it’s a lifestyle. However, a question that seems to be asked frequently is, “Why can’t...
Software testing is more than just a job to some; it’s a lifestyle. However, a question that seems to be asked frequently is, “Why can’t software developers partake in this same lifestyle?” Does it make sense for the development and testing of a product to be performed by the same person? Absolutely not, and here’s why.
Biased towards their code
It’s natural for developers to be protective of their code; they have spent so much time developing and nurturing it that it’s almost like a child to them. It can be difficult to admit your child’s flaws, even to yourself, and the same can be said of developers with their code. It’s very difficult to be objective about the product that you have produced.
Developers are too Positive!
Yes, too much positivity can be a bad thing. This is particularly true when applied to developers; inherently, their work revolves around taking a feature of a product and making it work efficiently. This mentality is pretty much the opposite from testers, who find creative ways to break a product.
Remember the game “Telephone”? One person would whisper a phrase to another person, and it was that person’s responsibility to pass that phrase along, as they understood it. However, if the second person misheard the original phrase, it’s unlikely that the mistake will be rectified further down the “telephone wire”. This is an apt analogy for developers testing their own software. If software requirements are misunderstood by the developer, the error will never be discovered, no matter how well he tests the application. The requirements error will remain, because the developer sees it as functionality. A software tester can approach the requirements from a different view, and maybe understand the intended meaning.
Developers are Fixers, not Breakers
To know if the code is working properly, a developer will test it to check if it’s working correctly. However, a tester will approach the situation by trying to break the application and make it fail in any way possible, and test how it’s not working correctly, and can work better.
Lack of end-to-end perspective
Most of a developer’s work is focused on a single feature in their product. While they have a vague understanding of the larger picture of their project and its comprehensive, end-to-end system, testers are required to have a much broader perspective of their products. While using techniques that simulate the ways that users will eventually use the product, testers must also understand and test the product as a whole.
As a software tester gains more experience, a more complete knowledge is gained of common bugs and frequent application difficulties. While this knowledge could be attainable, this is not the developer’s area of expertise, and their time should be spent acquiring development skills instead of testing skills. Due to the immersion of testing, a tester will gain this experience quicker and more comprehensively.
Furthermore, software testing is an area that requires professional knowledge and experiences. Tools and methodologies require time and understanding to fully grasp and master their concepts, which can only be achieved through the capabilities of a professional software tester.
This is why we have a Test Team!
While developers can help in testing, and aren’t necessarily bad testers, they are not as proficient and experienced as the true test engineers. Everyone has their own specialization, and it’s important to excel at your own areas of responsibility, rather than try to extend your reach too far.