Here's my take on this:
You can deploy the feature branch you want to show to the development environment. Just remember to deploy the develop branch after the client has seen the new feature.
For the testing environment you use the release branch. After the testing period is over and you have released your app, you would deploy the master branch to the testing environment until the next release schedule.
Disclaimer: I am the developer of git-flow (AVH Edition)
What you need to remember is that the original gitflow software doesn't delete remote feature and release branches. So when you finish a feature or release with the original gitflow you need to manually delete the remote branches. In git-flow (AVH Edition) the software takes care of it.