Total Pageviews

Wednesday, December 26, 2012

Load Testing using Service Virtualization

This is pretty interesting stuff that i have been working on-

First lets understand basics of Service Virtualization (SV)- In the later posts we will cover the Load Testing approach.

What is Service Virtualization?

Service virtualization involves the imaging of software service behavior and the modeling of a virtual service to stand in for the actual service during development and testing. Service virtualization is complementary to hardware virtualization, and provides a solution to address each of the aforementioned hardware virtualization limitations such as:

1. Providing 24/7 access to the service end point on your terms
2. Removing capacity constraints
3. Addressing data volatility across distributed systems
4. Reducing or eliminating the cost of invoking 3rd party systems for non-production use

So how does it go well with different application? What are the constraints?

Here are some constraints which Service Virtualization can overcome-

Access to a mainframe:
There are dozens of project teams, each needing access to the mainframe. Yet these teams receive very limited access, and often during timeslots that do not align to their project plan. This is a persistent problem that introduces risk, unacceptable delays, lost productivity and added cost.

Access to a database:
Another team owns a database that is accessed by others. This database is currently accessible in a development lab, but one team needs a new stored procedure added to that database. It may take 3 or 4 months with the DBA team in order to deploy those stored procedures.

Access to the web service:
There is a legacy system deployed and due to an architectural mandate, access to legacy system functionality will be provided via web services. However, no web service is available to test against, and not even an individual responsible for creating the web service.

How does SV works?

Following diagram can help us understand the basic on how SV can be captured?



As you can see in the above diagram-

A "service image" as a part of service virtulaization can be captured by some external tool during recording.The request and response of the application can be captured as a part of  service image.This service image then later be hosted and deployed on some server.The SI will then service the all the requests and send appropriate responses. This way when you run your script you are not hitting the actual site but just the Service Image !

Most of the tools available in the market has ability to work with common protocols listed below-

Transport protocol (Interface Protocol)
HTTP / HTTPS (Web Applications)
JDBC (Databases)
Messaging platforms (webmethods, Tibco, MQ, Sonic, JCAPS)
Standard JMS
From WSDL for HTTP / s

Data Protocol

HTTP Traffic (Web)
Web services (SOAP)
Protocol layer for handling messages over IBM MQ
Protocol layer for handling messages over JMS using JNDI

Available tools in the market?

If you do Google you will find many tools which can do SV. My personal favourite is ITKO LISA. Please find more information here.