SOA is the need of the hour. The acronym stands for Service Oriented Architecture which can be defined as a technique wherein services are available to other components of a software application which is provided by the application with the help of certain protocol over the network. SOA technique emphasises on providing functionality to a software application by integrating different services.
Service oriented architecture offers communication between software components over the network without the need for human intervention. SOA services use protocols that describe how they pass and how the messages are parsed using metadata description. Here, service is referred to an interface that makes the interaction between the components of an application easier. It enables easy implementation of services by users as they are not burdened with the task of understanding the underlying logic of the service. The idea behind SOA is to separate functions into different units or services, making them available over the network so that users (developers) can use them as per their requirements.
SOA testing like any other software application testing has to pass through quality check. SOA testing is about testing the overall architecture of a given software service. SOA testing can be thought of as testing a collection of legacy applications, custom developed components or any third party component.
SOA testing is about the web services that acts as an interface between the client and the server.
For instance, a user provides some command to the system to fetch weather report. The necessary SOA web service will then interact with the backend application or database, which will process the request and respond with a valid response.
The entire architecture of web service interaction with client and the service provider is done through SOA protocol.
SOA Web Services Architecture:
Web services are simply those services that are accessible over the web. A web service is generally a component that is published or deployed on the server so as to enable interaction over the web.
Let us elucidate the above pictorial description as follows:
Any web application is dependent on internet.Internet acts as a bridge between an application and web service.
Firstly, a web service is published over the web by a service provider, the same gets registered on the web service registry(a kind of record book for all web services).
Now when a user begins interaction over the Internet:
A user or a consumer requests something through the interface provided to him.
The client system sends the request along with the URL to search in the web service registry.
The web service registry fetches the relevant response and sends back a URL and WSDL (web services description language) to the client.
The response sent back is used to facilitate communication between the service provider and the requester. The communication is established with the help of SOAP protocol.
The response thus received is then converted into an HTTP response, which is the final response decipherable by the consumer.
Hence when SOA testing process is to be undertaken, test engineers need to consider few aspects of SOA testing that include service providers, authentication providers, and interaction between SOA components.
SOA Testing Process:
Requirements/Design Review - The very first phase of SOA testing begins with determining whether requirements of an application fits well into the SOA testing methodology.
Test Planning - Tests that need to be performed for SOA testing must be well planned in advance.
Test Designing - Test design is about devising test cases to be executed to check SOA services.
Test Environment Setup - Setting up the environment in which the test of services are supposed to be carried out.
Test Execution - Execute the test cases to verify if any failure is encountered.
Test Reporting - After test execution, a report should be prepared in order to track if there occurs any sort of discrepancy.
While carrying out the testing process for SOA, like any other testing activity, few aspects are worth considering.
Performance - Efficiency of any system to deliver the expected results in an optimum manner, that is, in least possible time frame is what really entitles the system as an efficient performer.
Load - Load testing is necessary to ensure multi user access to the system at a given point of time does not crash the system.
Quality of Service (QoS) – An SOA service is associated with Quality of Service. Quality of Service consists of elements of security like authentication, authorisation, reliable messaging and caching.
Reliability - This aspect talks about encryption of messages to be exchanged between service providers and consumers, so that the intended messages/information’s are not misleading.
Clustering - Clustering here means running a module with the help of multiple nodes to support a certain amount of load.
Integration - A very important aspect of SOA testing is its ability to integrate different types of products.
Platform Support - SOA services can be used on different types of operating systems, thus the products must run on any machine irrespective of its operating system. This is an integral part of SOA testing life cycle.
SOA Testing Tools:
Few testing tools that offer a robust support for SOA testing are - SoapUI, Apache Jmeter, cURL, etc.
SoapUI - It is an open source tool meant for performance testing, also serving the need for conducting security testing.
Apache Jmeter - Jmeter is a quite popular tool used for assessing the performance of an application by invoking SOAP/REST operations. A tester can involve multiple users in this by running the same test cases with different users. This tool offers the facility to perform parametrization with only one drawback that it cannot automate security related aspects.
cURL - This is a command line based tool that is used to fetch information using URL. It supports a wide range of internet protocols such as HTTP, HTTPS, FTP, IMAP etc.
SOA Building Blocks:
Service Layer -This layer comprises of the various functionalities that an application is composed of. Here we can understand the concept of service layer with the help of a wellness website. Such a website typically has - weight tracker, blood pressure tracker etc. These functions are primarily the ones that perform business functionalities. The request/response transaction is accomplished through web services.
Process Layer -This layer depicts how a business process is implemented. This includes collection of services which are part of a single functionality. A process, here, may be a portion of user interface, a part of ETL tool etc.
Process layer focuses primarily on the interfaces and processes (integration with database). We can understand process layer considering user interface of the weight tracker. The activities of process layer could be – adding new data, editing, deleting or creating new data.
Consumer Layer -This is the complete structure/hierarchy of interfaces. That is, the way user interacts with the website, which further sends the request to the back-end and returns the expected results to the user.
A pictorial depiction of SOA Levels:
SOA is one such technique that offers service to the developers that can be accessible to them over the internet enabling them to integrate those services into their business solutions. Hence an efficient SOA testing approach is very necessary to ascertain that an SOA service is capable of solving the intended goal.