http://xunitpatterns...onent test.html
component test
A test that verifies the behavior of some component of the overall system. This component is still a consequence of one or more design decisions although its behavior may also be traced back to some aspect of the requirements. There is no need for component tests to be readable, recognizable or verifiable by the customer or business domain expert. Contrast this with a customer test which is derived almost entirely from the requirements and which should be verifiable by the customer. And with a unit test which verifies a much smaller component. A component test is somewhere in between.
During test-driven development, the component tests are written after the customer tests are written and the overall design is solidified. They are written as the architectural decisions are made and before the individual units are designed or coded. They are usually automated using a member of the xUnit family.
http://xunitpatterns.../unit test.html
unit test
A test that verifies the behavior of some small part of the overall system. What makes a test a unit test is that the system under test (SUT) is a very small subset of the overall system and may be unrecognizable to someone who is not involved in building the software. The actual SUT may be as small as a single object or method that is a consequence of one or more design decisions although its behavior may also be traced back to some aspect of the functional requirements. There is no need for unit tests to be readable, recognizable or verifiable by the customer or business domain expert. Contrast this with a customer test which is derived almost entirely from the requirements and which should be verifiable by the customer. In eXtreme Programming, unit tests are also called developer tests or programmer tests.
http://xunitpatterns.com/module.html
module
In legacy programming environments (and probably a few current ones, too): An independently compilable unit of source code (e.g. the "file I/O module") that is later linked into the final executable. Unlike a component, this kind of module is typically not independently deployable. It may or may not have a corresponding set of unit tests or component tests.
When describing the functionality of a software system or application: A complete vertical chunk of the application that provides a particular piece of functionality (e.g. the "Customer Management Module") that can be used somewhat independently of the other modules. It would have a corresponding set of acceptance tests and may be the unit of incremental delivery.