Here's a strategy that works really well for me, as a project manager who also has a very long history in pure software development: "that there are two distinct manifestations of the idea of 'software testing.'" Even though the identical term is used, they are in fact disjoint activities. Each one is applied at a different time, for an equally ...
One approach you could try is to have the QA working ahead of the developers.
It would work something like this:
Back end devs write stubbed API calls that mimic the behaviour of the finished functionality
UI devs create a boiler plate front-end that calls into the API (getting results returned from the stubs)
At this stage there is no implementation code ...
TLDR: Optimize for throughput and your people will become T-shaped.
First of all, I should address
Is this the right approach?
To which my answer is "Don't ask strangers on the internet. Try it and see." Agile incorporates two concepts that are relevant here:
Regarding the first... try it and ...
One possible technical solution here might consist of asking them to create a second version-control branch. When the developers believe that they've finished their work, they move into a "pending QA-testing" branch. Final merges into production take place only from that branch.