System testing is a painful, iterative process that frustrates programmers and QA departments alike. New testing solutions, methods and services are providing easier means of ensuring quality throughout the development process. The nature of the tests themselves has dictated who is responsible. In most development shops, programmers have had to do their own unit testing because they have a much deeper understanding of the code they created than the testing and quality assurance departments do. The problem is that developers like to create, not test.
Testing means time away from coding.
The thought of writing a few thousand lines of code just to test a single function is about as inspiring as a trip to the dentist. Testing also identifies problems, which means if errors are detected, the developer now has to fix the code. Some developers also don't like the notion of testing because they feel their work is being criticized and their work performance is being monitored. Unit testing is perceived as slowing them down. He said the good developers will turn their debuggers on and test their programs, but when multiple developers have to merge their software and something doesn't work, people start pointing fingers.