We have provided a detailed SOA Testing Tutorial for you:
We are going to discuss the testing techniques for an SOA architecture in this article. In the current scenario, software is very versatile and prone to handle changing user expectations every now and then, a standalone model is not useful.
This is where SOA fits right in as the solution.
That’s the reason why, a lot of companies are adapting or trying to adapt the SOA approach because of its advantages such as; cost cutting, business agility, easy maintenance etc. With the upcoming market full of SOA architecture, it becomes necessary for the Modern day testers to get a fair idea on the SOA testing.
We will cover the basics of SOA with examples in this tutorial.
This would give the readers a basic idea of SOA. This will be followed by a web service approach to implementation. Finally, we will get into the testing process which can be followed for a SOA architecture model.
Table of Contents:
SOA Testing Tutorial
What is SOA?
SOA or Service-Oriented-Architecture is a flexible/agile/efficient method of integrating various applications/services so as to achieve certain Business needs.
- Unlike other complicated systems, SOA comprises of smaller components/services/micro services tied together so as to meet the business needs.
- The services are the units that make the system whole and when there is a need for a change, rather than changing the whole system, the specific service is modified.
- A service is a component which is capable of performing a task.
- This architecture is more sellable than the legacy system as the End-User only gets the needed services to meet his needs. He doesn’t have to get the whole system.
- The services/micro-services are loosely coupled, reusable, and stateless which makes the system even more robust.
- This model is highly cost efficient in terms of deployment, development, and maintenance.
Examples of SOA
Business needs: An application to which a User can login and search for Restaurants based on Geolocation, Download the restaurant details and Menu from the server once the search is complete and finally a payment can be made for placing the order.
This business need can be achieved by the implementation of SOA.
The services/micro-services can be as follows so you can perform various tasks:
- While logging in, the service that will be used is the Authentication service.
- Searching for restaurants would be done by the Geo-locator service.
- The Downloading menu should be done using the Menu Downloader service.
- The final payment will be done by . Payment service.
Each of the above-mentioned services does something unique so as to make the system work and deliver what it is supposed to do. Now, if a customer needs to only see the restaurant and its menu but doesn’t need a Payment Gateway interface, he would only purchase/deploy the first three services.
This makes the job simple for development, Deployment, Sales, Maintenance and after all the customer/End user.
Web Services
- These are APIs [Application programming Interfaces] which facilitates the interaction between different software programs.
- There is a service provider which hosts the service on the Web. As part of the hosting, a WSDL is hosted by the provider.
- When the Client sends a request message to the service provider, the communication is established with the use of the URL/WSDL.
- In the below given example, the Geolocation server hosts a Web service which is used by the Service requester.
SOA Testing Process
Every product, model, and infrastructure needs to go under the Testing phase so as to satisfy the end user in terms of a good quality product. SOA testing is not limited to layer testing/Web service protocol testing. This is the overall testing of the architecture and every minute part of it.
The testing approach can be similar to that of the normal testing process. i.e.
- Requirement review process
- Test Planning
- Test design
- Environment Setup
- Execution phase
- Reporting Phase
The SOA Testing process revolves around 3 layers in the architecture:
- Service consumers
- Process Layers
- Service layers
Going with the same example above, we can have our layers as follows:
- The service consumer’s layer helps in consumer interaction. This helps in reading the input from the end user and returning the appropriate response for the request received. In other words, this basically has the UI interface.
- This is a layer that focuses on the implementation front. This layer in our example will have methods of authentication, the creation of a user, etc.
- Service layers are the business functions in terms of services. All the services that are called when a specific task is performed are in this layer.
The testing can basically be divided into 4 different stages;
Tier #1
1) Service Level Testing:
- Each service involved in the system is tested individually based on a Request and response method.
- This test is mandatory and very important to proceed with other testing processes.
2) Functional Testing:
- Tests are conducted for services to their business and need to find out if the response that is received is correct.
- Business needs are first converted into test cases and the requested statements are formed.
- The requested statements will then be processed to see if the obtained responses are correct.
- In case of invalid input data, a proper error code should be thrown or a proper error message should be triggered.
- The formats of the response, as well as the negative scenarios, have to be executed.
3) Security Testing:
- Whenever it comes to a web service, security testing plays a key role in the success of the testing process.
- Authentication gateways, Payment gateways, etc. should be encrypted once the data is parsed.
- When it comes to XML, vulnerabilities such as CSRF, SQL injection should be verified.
4) Performance Testing:
- Services used in the architecture are hosted so that a lot of other applications can make use of it. Performance testing ensures the credibility of these services.
- The testing of the services should be done to find out the following sets of results;
- To determine the stability of the services.
- To validate the scalability of the services.
- Service behavior under Peak load conditions
- Find response times across services
Tier #2
1) Process Testing:
- This process involves the testing of various business processes.
- This should comprise of the integration scenarios of the web services and applications covering the business requirements
- Usage of simulators should be done to generate sample input data and validation should be done for the respective outputs.
- Data flow from different layers should be performed to prove smooth functioning of the system when it is integrated.
Tier #3
1) End to End Testing:
- This phase is meant to validate business requirements both functionally and non-functionally.
- UI of the application is validated.
- The business process involved is tested.
- The end-to-end data flow is validated in this phase.
- Work with all services once the services are integrated into each other will be validated.
Tier #4
1) Regression Testing:
- The stability of the system in incremental build releases is validated by this testing.
- This can be achieved either through Manual Testing/Automation Testing.
Challenges in SOA Testing
Someone rightly said, “Bigger the mesh; Bigger is the mess!”. SOA can become a really complex child hungry for attention.
In other words, with so many minute parts constituting the SOA architecture, it becomes a real tough job to certify it in Testing.
- Tough to simulate the testing environment to carry forward the testing process.
- The products involved in the model can be of the same technology/vendor. But they can also be different. More problems?
- Testing combinations shoot UP with the number of services/components involved.
- Complexity in the model
- Issue reproduction/testing is a tough job.
- Unlike other models, the primary focus of testing should be on the business scope rather than the service and its features.
SOA Testing Tools
There are numerous applications for SOA testing. SOA Testing tools are selected based on their accurate results and better productivity.
- SoapUI: This is a free tool aimed at Web service testing. Soap UI is capable of doing Functional testing, Performance testing, and Load testing
- Apache Jmeter: This is also an OPEN SOURCE utility which is used for analyzing the performance of SOAP invocation.
- JProfiler: This is used to stop or detect memory leaks, find bottlenecks in performance, etc.
- HP Service test: This is integrated to HP QC. This is a functional testing tool which also supports UI and shared service testing
Through this article, we have understood the singularity of the model. This is very much different from the legacy model and the article gives a good idea on it. This article also throws some light on SOA procedures and ways to proceed with testing.
About the author: This is a guest post by Subhasis. He is working as a team lead with over 8 years of corporate experience working for Fortune 500 IT companies.
Post your SOA testing related queries/comments below.
All the best!
Hello, i have SOA development knowledge, but no real time experience. I searched for job but could not get. Can i get a job without experience in SOA testing???
Nice.It’s informative and I learnt basics of what exactly does SOA testing is.Awesome.
Thanks I learnt a lot. Hoping to see practical lessons. Thanks once more.
Thank you for this nice post. I learned lots regarding SOA.
As an alternative to proposed testing tools (they are all good indeed), I’d like to suggest a classic bundle of functional, load testing tools: Selenium for functional automation, Apache JMeter for load testing, Jenkins for CI and Taurus for integrated approach to the functional and load tests suites. The complex solution to automation with these tools can be found here: https://www.blazemeter.com/blog/how-automate-jmeter-and-selenium-testing
very informative…
are you going to explain it more further with examples…
Thank you Piyush.
Need to know the exact data to suggest any tools.
However, you could give a try for the following and see if that works for you:
https://search.google.com/structured-data/testing-tool
Great Article, Thanks Alot !
Hi,
Nice article on SOA testing.
I was Managing a project which was developed under SOA framework.
The system comprised of multiple services and were being called one after the another and were dependent i.e. output of one service was input of another after some processing.
The challenge we had was the tool to be used.
SOAP UI couldn’t solve the purpose as output of few services were metadata which could only be consumed within another service.
So please share if there is any other tool which could solve this?
We got a tool developed by developers which helped for testing.
The article is written in a very simple language.
SOA(has)–> Web Services –> API
Through API we implement Webservices for SOA archtecture..
is the API testing only way of implementing SOA ? Correct me please if i am wrong
Good approach to brunch up the minds of software test engineer to learn in one go . Thumbup