Reverse Engineering and Testing of Black-Box Software Components