(1) Service virtualization and DevOps
Service virtualization is the process of simulating the behavior of select components within an application to enable end-to-end testing of the application as a whole. Application development teams can use virtual services in lieu of the production or real services to conduct integration testing earlier in the development process.
Virtualized test assets look and act like the real thing but may be duplicated and available at times when the real assets are not available to the testing team. Virtualizing your test assets enables your organization to create robust test frameworks that can provide comprehensive test coverage while keeping costs low.
There are many different ways to define DevOps. Some of the industry terminologies are listed below:
- A software development method that stresses communication, collaboration, and integration between development and IT professionals
- A set or mix of principles, practices, methods, or concepts
- A combination of development and operations
- A methodology of continuous delivery
- “Streamlining release process”
DevOps is not only about culture, practices, and methods. It is also about a set of tools that support development, deployment, and operations. DevOps is the sum of all the tools that pave the way for teams to build, test, and release great software. The fundamental process of service virtualization works like this:
Capture: A “listener” is deployed wherever traffic or messages are flowing between any two systems. Generally, the listener records data between the current version of the application under development and a downstream system that we seek to simulate.
Model: Here, the service virtualization solution takes the captured data and correlates it into a virtual service, which is a “conversation” of appropriate requests and responses plausible enough for use in development and testing. Sophisticated algorithms are employed to do this correctly.
Simulate: The development team can now use the deployed virtual services on-demand as a stand-in for the downstream systems, which will respond to requests with appropriate data just as the real thing would, except with more predictable behaviors and much lower setup cost.
(2) Role of Service Virtualization in DevOps
DevOps provides a set of principles and practices which enable development and operations teams to communicate and collaborate more effectively. Deploying automation enables the organization to enjoy the benefits of continuous integration and continuous delivery, significantly enhancing both productivity and agility.
Understanding opportunities for acceleration is a key to software development for process improvement, and the same has to be accomplished without risking quality.
Software organizations are learning that QA and testing practices must be used throughout the entire software development lifecycle. Robust testing practices enable the organization to meet the demands and challenges of continuous delivery. There are methodologies and tools available today that help to implement effective testing strategies that meet the demands of even the most complex IT systems embracing DevOps.
When an organization is looking at “continuous everything,” an emerging best practice known as continuous testing is a critical component in the overall process. Another emerging best practice known as “service virtualization” enables continuous testing by providing anytime, anywhere access to a complete, simulated test environment.
Recommended capabilities for this goal include an intuitive interface for automating complex scenarios across the messaging layer, ESBs, databases, and mainframes, and touch on the following actions:
- Defining automated test scenarios across the broad range of protocols and message types used in APIs: REST, WADL, JSON, MQ, JMS, EDI, and fixed-length messages
- Automating rich multilayer validation across multiple endpoints involved in end-to-end test scenarios
- Parameterizing test messages, validations, and configurations from data sources, values extracted from test scenarios, or variables
- Defining sophisticated test flow logic without requiring scripting
- Visualizing how messages and events flow through distributed architectures as tests execute
With the trend of agile development and increasing system interdependency, it has become extremely difficult to access all of the dependent applications. Access to dependent systems and environments is required to execute the necessary type of complete end-to-end tests. By leveraging service virtualization to remove these constraints, an organization can gain full access to the test environment, thereby enabling continuous testing to occur as early and often as needed.
Service virtualization enables rapid iterative development by providing simulated test environments that can help scale continuous testing. The goal of service virtualization is to simulate interfaces and resources that may not always be available for testing due to cost or other constraints. This emerging industry best practice promises to provide a much more robust and comprehensive approach to ensuring that we can continuously deliver error-free code.
(3) Service Virtualization — Research Inputs
Analysts have been studying company implementation of service virtualization and the results of those implementations for several years. They have repeatedly found that companies using service virtualization experience lower costs, greater software quality, and faster delivery. In fact, the latest research by Gartner, which analyzes a survey of 500-plus companies, found that service virtualization led to the following:
- Dramatically increased test rates, with more than a quarter of companies doubling their test execution rates
- More than a third of companies reduced their test cycle times by at least 50 percent
- Nearly half of respondents saw a reduction of total defects of more than 40 percent
(4) Service Virtualization Automation Tools Used in DevOps
SmartBear: automated service virtualization tool such as ServiceV Pro and Alert site
Parasoft Virtualize: an open automated service virtualization solution, it creates, deploys, and manages simulated dev or test environments. It simulates the behavior of dependent applications that are still-evolving, difficult to access, or difficult to configure for development or testing.
CA Service Virtualization: formerly known as LISA, captures and simulates the behavior, data and performance characteristics of complete composite application environments, making them available for development and test teams throughout the software lifecycle, for faster time-to-market with quality software functionality at lower infrastructure cost.
The use of simulation technologies such as service virtualization overcomes the constraints associated with the dependent systems outside of your control in order to run meaningful end-to-end tests in DevOps. Service virtualization shifts the ability to test applications earlier in the development lifecycle, enabling integration and release processes to happen faster, with both higher quality and less risk. It also enables other nonfunctional testing, such as performance testing against a simulated connection or load testing that simulates multiple connections.
Main Author: Renu Rajani, Vice President, Capgemini I P Ltd, firstname.lastname@example.org
Contributing Author: Ranganath Gomatham, Solutioning Program Manager, email@example.com