I know that other people have different approaches, but here's how we do it at Kuroi ...
Firstly we use the "Backup MySQL Database" mod. Whenever we need a copy database, we can just copy it from the admin/backup folder on the live site to the same folder on the test site and restore it. It's just so easy, and takes literally seconds.
Then we manage the code that we are changing by keeping separate all the scripts that we have changed (or are changing). We do this by storing them in dedicated folders on our development machines already in the folder structure that reflects Zen Cart's over-ride system. Then we have our FTP program set up with two connections one to the test site and one to the live site, with both pointing to the same folder with the segregated files on our development machines.
We make any changes needed on the small number of files held on our development machines, downloading more down from the test site if we need to. When we want to see them in action, we upload them to the test machine and test them in a browser. When we're happy with them, we switch the connection to the live site and upload them to there instead. Easy.
I can't remember the last time I needed to rebuild a test site from scratch. We do this only for completely new developments where we want a clean start. If we make a mistake during development we can either delete the over-ride file on which we're working from the test site and start again without the need to recreate it form scratch, or, if it's one of the files not yet covered by the over-ride system, we can pull a copy of the unchanged file down from the live site.
This segregation of files has the additional benefit that it is easy to zip them up and store them for re-use later, or for submission to this site as mods.
We use Dreamweaver most of the time to achieve this. But we also use FileZilla in this way, especially when we have a large amount to be uploaded. It's free and it works extremely well.
Kuroi Web Design and Development | Twitter
(Questions answered in the forum only - so that any forum member can benefit - not by personal message)