HOME

TheInfoList



OR:

In
software engineering Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
, service virtualization or service virtualisation is a method to emulate the behavior of specific components in heterogeneous component-based applications such as
API An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
-driven applications,
cloud In meteorology, a cloud is an aerosol consisting of a visible mass of miniature liquid droplets, frozen crystals, or other particles, suspended in the atmosphere of a planetary body or similar space. Water or various other chemicals may ...
-based applications and service-oriented architectures. It is used to provide
software development Software development is the process of designing and Implementation, implementing a software solution to Computer user satisfaction, satisfy a User (computing), user. The process is more encompassing than Computer programming, programming, wri ...
and QA/testing teams access to dependent system components that are needed to exercise an application under test (AUT), but are unavailable or difficult-to-access for development and testing purposes. With the behavior of the dependent components "virtualized", testing and development can proceed without accessing the actual live components. Service virtualization is recognized by vendors, industry analysts, and industry publications as being different than mocking.What is Service virtualization
by James Day, Medium Jun 18, 2021
See here for a
Comparison of API simulation tools The tools listed here support emulating or simulating APIs and software systems. They are also called API mocking tools, service virtualization tools, over the wire test doubles and tools for stubbing and mocking HTTP(S) and other protocols. Th ...
.


Overview

Service virtualization emulates the behavior of software components to remove dependency constraints on development and testing teams. Such constraints occur in complex, interdependent environments when a component connected to the application under test is: * Not yet completed * Still evolving * Controlled by a third-party or partner * Available for testing only in limited capacity or at inconvenient times * Difficult to provision or configure in a test environment * Needed for simultaneous access by different teams with varied test data setup and other requirements * Restricted or costly to use for load and performance testing Although the term "service virtualization" reflects the technique's initial focus on virtualizing
web service A web service (WS) is either: * a service offered by an electronic device to another electronic device, communicating with each other via the Internet, or * a server running on a computer device, listening for requests at a particular port over a n ...
s, service virtualization extends across all aspects of composite applications: services,
database In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and a ...
s, mainframes, ESBs, and other components that communicate using common messaging protocols. Managing Test Environments
by Liz McMillan, Cloud Computing Journal, December 2011
Application Behavior Virtualization
by Elizabeth White, Cloud Computing Journal, December 2011
Database Virtualization For Development and Test
by Wayne Ariola, ST & QA Magazine, March 2012
Other similar tools are called
API An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
simulators, API mocking tools, over the wire test doubles. Service virtualization emulates only the behavior of the specific dependent components that developers or testers need to exercise in order to complete their end-to-end transactions. Rather than virtualizing entire systems, it virtualizes only specific slices of dependent behavior critical to the execution of development and testing tasks. This provides just enough application logic so that the developers or testers get what they need without having to wait for the actual service to be completed and readily available. For instance, instead of virtualizing an entire database (and performing all associated test data management as well as setting up the database for every test session), you monitor how the application interacts with the database, then you emulate the related database behavior (the SQL queries that are passed to the database, the corresponding result sets that are returned, and so forth).An Intro to SOA and Virtualization
by John Michelsen, WebServices.org, August 2007
The Next Generation of Test Environment Management
by Wayne Ariola, Virtualization Journal, July 12, 2011


Application

