Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds

Introduction to SOA Testing

Save for later
  • 13 min read
  • 09 Aug 2016

article-image

In this article by Pranai Nandan, the author of Mastering SoapUI, we will see how the increase in implementation of service-oriented architecture (SOA) and architecture across applications leads to various technological and business advantages to the organizations implementing it.

But as it's said; There are two sides to every coin, with SOA architecture came advantages like:

  • Reusability
  • Better scalability
  • Platform independency
  • Business agility
  • Enhanced security


But there are also disadvantages like:

  • Increased response time
  • Service management effort is high
  • Implementation cost is high

(For more resources related to this topic, see here.)


In this article we will study the following topics:

  • Introduction to SOA
  • SoapUI architecture
  • Test levels in SOA testing
  • SOA testing approach
  • Introduction to functional, performance & security testing using SoapUI
  • Is SOA really advantageous?


Well, let's talk about a few of the advantages of SOA architecture.

  • Reusability: If we want to reuse the same piece of functionality exposed via a web service we should be absolutely sure that the functionality of the service is working as expected; security of the service is reliable and has no performance bottlenecks.
  • Business Agility: With more functional changes being easily adopted in a web service, we make the web service prone to functional Bugs.
  • Enhanced Security: Web services are usually wrapped around systems that are being protected by several layers of security like SSL and usage of Security tokens. Use of the business layer to protect the technical services to be directly exposed is usually handled by these layers. If the security of these layers is removed, the web service is highly vulnerable. Also the use of XML as a communication protocol opens the service to XML based attacks. So to mitigate risks we have SOA Testing, and to help you test SOA architecture we have multiple testing tools on the market for example; SOAP UI, SoapUI Pro, HP Service Test, ITKO LISA and SOA Parasoft.


But the most widely used and open source tool in the SOA testing arena is SOAP UI. Following is a comparative analysis of the most famous tools in the Web service testing & test automation arena.

Comparative Analysis:











S.No Factors SoapUI SaopUI PRO ITKO LISA SOA Parasoft
1 Cost Open source 400 $/License Highly Costly Highly Costly
2 Multilayer testing Yes Yes Yes Yes
3 Scripting support Yes Yes Yes Yes
4 Protocol support Yes Yes Yes Yes
5 CI support Yes Yes Yes Yes
6 Ease Of Use 8/10 9/10 9/10 9/10
7 Learning curve 8/10 8/10 6/10 6/10


As we can see by the preceding comparison metrics, Ease of Use, Learning curve, and Cost play a major role in selection of a tool for any project. So to learn ITKO LISA or SOA Parasoft there is very limited, or no, material available on the Internet. To get resources trained you need to go to the owners of these tools and pay extra and then pay more if you need the training a second time.

This gives additional advantages to SaopUI and SoapUI Pro to be the first choice for Test Architects and Test Managers for their projects.

Now let's talk about the closely related brothers in this subset; SoapUI & SoapUI pro both are from the same family, Eviware, which is now SmartBear. However, SoapUI Pro has an enriched functionality and GUI which have additional functionalities to help reduce the time for testing, justifying its cost as compared to SoapUI open source.

Following is a quick comparison









Criteria SoapUI SoapUI Pro
Reporting Very limited, no rich reporting Reports are available in different formats
XPath Builder Not Available Available
Data source Not Available Multiple options for data sources available
Data sink Not Available Available
XQuery Builder Not Available Available

The additional functionality that is available in SoapUI pro can be achieved by SoapUI using Groovy script. To sum up everything that is given as UI functionality in SoapUI PRO is achievable with little effort in SoapUI which finally makes SoapUI open source the preferred choice for tool pickers.


SoapUI architecture


Before we move onto the architecture let's take a look the capabilities of SOAP UI and how can we use it for the benefit of our projects.

SoapUI provides the following testing features to the test team:

  • Functional testing [manual]
  • Function test automation
  • Performance testing
  • Security testing
  • Web service interoperability testing


Apart from these, SOAP UI is also capable of integration with the following:

  • LoadUI for advanced performance testing
  • Selenium for multilayer testing
  • Jenkins for continuous integration.
  • HP QC for end-to-end test Automation management and execution.

Soap UI has a comparatively simple architecture as compared to other tools in the SOA Testing world.


The following image, shows the architecture of SoapUI at an overview level:

introduction-soa-testing-img-0

