This one gets a lot of people's goats and inspires a decent amount of cringing, but it's not a particular pet peeve of Shmoop's. Still, we prefer it to be used correctly, so we'll give you the LD.
The difference comes down to the verb in the sentence.
If it's an action verb, you would use well since it's an adverb.
If it's a linking verb, you would use good since it's an adjective.
In these instances, good is deemed the predicate adjective since it refers back to the noun before the verb. Well can also be a predicate adjective, but you generally only say "I am well" when someone is asking about your health.
For inquiries about your general state of being, saying "I'm good" is totally appropriate. However, if someone asks you how you're doing, then you'd say, "I'm doing well." You wouldn't say "good" unless you were doing good things, like building an orphanage for puppies or explaining the infield fly rule to your little brother for the third time.
"My sister must have slept really well since I heard her singing "Single Ladies" during her morning shower."
"My parents bought me a new iPad, TV, and Xbox the last time I did so good on a test."
Which sentence is correct? World-renowned goddess Beyoncé would tell you that the first sentence is correct because well is describing the verb singing. In the second sentence, you should also use the adverb well. You performed an action; you took a test. The verb did is one of action, so give it the adverb it deserves.