Service virtualization involves creating and deploying a "virtual asset" that simulates the behavior of a real component which is required to exercise the application under test, but is difficult or impossible to access for development and testing purposes. A virtual asset stands in for a dependent component by listening for requests and returning an appropriate response—with the appropriate performance. For a database, this might involve listening for a SQL statement, then returning data source rows. For a web service, this might involve listening for an
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
message over
HTTP HTTP (Hypertext Transfer Protocol) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, wher ...
, JMS, or MQ, then returning another XML message. The virtual asset's functionality and performance might reflect the actual functionality/performance of the dependent component, or it might simulate exceptional conditions (such as extreme loads or error conditions) to determine how the application under test responds under those circumstances. Virtual assets are typically created by: * Recording live communication among components as the system is exercised from the application under test (AUT) * Providing logs representing historical communication among components * Analyzing service interface specifications (such as a WSDL) * Defining the behavior manually with various interface controls and data source values They are then further configured to represent specific data, functionality, and response times. Virtual assets are deployed locally or in the cloud (public or private). With development/test environments configured to use the virtual assets in place of dependent components, developers or testers can then exercise the application they are working on without having to wait for the dependent components to be completed or readily accessible. Industry analysts report that service virtualization is best suited for "IT shops with significant experience with 'skipping' integration testing due to 'dependent software', and with a reasonably sophisticated test harness. Parasoft and "Service Virtualization" Testing: A Good Idea
by Wayne Kernochan, Thoughts From a Software IT Analyst, February 22, 2013


Relation to stubbing and mocking

An alternative approach to working around the test environment access constraints outlined in this article's introduction is for team members to develop method stubs or mock objects that substitute for dependent resources. The shortcoming of this approach became apparent in the early 2000s with the rise of Service-oriented architecture.Testing in Service-Oriented Environments
by Ed Morris et al, Software Engineering Institute, March 2010
The proliferation of Composite applications that rely on numerous dependent services, plus the rise of
Agile software development Agile software development is an umbrella term for approaches to software development, developing software that reflect the values and principles agreed upon by ''The Agile Alliance'', a group of 17 software practitioners, in 2001. As documented ...
following the 2001 publication of the Agile Manifesto, made it increasingly difficult for developers or testers to manually develop the number, scope, and complexity of stubs or mocks required to complete development and testing tasks for modern enterprise application development.Service virtualization is helping organizations realize business value from testing
by Chandranshu Singh, ovum, March 31, 2014
The first step in the evolution from stubbing to service virtualization was the technology packaged in SOA testing tools since 2002. The earliest implementations of service virtualization were designed to automate the process of developing simple stub-like emulations so that composite applications could be tested more efficiently. As enterprise systems continued to grow increasingly complex and distributed, software tool vendors shifted focus from stubbing to the more environment-focused service virtualization. While stubbing can still be completed through manual development and management of stubs, what has become known as "service virtualization" is completed by using one of the available commercial off the shelf (COTS) service virtualization technologies as a platform for the development and deployment of their "service virtualization assets".


Agile and DevOps

The increasing popularity of
Agile software development Agile software development is an umbrella term for approaches to software development, developing software that reflect the values and principles agreed upon by ''The Agile Alliance'', a group of 17 software practitioners, in 2001. As documented ...
and
DevOps DevOps is the integration and automation of the software development and information technology operations. DevOps encompasses necessary tasks of software development and can lead to shortening development time and improving the development life ...
has created demand for a new set of tools to deliver service virtualization to communities that work in this way. Practices such as Continuous delivery and moving away from
mainframe A mainframe computer, informally called a mainframe or big iron, is a computer used primarily by large organizations for critical applications like bulk data processing for tasks such as censuses, industry and consumer statistics, enterpris ...
and monolith development to more distributed microservice-based architectures fit well with the capabilities of service virtualization. Agile and DevOps teams prefer to work with lightweight tools that have less accumulated bloat and no cumbersome licensing restrictions.Thought Works Technology Radar: Big enterprise solutions
/ref>


See also

*
Comparison of API simulation tools The tools listed here support emulating or simulating APIs and software systems. They are also called API mocking tools, service virtualization tools, over the wire test doubles and tools for stubbing and mocking HTTP(S) and other protocols. Th ...
*
Test double A test double is software used in software test automation that satisfies a dependency so that the test need not depend on production code. A test double provides functionality via an interface that the software under test cannot distinguish fro ...
*
Digital twin A digital twin is a digital model of an intended or actual real-world physical product, system, or process (a ''physical twin'') that serves as a digital counterpart of it for purposes such as simulation, integration, testing, monitoring, and m ...


References

{{reflist Software testing Quality assurance