Not really my opinion; however, as found in different articles and opinions. You may have a business case to utilize developers for software testing; Also, your developers may end up being a good tester as well, and happily willing to do the software testing work.
Should developers test software?
Software testing is testers’ work not software developers’ work. Usually big and reputed companies keep testers whose sole purpose is testing where development is for the developers. Software architectures/frameworks like Microsoft Solution Framework do not mix software development and testing to the single/same role. Though software testing is sometimes mixed with business analyst [may be also with project managers, architects] role as they some/many times need to ensure software acceptance/quality.
Another note here, Companies such as Microsoft prefers Software Developers with some additional skills in software testing/software quality assurance related positions.Software testing is not best suited to software development role for reasons as below (though it does not mean that software developers cannot and will not test software. Also, it is not the case that developers do not test; for a large % of cases, software developers also test software):
1. The goal of software testing is just the reverse of software development. The aim of the developers’ is to try to prevent errors and make sure the code runs but testers aim to find errors.
2. Testing can never proof absence of errors. So, the question is when the developers need to stop testing?
3. Testing by itself does not improve software quality.
4. Testing requires you to assume you will find errors. But developers usually after writing the code assume the code is working/(he wrote it right, he wanted to write it right, so it should be right, though it’s not practical/best thought).
5. Developers are usually biased that the software feature work, just after implementing it. Developers also know, how to use the software. What are very trivial for a software developer (how to use the software), may not be understood by others. Developers may end up using the softare in almost the right way and may miss some issues. This may not be right all the time; however, sometimes this will be the case6. Software developers may not deal with the end users all the time; may not understnad the usage pattern or knowledge/experience level of the end users. Also, may not always be aware, how the software will be used; if this is the case, it may lead to undiscovered issues.Another note here is, a software feature is written and it worked for the developer, does not mean that it will work. It needs to be tested separately to ensure that it works. Just because the code is written and it worked for some cases does not mean that it will work all the time and in all situations and use cases. If you want a good and reliable software, you need to invest the time and money, to identify use cases, and possible ways to interact/use that software or the software feature, then test and ensure that the software work to some acceptable (define what this means to you) extent.It may also be useful, if developers use a different time (not immediately after writing the software) to plan and test the software or the feature just got implemented. When taking time off from the code, the bias may be gone and the developer may end up testing like a user or with a test’s mindset. He may also discover the limitations of his or her code when taken some time away from the code.However, testing like Unit testing, component testing, integration testing are the developers work. Sometimes, regression testing and system testing are also required to be done by developers [ thought to be their responsibilities not testers ].
Unit Testing: Test separately a single complete class, a single routine, a small program
Component Testing: Involves testing of classes, packages, small programs separately from the complete system that are developed by multiple programmers.
Integration Testing: Involves testing two or more classes or packages, components, and subsystems that are developed by multiple programmers. It can be done on an ongoing basis, just when every new class is written, it can be tested with other classes as a whole and/or pairwise [if applicable].
Regression Testing: Execute the same set of tests that were executed before and no errors were found.
System Testing: Involves testing the software in it’s final state. Integrated with other software and/or with different hardware platforms. Tests for timing, security, performance and other issues that could not be tested at lower levels.
From: http://sitestree.com/?p=4822
Categories:22
Tags:
Post Data:2009-09-12 13:04:04
Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
(Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a>
In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
<a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>