Every programmer is responsible for testing their own programs while they are coding. Every line of code must be tested. At times, this means forcing error conditions and building datasets. Final program testing is never done by the programmer. Our documentation personnel double as our final testing team.
Programmers spend many hours focused on the code they write.
They tend to miss obvious things, like spelling and grammar errors on screens. We have an intranet in our company that is used to communicate project progress. If the tester finds a problem, they simple attach notes to the task and drop it back into the programmers box. This allows us to hand tasks back and forth during testing very efficiently, while management can keep a tight overview on the entire project. Time is not usually quoted separately for testing because it is so tightly integrated with the programming phase.