Testing Component-Based Software