One way to do it is to have developers working by pair. Meaning, there’s always one who develops, one who reviews / tests the other one’s code. So in our case, the tester is not separated from the developer.
Then, you have the customer review that finalize the user acceptance tests.
Hope this helps,
We are using agile process. And we have a separate test team. Testers attend meetings where they interview/ask questions about requirements. This helps with planning and writing test cases. We wrok closely with business analysts and software engineers to gather requirements and write test cases. We got builds as soon as a feature was testable. We modified test cases if need based on the information we received.