Best strategy for backups and site testing?

Hi guys

I have a three-part question, all here because I think it's potentially addressed through one solution:

i) I want to create copies of my production sites, to test new modules on

ii) I want to ensure my sites are properly backed up

iii) I'd like to be able to transfer my sites to different hosting providers

I ask them all together because I have seen modules that offer to easily transfer a site from one URL to another. This would tick all boxes, I think.

What would you recommend?

many thanks