Applications are increasingly constructed by orchestrating Web services. Ensuring the reliability of such loosely coupled service compositions is a challenging task. In this paper, we propose an automatic scenario-oriented testing approach for service compositions specified by Business Process Execution Language (BPEL). In our approach, an abstract test model (BGM) is first defined to represent the control flows of BPEL specifications, then test scenarios are derived from the BGM with respect to the given coverage criteria, finally test data are generated to drive the execution of resulting test scenarios. A case study is conducted to demonstrate how our approach can be applied to complex reallife service compositions and the experimental results validate the effectiveness of our approach.