Learn

Service virtualization

For automated software testing to work successfully, an application’s dependent systems must all be available, functioning properly, and correctly configured—all at the same time, every time the test executes. What happens, however, when only half of an application’s dependencies can be reliably accessed for testing? Or when access to third-party dependencies is not available for testing? That’s where service virtualization can help, stabilizing access to dependent systems so that tests can execute completely, reliably, and continuously.

What is service virtualization?

Service virtualization is a simulation technology that lets testers automatically execute tests even when an application’s dependent system components can’t be easily accessed or configured for testing. By simulating these dependencies, service virtualization technologies ensure that tests will be based on appropriate dependency behavior and data, each and every time the test is run.

Service virtualization is typically used when a test needs to interact with dependent system components that are:

  • Unreliable, evolving, or not yet finished
  • Outside the scope of the tester’s control or operated by another company or division
  • Available for testing only at inconvenient times or in limited capacities
  • Difficult to provision or to configure in a testing environment
  • Too restricted or too costly to use for automated regression testing
  • Simultaneously required by multiple testers using different test data setups and other requirements

When to use service virtualization

Service virtualization can be an invaluable tool in specific situations.

Assistance with negative testing

Negative tests evaluate an application’s performance when unexpected data is input or when unforeseen conditions are present. Because it’s often impossible to replicate these conditions or input in a live environment, testers can use service virtualization to identify and fix potential problems.

Simulating specific behavior

Some applications are built with specific behavior that’s difficult to replicate and manipulate in production environments. Service virtualization allows testers to re-create this behavior easily to accelerate the speed of software testing.

Facilitating automated testing

Automated testing requires all dependent systems to be available with the appropriate configuration, functionality, and test data at any time a test is run. Service virtualization makes it possible to accurately recreate these dependencies, enabling testing to proceed as needed.

Types of tests for service virtualization

Service virtualization can play a role in many types of software testing.

  • Application testing – use service virtualization to stress test individual components of applications
  • Component testing – testers can isolate application components earlier in the SDLC
  • Mainframe testing – eliminate testing constraints for development of mainframe applications
  • Chaos testing – service virtualization can enable negative testing scenarios that are difficult to replicate in live production
  • Third-party API testing – using service virtualization allows testers to remove access constraints and reduce costs

Benefits of service virtualization

Eliminate delays

Service virtualization enables testers to test highly interconnected systems at any time, without needing to wait for access to dependent components that are not yet implemented, that are still evolving, or that are under control of a third-party. By enabling multiple testing teams to test systems simultaneously, service virtualization helps accelerate testing and development timelines.

Test earlier

With the ability to start testing whenever an application is ready, testers can expose defects earlier in the software development lifecycle when they are easier, faster, and cheaper to fix.

Minimize costs

Many modern applications are dependent on third-party services that charge a fee every time the service is used or accessed. By simulating the behavior of these services, service virtualization allows tests to be executed and incorporated into continuous integration without worrying about having to pay exorbitant, recurring service fees.

Tricentis Tosca Service Virtualization

Tricentis dramatically accelerates software delivery by taking a new and fundamentally different approach to software testing . Tricentis solutions are totally automated, fully codeless, and intelligently driven by AI. By addressing the needs of Agile development and complex enterprise apps, Tricentis increases software delivery speed, reduces costs, accelerates cloud migration, and improves the quality of each iteration.

Tricentis Tosca’s Service Virtualization (SV) enables you to simulate the behavior of dependent systems, components and services that might be unavailable, costly to deploy or not yet built. This removes one of the major sources of testing delays, enabling automated tests to run at any time. With Tosca’s SV, you drastically accelerate your end-to-end testing, while reducing testing costs, and catching 60-90% more defects in the development lifecycle.

Tosca SV works by recording messages exchanged between software being tested and its constrained dependencies, automatically learning the expected interactions by “listening in” on these messages. Its model-based approach enables users with limited expertise to quickly create and run reliable virtualized environments for more than 100 technologies and protocols.

Tosca SV automatically flags messages that are improperly formed or sent in the incorrect order, eliminating the need to manually check thousands or millions of messages.

Along with Tosca SV, Tricentis offers a suite of testing solutions from unified test management, end-to-end testing, data integrity testing, app-native testing, performance and load testing, including smart impact analysis. It even supports every flavor and type of testing from black box testing, white box testing, exploratory testing, regression testing and chaos engineering.

Author:

Tricentis Staff

Various contributors

Date: Feb. 16, 2022

FAQs

What is service virtualization?

In software testing, service virtualization is a technique that simulates the behavior of other components on which an application is dependent, but which are unavailable, difficult to access or too expensive to use in testing. By simulating the behavior of a variety of components, service virtualization allows testers to test software in an environment that is almost identical to a production environment.

What’s the difference between service virtualization and stubs?
+

Stubs, or stubbing, offers another approach to testing when an application’s dependencies are not accessible. Stubs are typically fake applications that imitate the specific behavioral response of real-life software. They’re content specific and provide simulation at the class level. In contrast, service virtualization simulates a larger spectrum of behavior.

What are the benefits of service virtualization?
+

Service virtualization allows testers to move forward whenever software is ready for testing, regardless of whether the other components that an application depends on are available at the same time. As a result, testing can be accelerated to keep pace with aggressive development timelines. Testing can also take place earlier in the software development lifecycle, allowing developers to address issues when it’s faster, more convenient, and less costly to do so.

Related resources

You might also be interested in...

Featured image

End-to-end testing

End-to-end testing offers tremendous value for DevOps teams and others...
Read more