Test object is an umbrella term for any object created with a purpose of replacing a real object within a test suite.
Its interface is susceptible to being stubbed and modified as needed by the test example.
Dictionary defines stub as:
a truncated or unusually short thing: he wagged his little stub of tail.
Stub is a replacement method on a test object that gets invoked instead of the authentic method.
Stub is not an object (unless you take into account that methods are object, but will not help us to clarify things).
It is a the simplest type of a test object that can be stubbed and used in different contexts, hence can become a different type of test object.
Basically, he exists "instead of" some other real object.
Real object is an umbrella term for any object that is a part of the actual application codebase (that excludes test suite).
It can be a class, module or an instance.
Mock is a test object created with a purpose of testing behaviour. Meaning, that a certain message gets sent.
Dictionary defines it as:
(mock something up) make a replica or imitation of something.
TEST OBJECTS
REAL OBJECTS
classes
modules
instances
double
spy
Verifying
double
class
double
instance
double
object
double
partial
double
verifying
partial
double