late 15c., "woman's small pet dog," a word of uncertain origin but likely to be from French poupée "doll, toy" (see puppet). "A little dog appears to have been called puppy because petted as a doll or puppet" [Century Dictionary].
The meaning shifted from "toy dog" to "young dog" (1590s), replacing native whelp. In early use in English the words puppet and puppy were not always distinguished. The word also was used from about that time in the contemptuous sense of "vain or silly young man."
Puppy-dog is attested by 1590s (in Shakespeare, puppi-dogges). Puppy love "juvenile infatuation" is from 1823. Puppy fat "excessive fat on a child or adolescent" is by 1913 (in reference to young dogs by 1894).