Usually that type of behavior would be caused by the batteries however since they have been tested and are good we can eliminate them as the problem. The next thing that could cause this would be the controller or possibly the motor. I would test the motor by connecting it directly to a battery and see how it runs, if it runs good then the controller is the part that I would suspect as causing the problem.
wes