As a concrete example from one of our projects, whenever a new feature needs to be implemented, testing starts as early as the requirements-gathering phase. Our testers review the new feature, and first and foremost, they are looking for any dependencies that the new module might have with previous ones, challenging the potential solutions that come from the development team. Asking as many questions raises the awareness of all stakeholders, resulting in better solutions from both the functional and technical sides.
Even more so, our QA team participates in refinement meetings, again raising their hand for any ambiguity in the acceptance criteria written so far. We want to ensure that everything is well-documented and that there is no place for misinterpretation. Having these refinement meetings with all stakeholders (QA team, Dev team, PM, PO, Tech Lead, UX/Design team) helps us stay in the loop and be on the same page, avoiding misinterpretations.
Once available, QA reviews the design. We’re looking for any potential UX improvements or misuse of existing components (in case of reusability). What we want to achieve is that users get the smoothest flow possible while ensuring that previous modules/components are properly used, and there is no weird customization that would add extra effort on top.