What is Service Virtualization?

There has been a lot of discussion lately about “service virtualization”, however the term alone can make your head spin. Are we talking about server virtualization? What types of services are involved? What does virtualization have to do with testing? I’d like to quickly clear up any confusion you may have. Service virtualization is used to simulate the behavior of components in an application so you can perform an accurate and timely test in a world of complex interrelated applications. Production services that may not be available for integration testing can be virtualized so the testing can take place at an appropriate time in the software development process.

While quality professionals have always needed to test combinations of code, current methods for writing and combining code have changed so much that traditional approaches to testing can’t get the job done at the right price and the right time.  There is a fast growing commercial market for production services that are incorporated as self-contained modules into software applications. Third party services such as PayPal or a credit checking service are increasingly used in customer facing applications.

Use of these third-party services increases the efficiency of software development, but at the same time makes your application dependent on services that you do not control. Consider, for example, the scenario of an online retailer with multiple suppliers. The retailer has created a new mobile application for customers.  This application uses a credit check service provided by a third-party vendor. The team can’t test without this dependent component, but it is not available for testing. Without service virtualization, the software development team has some difficult choices to make and none of the options are good. If the development team proceeds without doing the necessary testing, they may introduce errors that are much harder and more costly to fix later on. If the team waits until the third-party service is available, developer productivity will decline and the team may miss production deadlines. In addition, if the third-party service becomes available it can get pretty expensive to test application performance at high usage levels since the service costs money each time it is executed.

So what does the development team do in this situation? Service virtualization is a new approach to testing that helps organizations eliminate some of the testing bottlenecks that make it hard to bring new high quality applications to market quickly. Here are five key things you should know about service virtualization.

  1. To get started with service virtualization you need to understand your testing methodology and think about where service virtualization can increase team velocity while also helping your team to deliver higher quality software.
  2. Use a cost/benefit analysis to select which services should be virtualized.  Consider the cost to your company when testing is delayed because dependent services or software are not available for testing. How much is spent on staff needed to set up and maintain test environments? How much do you spend to maintain test environments that are not fully utilized? What is the cost for software licenses in the physical test lab environment? What is the cost of third-party service access fees?
  3. Service virtualization can help you find errors in all testing phases- including unit testing, performance testing, integration testing, system testing, system integration testing, user acceptance testing, and operability testing.
  4. Recording a service that already exists is a great way to define the behavior of your virtual component. You can use the recording process to identify the behaviors that will need to be simulated so you can create test cases quickly.
  5. You can’t expect to virtualize all your components. Therefore, you need to be able to easily move back and forth between real components and virtual components while you are testing. You want to maintain consistency across real and virtual components.

One of the biggest impacts of service virtualization for developers is the ability to validate integrations much earlier in the application life cycle. The software development team can move beyond unit testing and overcome many of the roadblocks that inhibit timely, efficient, and cost effective testing.


, , , , , , , , , , ,

  1. #1 by Alan Baptista on March 21, 2013 - 11:16 AM

    Currently there are four major Service Virtualization offerings in the marketplace: CA LISA Service Virtualization, HP Service Virtualization, IBM Rational Test Virtualizaiton Server and Parasoft Virtualization.

    There is a great source of information on Service Virtualization at http://www.servicevirtualizaiton.com

    • #2 by mkaufman on March 21, 2013 - 10:19 PM

      Thanks for including the reference to vendor solutions. I plan to do a follow up blog with some vendor specific information. Please note correction to the link you mentioned – it is http://www.servicevirtualization.com

  2. #3 by Jason English on March 21, 2013 - 12:23 PM

    Good overview of Service Virtualization, however one interesting aspect is that SV isn’t just for testing functions anymore. At CA we sometimes see LISA virtual services used as “stand-ins” by resourceful users in pre-prod deployment and even delivery.

    Another killer application is using SV for training environments, a lot of companies have huge efforts managing back ends for employee training and Service Virtualization almost makes it instantaneous and a fractional cost compared to replicating conventional environments. One delivery guy Rajeev Gupta wrote an article about it on the Service Virtualization forum here: http://servicevirtualization.com/profiles/blogs/a-creative-approach-to-customer-service-rep-training

    Also I would argue point 5. Consistency is important, but just let go of that real component until the very end of the SDLC. You should ALWAYS virtualize any dependency, behavior or data that represents a constraint outside the scope of what you are actually developing or testing. The virtual service should definitely check-in and be kept current with the real thing, but switching back and forth between virtual and real environments not only keeps setup time and costs high, it means the team hasn’t fully committed to the practice, or they lack the technical sophistication to virtualize everything.

    Thanks for covering the space!
    Jason English
    Co-author, “Service Virtualization: Reality is Overrated”
    Founder http://ServiceVirtualization.com Community
    CA LISA Service Virtualization evangelist

    • #4 by mkaufman on March 21, 2013 - 10:37 PM

      Thanks for your comment and the link to Rajeev Gupta’s article about using service virtualization in training environments. This is a really important use case. Companies can use service virtualization to simulate challenging situations that can help provide a meaningful training experience without interfering with the live production environment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: