Service Oriented Architectures Testing: A Survey Gerardo Canfora and Massimiliano Di Penta RCOST - Research Centre on Software Technology University of Sannio Palazzo ex Poste, Via Traiano 82100 Benevento, Italy {canfora, dipenta}@unisannio.it Abstract. Testing of Service Oriented Architectures (SOA) plays a critical role in ensuring a successful deployment in any enterprise. SOA testing must span several levels, from individual services to inter-enterprise federations of systems, and must cover functional and non-functional aspects. SOA unique combination of features, such as run-time discovery of services, ultra-late binding, QoS aware composition, and SLA automated negotiation, chal- lenge many existing testing techniques. As an example, run-time discovery and ultra-late binding entail that the actual configuration of a system is known only during the execution, and this makes many existing integration testing techniques inadequate. Similarly, QoS aware composition and SLA automated negotiation means that a service may deliver with different performances in different con- texts, thus making most existing performance testing techniques to fail. Whilst SOA testing is a recent area of investigation, the literature presents a num- ber of approaches and techniques that either extend traditional testing or develop novel ideas with the aim of addressing the specific problems of testing service- centric systems. This chapter reports a survey of recent research achievements related to SOA testing. Challenges are analyzed from the viewpoints of different stakeholders and solutions are presented for different levels of testing, including unit, integration, and regression testing. The chapter covers both functional and non-functional testing, and explores ways to improve the testability of SOA. 1 Introduction Service Oriented Architectures (SOA) are rapidly changing the landscape of today and tomorrow software engineering. SOA allows for flexible and highly dynamic sys- tems through service discovery and composition [1–3], ultra-late binding, Service Level Agreement (SLA) management and automated negotiation [4], and autonomic system reconfiguration [5–7]. More important, SOA is radically changing the development per- spective, promoting the separation of the ownership of software (software as a product) from its use (software as a service) [8]. The increasing adoption of SOA for mission critical systems calls for effective ap- proaches to ensure high reliability. Different strategies can be pursued to increase con- fidence in SOA: one possibility is to realize fault tolerant SOA by redundancy. For example, Walkerdine et al. [9] suggest that each service invoked by a system could be replaced by a container that invokes multiple, equivalent, services, and acts as a voter.