Maintain a single script of everything you do in dev for each release.
Apply the script to your test environment as needed.
Before applying to production, download a new copy of production into test and run your script again, and have users do final testing (actually, I prefer to maintain a separate QA and Test environments to separate these two roles).
After successfully applying the script to production, start a new version script of dev changes.
If it's not practically useful, then it's practically useless.