Another important issue is testing. We have to test our applications on different levels during development, as listed below:
Every class of the business logic that will be part of a component has to be tested.
For every component we create a counter component that looks like a mirror to the original component. This counter component has an receptacle for every facet of the original component and vice versa. Connecting a component with its mirror component with a simple test client allows component developers to quickly isolate component level errors in the business code.
After testing each component, we have to be sure that a set of connected components, the component assembly, also works correctly.
Of course, there must be tool support for testing on these different levels of
development to make this job more efficient.