Exploring the advantage of service virtualisation deployment in current IT trends
In software engineering, service virtualization is a buzzword that refers to a virtualized implementation of a software product with all components integrated. To decode this jargon further, it may be defined as a method that helps imitate the behaviours of the component in a service-oriented architecture. In a typical software development ecosystem, the development, testing, and operations teams normally do not work in sync and each team has to wait for the other to have components ready in order to initiate the testing process, resulting in a lot of delay in workflows and eventually leading to delay in delivery of the end product and compromising on quality as well. But with service virtualization, development and testing teams use simulated services instead of actual production services to test the system while it is still in the pipeline. Service Virtualization enables integration of applications at an early stage in the development cycle thereby reducing time and cost.
The early stage of testing in a software development phase is usually plagued with certain challenges such as,
- Dependency on an underdeveloped component or unavailability
- Lack of flexibility in infrastructure and integrating components that is required in the ever-evolving Agile development process
- The cost and time-intensive external/ third party interfaces
- Validation of performance and scalability of component/ module during the early phase of testing (e.g. latency, delay)
- API/ Service testing – Validation of various errors and failure conditions when the real system is not available
Is there a solution to reduce or mitigate these challenges, something that is not time intensive and easy to learn and deploy? Well, service virtualization is the answer. Simulating the behaviour of dependable components (underdeveloped or unavailable), service virtualisation can effectively reduce the dependency on the component. But, how does this concept work? Well, it captures the transactions (data along with transport mechanism) and then creates the virtual service that emulates real components or expected response, thus eliminating constraints and expedites development and testing at the same time. In layman’s terms, instead of setting up the entire system, the specific layer of dependent behaviour is virtualized so that the operating team can progress with development & subsequent testing phases.
Of late, service virtualization has gained popularity along with other emerging processes such as Agile and DevOps. While a handful of testers admit to using external or third-party services like Google maps, Payment gateway or Credit card validation, these services are often expensive or the rate at which the service can be utilized is controlled by third-parties, and is therefore not suitable for regular testing and development purposes. This is precisely where Service virtualization can step in as an effective alternative creating virtual service. Once a service is available, live transactions between a client and a service can be recorded. In addition to that, virtual service can be created from the captured transactions and response from message queue can be recorded in case of messaging oriented middleware.
In a situation where a service is unavailable, virtual service can be created from sources such as engineering specifications, log files, sample data, packet capture and transaction data captured by agents and the broker for Application Insight features. Below figure shows how the Service virtualization concept work, different approach to create virtual service and utilize in overall SDLC phases.
With this concept and with proper tool selection and integration, the project team can virtualize any IT asset viz. web traffic (Http/ Https), middleware/ integration components, third party service (e.g. Banking or Telecom protocols), test Data unavailability (unavailability of accurate data in the target systems for purposes of testing), mainframe components and mobile app frontends.
There are various vendor tools available to ease the service virtualization process. Below is a snapshot of the leading market tools used for Service virtualization and their key features.
Common Use cases for Service Virtualization:
The benefits of service virtualisation are manifold. Broadly speaking, while Service Virtualization removes dependencies and associated problems in a testing environment on one hand, it reduces time to market, costs, and allows the team to deliver high-quality features on the other. Additionally, service virtualisation improves testing coverage, reduces non-production infrastructure, reduces constraints and optimizes utilization of resources and facilitates early detection of the defect. Service virtualization also reduces the time spent on data creation, as a result of which the overall test life cycle is substantially decreased.
Points to be considered:
Before adopting service virtualization, certain factors need to consider, such as tool licenses, resource training cost, learning curve for resource, project duration and release timeline which is in line with the consumption of developed services during the project lifecycle. This helps the project to identify the ROI by adopting Service virtualization. Initial PoV (Proof of Value) can be planned to validate the above factors.
Current Trend in service virtualization:
An industry report published by the Market Research Future has estimated that the global service virtualization market is expected to grow at approximately USD 1,220 million by 2023. Cost-effectiveness is the major factor responsible for fuelling the growth of the service virtualization market. Service virtualization can be used to stimulate the response from IoT, connected device as well SaaS application development & testing.