Wilma (software)
# Wilma (software)

Wilma is a Service virtualization software tool that computer programmers and testers use for developing and testing other software. It sits between software components, software services, microservices, as a transparent proxy, and captures the communication traffic between the software components. Based on its actual configuration, evaluates the captured messages and decides between proxying the request or providing response by itself, as a service stub. Therefore, it is a combined Transparent Proxy and Service Stub. It is written in Java, and Open Sourced under the license GPL.

## Situations when Wilma helps

* In case there is component that communicates to other components (SOA environment or by simply using 3rd party services/microservices) but need to be tested without the availability of other components, Wilma can act as stub. The environment can be - among others - a local development environment, a CI test environment, or an integration test environment
* In similar case, if some of the components are available but some not, Wilma can stub the missing ones, meanwhile proxying the request to the available components
* If there is a new feature in a 3rd party component/service, that will be developed later, and not yet available, and if the interface is defined, Wilma can emulate the new feature of the 3rd party component/service, and the feature in the owned component can be developed without waiting for the implementation of the feature in the 3rd party component/service
* It is possible to emulate special behavior of 3rd party components/services like: timeouts, slow or bad answers, special - error-nous - answers and error codes - without doing special test environment setup changes, and even if forcing the 3rd party component/service to produce such special answers would be hard/impossible
* It is possible to substitute both the request and the response messages real-time, partially and/or completely.
* Also - as it can log the messages - it helps testers/developers in troubleshooting, since the logged messages can be analysed - also such recorded messages can be used later as base of stub responses

## Main capabilities

* Used for HTTP and HTTPS communication channels, including 2-way SSL connections.
* Any message types and contents can be used: HTML, XML, SOAP, JSON, REST, etc.
* Messages can be altered on-the-fly
* Highly configurable, on-the-fly, both via its UI and API (both Java and .NET API is available)
* Suitable for both automated and manual tests
* By using the provided interfaces, product/project specific expansions (special message response creators and response content formatter for the stub) can easily be added to the tool
* Expandable via plug-ins
* Docker images are available
