Ranger4 DevOps Blog

Service Virtualization: What to Look for in a Vendor

Posted by Malcolm Namey on Fri, Jan 10, 2014 @ 17:01 PM

 

Service virtualization solutions have the following characteristics:   


- Application emulation: Virtual components can simulate the behaviour of an entire application or a specific component


- Multiple test environments: Developers and testers can create test environments by using virtual components configured for their needs


- Same testing tools: Developers and testers can use the same testing tools that they have traditionally used — the tools don’t know the difference between a real system and a virtual service   


The virtual components are created to simulate a real environment through two basic entry points:


1) Observing the system in action: Build virtual components by listening to the network traffic of the service that you want to emulate


2) Reading the descriptions of the system: Build virtual components using other sources of information such as service specifications - one example is a Web Services Description Language (WSDL) file, which describes the operations offered by a service along with the parameters it expects and the data it returns


When selecting your service virtualization solution it’s essential to recognize the needs of different roles within your business. Not everyone needs or wants to define virtual components, but many testers need to access virtual components in their test environments.


Creating virtual components


The best service virtualization solutions make it easy to construct virtual components that:


- Mimic the behavior of the real component providing the service

- Respond with realistic data

- Process requests within configurable throughput ranges

- Can be switched on and off, as the real service becomes available, without having to reconfigure the deployed application

Key Capabilities


When you’re looking for a service virtualisation solution for your business, here are some key capabilities you should be looking for:


  1. A tool that can create and maintain virtual components

  2. A hosting environment for virtual components

  3. Testers can configure their environment with virtual components with ease

  4. Data extracted from production environments is presented in an easy-to-use way

  5. Data is captured during recording in a way that allows for easy creation of a virtualized service

  6. Data can be privatized or obfuscated as needed   

  7. Multiple types of boundary conditions can be tested

  8. Data from virtual components can be externalized to allow for easy updating - it will be easy for the author of a new test scenario to add relevant data to a spreadsheet

  9. A method for observing and recording messaging conversations

  10. A virtual service solution that’s flexible enough to allow you to switch back and forth between the real component and virtual components when testing

  11. Virtual services can be developed in a personal environment on a desktop

  12. A shared environment for service virtualization can be used across a development team


A Shared Infrastructure


Developers and testers need a shared infrastructure for hosting virtual components and multiple environments need to be maintained in parallel with different mixes of real and virtual components. An environment binds a set of variables from the logical view of your system to specific virtual and physical resources (identified by URLs, host addresses, ports, or other connection settings). By creating multiple environments (for example, developer private, SIT, and UAT), you can run tests against different configurations during each phase of the product life cycle.

Routing


It’s essential to be able to control which traffic is routed to a real service and which is routed to virtual services across environments. After the environment is established, you should be able to run all your tests without knowing the difference between real and virtual services. Your chosen service virtualization tool should allow this change in routing without needing any changes to the application code / configuration. You should be able to adjust virtual components throughout.

Questions to ask during your evaluation


  1. How easy to use is the solution?

  2. How much and what level of training is required?

  3. Can you create virtual components from recordings and / or design specifications?

  4. What test types does the solution support? e.g. Manual, automated (integration and functional), and performance test

  5. Can you create virtual components that allow you to test different scenarios? e.g happy path, alternative flow, and negative testing

  6. How do you create virtual components that enable you to test what-if conditions?

  7. Does the solution offer the ability to quickly deploy and manage virtualized services through an administrative console?

  8. Can you toggle between live systems and virtual services without having to reconfigure your application deployment?

  9. Can the solution manage the complexity of your application environment (ranging from data-driven and correlated response sequences to full stateful database emulation)?

  10. Can you automatically schedule and execute tests supported by virtual components upon the availability of a new application build?

  11. Can you create, modify, and deploy virtual components without requiring your teams to learn new programming skills?

  12. How easy will it be to share and reuse virtual components across teams?

  13. Can your teams develop in parallel environments?

  14. Will your solution scale to accommodate very large teams as you grow?

  15. Does the solution require a long term professional services engagement to help you get started and continue to move forward?


Technology constantly changes, so check the software vendor you select is committed to delivering new functionality regularly to ensure the solution remains current - ask to see the product roadmap and question them about their release cycles and software maintenance program. To help speed your adoption process and keep your productivity levels up, make sure your vendor provides excellent support with access to trained technicians - ask for a reference call and check with another customer that this is the case.