Let's talk about the architecture in detail:

  • Test config files: Files which require power to test this includes test data, expected results, database connections variables and any other environmental or test specific details.
  • 3rd party API: Third-party API helps create an optimized test automation framework example. JExcel API to help integrate with Microsoft Excel to create a data driven framework.
  • Selenium:Selenium JARs to be used for UI Automation.
  • SOAP UI Runner: This is used to run the soap UI project and is a very useful utility for test automation as it allows you to run the test from the command line and acts as a trigger for test automation.
  • Groovy: This library is used to enable SoapUI to provide its users with groovy as a scripting language.
  • Properties: Test request properties to hold any dynamically generated data. We also have Test properties to configure SSL and other security configurations for test requests.
  • Unlock access to the largest independent learning library in Tech for FREE!
    Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
    Renews at $15.99/month. Cancel anytime
  • Test Report: SoapUI provides a Junit style report and user Jasper reporting utility for reporting of test results.

Test architecture in detail


Soap UI Architecture is composed of many key components which help provide the users of SOAP UI with advanced functionality like virtualization, XPath, invoking services with JMS endpoints, logging, and debugging.

Let's discuss these key components in detail:

  • Jetty: Service virtualization / mock Service
    • We can create replicas of services in cases where the service is not ready or buggy to test. In the meantime, we want to create our test cases, for that we can use service virtualization or mocking and use that service.
    • Jetty is used for hosting virtual services.
    • Provided by Eclipse, Java based web server.
    • Works for both Soap and Rest.

  • Jasper:
    • Is used to generate reports
    • Open source reporting tool

  • Saxon XSLT and XQuery processor:
    • We can use Path and XQuery to process service results
    • The Saxon platform provides us with the option to process results using Path and XQuery

  • Log4J:
    • Used for logging
    • Provides SoapUI, error, HTTP, Jetty, and memory logs

  • JDBC driver:
    • To interact with different databases we would need the respective drivers

  • Hermes MS:
    • Is used in applications where high volume of transactions take place
    • It is used to send messages to the JMS Queue
    • Receiver results from the JMS Queue
    • We can incorporate Java JMS using Hermes JMS

  • Scripting Language:
    • We can choose with groovy or JavaScript
    • We can select language for each project
    • We can set language at project property level

  • Monitoring
    • To check what is sent to the service and what is received from the service

  • Runners
    • Execution can be run without using SoapUI
    • Run from the command line
    • Execution can be run without using SoapUI
    • Test runner
    • LoadTestRunner
    • SecurityTestRunner
    • MockServiceRunner
    • Can also be executed from build tools like Jenkins

Test approaches in SOA testing


Approaches to test SOA architecture are usually based on the scope of the project and requirements to test. Let's look at an example:

Following is a diagram of a three-tier architecture based on SOA architecture:

introduction-soa-testing-img-1

  • Validation1 or V1: Validation of integration between Presentation Layer to the Services Layer
  • Validation2 or V2: Validation of integration between Services Layer to the Service Catalogue Layer
  • Validation3 or V3: Validation of integration between Product catalogue layer and the database or backend Layer


So we have three integration points which makes us understand that we need integration testing also with functional, performance and security testing. So let's sum up the types of testing that are required to test end-to-end Greenfield projects.

  • Functional testing
  • Integration testing
  • Performance testing
  • Security testing
  • Automation testing

Functional testing


A web service may expose single or multiple functionalities via operations and sometimes we need to test a business flow which requires calling multiple services in sequence which is known as orchestration testing in which we validate that a particular business flow meets the requirement.

Let's see how to configure a SOAP service in SoapUI for functional Testing

  1. Open SoapUI by clicking on the launch icon.
  2. Click on File in upper-left corner of the top navigation bar.introduction-soa-testing-img-2
  3. Click on New SOAP Project heading in the File menu.introduction-soa-testing-img-3
  4. Verify that a popup opens up which asks for the WSDL or WADL details. There are two ways you can pass a URL to the web location of the WSDL, or you can pass a link to the downloaded WSDL on your local system.introduction-soa-testing-img-4
  5. Enter the project name details and the WSDL location which can either be on your local machine or be called from a URL, then click on OK. You may verify that the WSDL is successfully loaded in SOAP UI with all the operations.introduction-soa-testing-img-5
  6. Now you can see that service is successfully loaded in the workspace of SoapUI.introduction-soa-testing-img-6
  7. Now, the first step toward an organized test suite is to create a test suite and relevant test cases. To achieve this, click on the operation request:introduction-soa-testing-img-7
  8. When you click on Add to TestCase you are asked for the test suite name and then a test case name and finally you will be presented with the following popup:introduction-soa-testing-img-8

    Here you can create a TestCase and add validations to it at run time.
  9. After clicking OK you are ready to start your functional and integration testing:introduction-soa-testing-img-9


