Lecture
Module testing (unit testing): see component testing
Component testing: testing of individual software components (according to IEEE 610)
Component: The smallest element of software that can be tested separately.
Unit tests are checks of individual classes in our application, and this is a white-box technique. Since classes also fall under the definition of «a constituent part, an element of something», we can say that unit testing is a type of component testing, most often performed (or, more precisely, most often NOT performed) by developers.
Component (module) testing checks functionality and looks for defects in parts of the application that are accessible and can be tested separately (program modules, objects, classes, functions, etc.). Component (module) testing is usually performed by invoking the code under test, with the support of development environments such as frameworks for module testing or debugging tools. Defects found are typically fixed directly in the code without being formally logged in a bug management system (Bug Tracking System). In doing so, code is written with functions (methods) that are as clean as possible, so that tests are isolated from the environment (DB, network, file system, time).
One of the most effective approaches to component (module) testing is preparing automated tests before the main coding (development) of the software begins. This is called test-driven development or the test first approach. In this approach, small pieces of code are created and integrated, against which tests written before coding began are run. Development continues until all tests pass successfully.
Essentially these testing levels represent the same thing; the only difference is that component testing uses real objects and drivers as function parameters, while module testing uses specific values.
Types of testing

Comments