Any practice worth its salt in terms of its applicability and correctness are often guided by a set of principles or goals, as it were, that the practices are trying to adhere to or accomplish. Automated testing is no different. Automated testing has certain goals that it is expected to accomplish and our practices revolve around accomplishing those goals.
In any effective conversation, a consistent vocabulary is vital to communication. So, let's quickly get some terms out of the way:
Unit test: An automated test that tests a single unit of source code. Unit is a bit subjective and often means module in many circles, but could be as narrow as a class or a method.
Integration test: An automated test that validates the interaction of combined modules.
Test fixture: In the context of automated testing and unit testing frameworks, this is the class or the class hierarchy where test methods live.
System under test (SUT): What is being tested? This could be...