In an ideal world, dependant components are always available to developers for testing their software. In the real world however, security, privacy, cost, and other set backs make testing API and cloud based applications a nightmare. Developers face the challenge of writing complex applications which are dependant on multiple components.
Opening up channels of communication, building components concurrently, and frequent testing can help meet the challenge faced by developers to a great extent. Independently testing single units of code may ensure that each code works fine independently, however it is important to test the codes with all the components as a complete system. This can delay the process of software development considerably as developers wait for dependant components to be made available. Service virtualisation is the answer to this problem. It can considerably speed up the process of software development.
What is Service Virtualisation?
Service virtualisation is a relatively new concept. It is used to describe the process of providing dependant components for testing API and cloud based applications. Developer teams can use virtualized instances of dependant code in place of the original code. The behaviour of the components is emulated in the testing environment and aids in testing new code. Integration testing for new applications therefore becomes much easier and smoother. Any bottlenecks that may delay launching of the software can be eased out using service virtualisation. Service virtualisation is of particular use in developing API, cloud based apps, and SOA (Service Oriented Architecture) says Jonathan Allen of InfoQ.
How Service Virtualisation works
Service virtualisation involves simulating the real component using a virtual component. Wayne Ariola describes the following methods for using virtualized components for testing:
- Live communication between components is recorded and this record is used to respond to requests from the component being tested.
- Historical logs of communications are used to generate responses to request from AUT (Application Under Test).
- Interface specifications are used to generate a virtual environment in which an application may be tested. For example specifications for a WSDL (Web Services Description Language) interface may be used to create a virtual interface for testing the application.
- Manual definition of responses may be used with specific data source values.
When the test environment is configured using virtual components, developers can test their applications for integrity and compatibility without waiting for the real components to be made available.
Future of Service Virtualisation
According to InfraScience, virtualisation is the future of testing. With service on demand being the new mantra, flexibility and scalability are assuming greater importance. IT project management has become a complex task. Once components have been deployed, they may not be available for future testing. This is particularly true for database components, HTML and XML pages, and script. Storing copies of deployed components involves high costs in terms of space not to mention integrity. Virtualisation facilitates testing and eases project management. Service virtualisation is therefore unquestionably the future for software development and testing as well as IT project management.
Areas where virtualisation can be used
InfraScience suggests the areas in which virtualisation techniques can be effectively utilized. These areas include project management and architecture design. They attribute the increasing popularity of virtualisation to the fact that it facilitates rapid growth. InfraScience cautions virtualisation users of the need to balance the benefits with proper management of resources. Quoting Richard Spires, InfraScience states that virtualization cannot replace the system development life cycle. Virtualisation users may well advised therefore to work within clearly defined frameworks using virtualization as an aid rather than as a complete solution.
Discover how Gallop’s SOA testing services can help you identify the right set of SOA testing tools for your SOA implementations.