C.H.
It is a control issue. My son is pretty strong-willed and it takes everything I have in me not to totally lose it some days!
Public timeouts were really effective for me. If he's misbehaving in Macy's, take him out to the front, get him out of the stroller, and make him sit in timeout for one minute. If you have to physically hold him down, do so, but don't look him in the eye or talk to him. Once timeout is over, take him back in and start again. Do it as often as it takes. I like the idea of "test" trips to practice!
You could also let him pick out a special toy from the store that is only for outings. Maybe even a different one for restaurants and one for the store/mall. It could stay in the glove compartment or stroller and be used only for those occasions. If he misbehaves, the toy gets taken away. It can be given back when his behavior improves. If he throws the toy, it goes away until his behavior improves. You get the drift.
Part of this is a communication issue. My son is sooooo much slower in terms of speech development than my daughter was. He just turned three, and we're still working on communication, but now that he understands better, I can instruct him before we go to my daughter's soccer game, into a store, or into a restaurant with things like "you must stay with mommy or we go back to the car" or "no yelling or throwing while we're eating." It's been a realllllly slow process for us, but his behavior is improving. It'll get better for you if you're consistent. Hang in there!