How and When to use Service Virtualization in Test Automation
You’d be hard pressed to find a team of software engineers anywhere without hearing the words “service virtualization” echoing somewhere in the vicinity. It’s become a buzzword in the industry, and with good reason. Service virtualization is often commended for its ability to simulate the behaviors of application components in a “live” environment, allowing development teams to carry out more thorough testing or work with limited resources.
However, despite the inherent advantages, very few organizations use service virtualization in their application development and testing. In this article we’ll examine the benefits of service virtualization in more detail, giving businesses that might be sitting on the fence a real reason to take those first steps.
What exactly is service virtualization?
Put simply, service virtualization is a technique used in testing to simulate the behavior of components that might be unavailable, difficult to access or simply too expensive. The behavior of each component is mimicked with mock responses that provide an environment almost identical to live setting. As you can no doubt imagine, this makes service virtualization enormously useful in situations where APIs are still under development or there is ongoing maintenance that would otherwise halt productivity.
When to use service virtualization in test automation
Service virtualization is an automation tester’s best friend. It can help to resolve roadblocks and allow teams to focus on the tests themselves instead of worrying about whether or not they can get access to a certain environment or third party service. With the help of service virtualization, testers don’t need to force real services to behave the way they need to perform specific test scenarios. This is invaluable in a number of cases, such as:
1. Simulating the behavior of a particular application
How do you automate testing for something that’s so unique? Let’s look at an automobile application as an example. This application would have to perform tasks such as starting and stopping the engine, sounding the horn, turning the headlights on and off – all actions which are dependent on other complex systems to work effectively. Service virtualization would allow testing teams to simulate the APIs for this particular application, allowing them to execute various scenarios at will during their testing.
2. Negative testing
Occasionally, teams will need to test scenarios that can’t be replicated in a live environment. For example, let’s say you wanted to test the functionality of an ‘Add to Cart’ button that should automatically disable if the product is out of stock. If everything is in stock, this test couldn’t happen. Negative testing allows users to create very rare scenarios using service virtualization, helping them to prepare for potential pitfalls before they even occur.
3. Stabilizing automated tests
Automated testing is a complex picture with many moving parts. In order for a test to execute successfully, all of the dependent systems must be available with the appropriate configuration, functionality and test data all the time. These pieces must fall into place seamlessly each and every time a test is executed. For example, let’s say there’s an issue with a login service in the application but all the service post-login are working perfectly fine. You wouldn’t be able to stop the automation until you fixed the bug. By virtualizing the login service, this challenge can be overcome with relative ease.
By simulating dependencies, we can also trust that the test failures stem from issues with the ‘Application Under Test – AUT’ and not from the problems with the test environment. We can also reliably re-create the test environment for defect reproduction or bug fix validation.
4. Test data virtualization
We’ve already established that automation is dependent on test data, but what happens if that test data isn’t readily available? For example, there can be multiple test cases in banking applications based on customers’ current account balances. It would be challenging to get different customers test data with the required account balance. Service virtualization may help to simulate such test data as well as test the application UI behavior.
The Apexon Approach to Test Automation
Apexon’s accelerators use Service Virtualization with an open source framework called Quality Automation Framework to address all of the above challenges and more. Our Quality Automation Framework provides easy integration with most readily available open-source service virtualization tools such as mountebank, MockServer, WireMock, etc.
This flow chart describes how Quality Automation Framework is integrated with Service Virtualization tools.
Apexon offers an enterprise-wide service virtualization adoption strategy, which includes virtualization assessment, planning, and solutions. Apexon has extensive experience in helping companies implement service virtualization at a low-cost and reduced time. Connect with our experts to get assistance on Virtualization Tool Feasibility & ROI Analysis and improve automation ROI.