At what point in the project do you start your testing effort? In many project plans that I have seen, QA and/or UAT is added to the end of the project. The development team hands over the code to the testing team who then writes and executes the scripts. The bugs are passed to the developer and the test & fix cycle begins. What fun.
Here is an alternative to the test & fix cycle:
1. Write test scripts before development starts on any particular feature. Test scripts help confirm the requirements with the client and allow developers to have a full understanding of how the code must work. The test scripts function as executable requirements and answer "How will I know when I'm done".
2. Minimize the time between when a features has been developed and when it is tested. This allows you to find defects or requirement misunderstanding early so that developers do not re-build the same defects or misunderstandings into future features. This helps increase the quality of the system while decreasing the time spent in the test-fix-test-fix cycle. Complete testing of any feature should occur in the same iteration that the code is written and should be part of your 'done' criteria.
Both of these two simple steps are based on the Lean Principles of Eliminate Waste and Build Quality In. For more information, check out this article from NetObjectives.