Let's take an example of how to test a simple web service functionally.

Test case: Validate that Search Customer searches for the customer from the system database using an MSISDN (Telecom Service).

Please note MSISDN is a unique identifier for a user to be searched in the database and is a mandatory parameter.


API to be tested, Search Customer:

  • Request body:
    <v11:SearchCustomerRequest>
        <v11:username>TEST_Agent1</v11:username>
         <v11:orgID>COM01</v11:orgID>
         <v11:MSISDN>447830735969</v11:MSISDN>
    


So to test it we pass the mandatory parameters and verify the response which should get us the response parameters expected to be fetched.

By this we validate that searching for the customer using some Search criteria is successful or not, similarly, in order to test this service from a business point of view we need to validate this service with multiple scenarios. Following is a list of a few of them.

Considering it's a telecom application search customer service:

  • Verify that a prepay customer is successfully searched for using Search customer
  • Verify that a post-pay customer is successfully searched for using Search customer
  • Verify that agents are successfully searched for using search customer
  • Verify that the results retrieved in response have the right data
  • Verify that all the mandatory parameters are presenting the response of the service


Here is how the response looks:

Response Search Customer

<TBD>

Performance testing


So is it really possible to perform performance testing in SoapUI?

The answer is yes, if you just want to do a very simple test on your service itself, not on the orchestration.

Soap UI does have limitations when it comes to performance testing but it does provide you a functionality to generate load on your web service with different strategies.

So to start with, once you have created your SoapUI project for a service operation, you can just convert the same to a simple load test. Here is how:

  1. Right-click on the Load Test option available:introduction-soa-testing-img-10
  2. Now select the name of the load test; a more relevant one will help you in future runs.introduction-soa-testing-img-11
  3. You will now see that the load test popup appears and the load test is created:introduction-soa-testing-img-12
  4. There are several strategies to generate load in SoapUI. The strategies are given below:
    •    Simple
    •    Burst
    •    Thread
    •    Variance


    introduction-soa-testing-img-13

Security testing


API and web services are highly vulnerable to security attacks and we need to be absolutely sure about the security of the exposed web service depending on the architecture of the web service and the nature of its use.

Some of the common attacks types include:

  • Boundary attack
  • Cross-site scripting
  • XPath injection
  • SQL injection
  • Malformed XML
  • XML bomb
  • Malicious attachment


Soap UI security Testing functionality provides scans for every attack type and also, if you want to try a custom attack on the service by writing a custom Script.

So the scans provided by SOAP UI are:

  • Boundary scan
  • Cross-site scripting scan
  • XPath injection scan
  • SQL injection scan
  • Malformed XML scan
  • XML bomb scan
  • Malicious attachment scan
  • Fuzzing scan
  • Custom script


Following are the steps for how we configure a security test in SoapUI:

  1. You can see an option for security test just below load test in SoapUI.introduction-soa-testing-img-14
  2. To add a test, right-click on the Security Test and select New Security Test:introduction-soa-testing-img-15
  3. Now select New Security Test and verify that a popup asking the name of the security test opens:introduction-soa-testing-img-16
  4. Select the name of the security test and click on OK.
  5. After that, you should see the security test configuration window opened on the screen. For the Service operation of your test case, in case of multiple operation in the same test case, you can configure for multiple operations in a single security test as well.introduction-soa-testing-img-17

    For this pane you can select and configure scans on your service operations.
  6. To add a scan, click on the selected icon in the following screenshot:introduction-soa-testing-img-18
  7. After selecting the icon, you can now select the scan you want to generate on your operation:introduction-soa-testing-img-19
  8. After that you can configure your scan for the relevant parameter by configuring the XPath of the parameter in the request.introduction-soa-testing-img-20
  9. After that you can select Assertions and Strategy tabs from the below options:introduction-soa-testing-img-21
  10. You are now ready to run you security test with Boundary Scan:introduction-soa-testing-img-22

Summary


So now we have been introduced to the key features of SoapUI and by the end of this article the readers of this article will now be familiar with SOA and SOA Testing. They now will have basic understanding of functional, load, and security testing in SOA using SoapUI.

Resources for Article:





Further resources on this subject: