An iterative software development processes are used increasingly nowadays. One example of this approach is RUP. When using this approach, testing ceases to be a process, which starts after programmers write all the code. You should pay attention to software testing from the beginning of the project.
Work on the test starts at the initial stage of identifying requirements for future products and is closely integrated with current tasks. And it imposes new requirements for testers. Their role is not simply to identify software bugs as fully as possible and as soon as possible. They should participate in the overall process of identifying and removing the most significant project risks.
The purpose of testing and methods of achieving it determined for each iteration. And at the end of each iteration is determined whether this goal is achieved, whether we need any additional tests, and whether to change the principles and tools of the tests.
In turn, every detected defect has to go through its own life cycle. Defect is entered into the database of defects. The analyst should make sure whether it is not made by repeating earlier defect. Is it really a defect?
The Head confirms the performer, who proceeds to eliminate the defect in conformity with the assigned priority of the defect. The tester repeats the execution of the test and make sure (or not sure) of the eliminating of the defect.
Strict observance of the life cycle of a defect can significantly improve project management, as well as avoiding the "spread" of requirement under the guise of correcting errors. It is also help to avoid unnecessary work on excessive improving of the product.