WordPress Staging and Testing of Plugins Best Practices

I don’t think there is the one correct answer.

We use Git to manage versions. We have the master branch, that syncs with an online staging server, that has it’s own database. (Using the live database is kinda too hot for my taste.) Then there is the stable branch, that syncs with the live server.

We include everything, that we actually edit (own themes, own plugins) and .gitignore the rest. So we have to apply some manual labor to keep the systems in sync, but you do not risk to accidentally push old plugins onto the live systems. As it is the wordpress way, the main purpose of updating the stuff that we do not own is the autoupdater.

As for databases: We start of with the WP Unit Test Dataset (http://codex.wordpress.org/Theme_Unit_Test), in Pre-Live beta we bring the editors to the dev platform and let them start using the system and create artificial content.

Then, a bit after live, we usually copy databases from live to dev to keep up with the content. As for my experience you don’t have to be 100% up to date, because usually the type of content stays the same.