Micro Focus is now part of OpenText. Learn more >

You are here

You are here

Service virtualization: How this misunderstood tech saves money

Ameet Patil Principal Consultant and Enterprise Architect for Performance Testing and  Service Virtualization, Patson USA

Despite the proven benefits of service virtualization for software development, the technology often gets underutilized. That's because organizations either haven't heard of it or misunderstand what it is and how to use it.

Service virtualization is a way to simulate and model dependencies for developers and quality assurance teams. You can can use it to produce realistic behavior in application components (or AUTs, applications under test) when the dependencies those AUTs/components need in order to function aren't immediately available to you as a developer or tester.

That kind of simulation and modeling becomes more important as organizations move toward DevOps when developing applications. With DevOps, teams work in parallel to accelerate time-to-completion.

In that environment, delays are intolerable, yet teams that hurry to complete a task often have to wait to continue moving forward because they can't get access to a dependent component or system. The dependent service may be unfinished, constrained by a third party, or too expensive or sensitive to be accessed except during a narrow window of time.

Here are key factors to consider with service virtualization—and ways to get started.

Is service virtualization too resource-heavy?

Some developers believe service virtualization is the same as testing using mock services and stubs, which mock some but not all of a programming object's behavior. There's a significant distinction, though, between mocks created with and without service virtualization.

Mocks created without service virtualization return simple, static responses. On the other hand, service virtualization tools can add a rich layer of intelligence to the virtual services used in testing, which makes the services very smart. That means a tester can get a better notion of how an application will perform and behave at runtime.

Another barrier to deploying service virtualization is that it's resource-heavy. That's certainly true when it comes to person-power. Service virtualization requires people with a solid development background to make it work. A QA tester without good technical or programming chops will struggle with service virtualization.

Open source is not always the best option

In addition to talent overhead, there are often software licensing costs involved in implementing a service virtualization program. One way organizations often seek to avoid licensing costs is by using open-source software. That may not be a good alternative for service virtualization. Our team reviewed a list of more than 85 open-source platforms and utilities for service virtualization and found that they lacked the functionality and performance of commercial products in the market.

For example, they may support one transport protocol but omit others. That's especially true when it comes to supporting enterprise protocols. They also typically support just simple web services. Moreover, they don't perform well in terms of transactions per second, even when running on powerful hardware.

Catch integration issues earlier

Just as moving security "left" in the software development lifecycle can save time and money, moving testing left can have a similar impact. For example, service virtualization should be integrated into the design phase of a project.

Doing so can help answer questions from the business units about how one app integrates with another. They can even get an idea about how the app will behave before you've written one line of code. Potential dependency bottlenecks may also be identified.

Moving testing left can also address development integration problems. Unless all development teams do proper integration testing—where they test their app to other integration points in a project—things begin breaking and have to be sent back to the developers to be fixed.

Proper use of service virtualization allows integration errors to be caught earlier in the software lifecycle, where they will be less disruptive to the project's workflow.

Improve overall software quality and save money

One of the most undervalued benefits of service virtualization is how it improves software quality. Let's say you're trying to test the performance of application A, which depends on application B. However, application B gives you inconsistent results. Sometimes it's slow; sometimes it's fast.

With service virtualization, a virtual application B could be created that delivers more consistent results. That allows you to better calibrate the performance of application A and produce better test results for it. Functional quality can also improve, because service virtualization will catch defects that would have remained undiscovered without it.

Software quality is just one way that service virtualization can save your organization a lot of money. Early detection of integration defects is another money-saver. The earlier you expose defects in an application development process the less likely they will become bigger, more costly problems later.

In addition, you can avoid building expensive infrastructure to test the app by hosting virtual services on an already shared infrastructure where other virtual services are deployed. Moreover, you can increase productivity because you can eliminate time wasted while teams sit on their hands waiting for access to dependency resources.

Add up the potential savings: A real-world example

Savings from the use of service virtualization can amount to millions of dollars when deployed in large organizations. For example, we worked with a big pharmaceutical company to identify use cases where it could deploy service virtualization.

The firm implemented more than 400 virtual services, with 150 services running simultaneously that perform up to 3,000 transactions per second. This customer estimated that these services saved it $16 million over a three-and-a-half-year period through infrastructure avoidance, speed to market, increased productivity, and early detection of defects.

Although the payoffs from service virtualization will scale exponentially for larger companies, smaller companies can benefit from it, too, if they keep their infrastructure footprint low.

How to move forward

Organizations that want to reap the benefits of service virtualization should start with a few basic steps:

  • Identify your use cases. Talk to your development teams. Evaluate your integration architectures and performance testing for quality.
  • Identify what your tools will need to do to support your use cases and problem statements.
  • Evaluate the commercial and open-source tools that meet the needs posed by your use cases and problem statements, then draw up a governance and sustainability plan for the adoption and continued use of the tools.
  • Do a proof of concept.

Software development is a balancing act. Developers need to balance scheduling, quality, and cost. Finding the right formula for that becomes even more difficult as cutting-edge software becomes more complex. Service virtualization can be a means for dealing with that complexity and getting that balancing act right.

Keep learning

Read more articles about: App Dev & TestingTesting