component testing in software testing