Web Services Test Tools

Assertible – Tool for continuously testing your web services. HTTP requests are made to application’s staging or production environment and assertions are made on the response to ensure your APIs and websites are running as expected. Free and paid options.

mockJSON – Open source plugin by Menno van Slooten for jQuery that can hijack JSON and JSONP requests and respond with randomly generated JSON data. Can specify a JSON template for each request.

Bench Rest – Open source Node.js client module by Jeff Barczewski for easy load testing/benchmarking of REST (HTTP/HTTPS) API’s using a simple structure/DSL. Can create REST flows with setup and teardown and returns (measured) metric (average, total, min, max, histogram, req/s) can be used with CI server. Ability to automatically handle cookies separately for each iteration; automatically follows redirects for operations; errors will automatically stop an iterations flow and be tracked. Allows pre/post processing or verification of data. Allow iterations to vary easily using token subsitution.

sinon.js – Standalone JavaScript library by Christian Johansen; supports test spies, stubs and mocks. No dependencies, works with any unit testing framework. A helpful library for unit testing your code. Has cross browser support and also can run on the server using Node.js.

Sandbox – Web services mocking – automatically generate mock REST and SOAP webservices, from specs or codify behaviour from scratch – start simple with JSON or XML canned responses. Services can be made « intelligent » so app under test can make API calls needed to get similar behaviour back as it would from the actual component. Debug API calls with request inspector, see exact request and response data, down to HTTP level. Fault injection to simulate real application behaviour. Use your Apiary, Swagger, WDSL, or RAML API documentation to auto generate mock webservices. Free for up to 5000 requests. Source also available at https://github.com/getsandbox/sandbox on Github.

Dyson – Fake API server as Node app. Enables defining of JSON endpoints based on a simple template object. Capabilities include dynamic responses and status codes based on request path, GET/POST parameters, Cookies; includes random data generators. Supports GET, POST, PUT, DELETE, PATCH (and OPTIONS); CORS; delayed responses; required parameter validation.

Canned – Fake API server as Node app, by Philipp Fehre, supports basic REST-APIs; maps a folder structure to API responses.

Mocky – Free service – enables basic mocking of your HTTP responses to test your REST API; advanced mode enables custom headers.

Mockable – Configurable service to mock out RESTful API or SOAP web-services – enables quick defining of REST API or SOAP endpoints, and have them return JSON or XML data. Comprehensive Administration API – Integrate build tools with the service Mockable; admin is programmable. Control mocks using the REST API – provides 100% of the features of Mockable. Import from your API documentation straight into Mockable online – supports many well-known API description: RAML, Apigee, Swagger, Mashable for REST mocks. Import from WSDLs for SOAP mocks. Namespace aware – have your mocks on your own domain. Each space serves a domain on mockable.io. You can have as many spaces (domains) as you need. Mocks can also be served on your company DNS domain. Free and paid account types.

MockServer – Open source tool by James Bloom enables mocking of any server or service that you connect to over HTTP or HTTPS, such as a REST or RPC service. Useful for testing to easily recreate all types of responses. Isolate the system under test to ensure tests run reliably and only fail when there is a genuine bug, not due to dependencies and irrelevant external changes such as network failure etc. Set up mock responses independently for each test to ensure test data is encapsulated with each test, easily maintained, and avoid tests dependent on precursor tests. Enables more efficient development by providing service responses even if the actual service is not yet available or is still unstable. Available as: stand alone fully contained Netty web server, a deployable WAR that runs on any JEE web server, a fully encapsulated Docker container, or a Vert.X module that runs on a Vert.X. Or build and run MockServer directly from source code

Betamax Open source tool for mocking external HTTP resources such as web services and REST APIs in tests, by Rob Fletcher. Intercepts HTTP connections initiated by your app and returns recorded responses. The first time a test annotated with @Betamax is run any HTTP traffic is recorded to a ‘tape’ and subsequent test runs will play back the recorded HTTP response from the tape without actually connecting to the external server. Tapes are stored to disk as YAML files. Although written in Groovy Betamax can be used to test apps written in any JVM language so long as HTTP connections are made appropriately. Can proxy HTTPS traffic as well as HTTP – howeverf since Betamax needs to the request content and response it is not actually a valid secure proxy. (It will only work if the certificate chain is broken.)

WireMock An open source java library for stubbing and mocking web services, by Tom Akehurst. Unlike general purpose mocking tools it works by creating an actual HTTP server that your code under test can connect to as it would a real web service. Supports HTTP response stubbing, request verification, proxy/intercept, record/playback of stubs and fault injection. Has a JSON API enabling use with other languages. Ccan be run as a standalone service for unit tests or deployed into a servlet container to enable it to be installed into a dev/test environments.

REST-driver Open source Test Driver in java to test your RESTful services and clients. Includes 2 libraries: a REST server driver – for testing your RESTful service, and a REST client driver – for testing your RESTful client & mocking remote services

Parasoft SOAtest – Web services test tool from Parasoft. Automatic test creation from WSDL, WSIL, UDDI, HTTP traffic. Capabilities include WSDL validation, load and performance testing; graphically model and test complex scenarios. Data-driven testing through data sources such as Excel, CSV, DB queries, etc. Handles more than 120 message types.

Postman – Free app for Mac, Windows, Linux or as Chrome extension to create/test API requests quickly. Formatted API responses for JSON and XML; HATEOAS support; image previews; request history; basic and OAuth 1.0 helpers; key/value editors for adding parameters or header values -works for URL parameters too. Use environment variables to easily shift between settings – good for testing production, staging or local setups.

Advanced REST client – Chrome extension to create/test API requests. Integrated with Google Drive; convenient HTTP headers and payload editor; JSON & XML response viewer; help with filling HTTP headers (hint + code completion); add headers list as raw data or via form; remember latest request (save current form state and restore on load); history support; data import/export.

REST Test – An open-source native in-browser tool for testing REST/CORS services. Builds on jQuery and Bootstrap. by Jeroen. Requires browser with HTML5 supoort

LoadUI NG Pro – API load testing tool from SmartBear Software. Simulate traffic via load agents that can generate load from Windows or Linux-based nodes using a mix of either on-premise or off-premise traffic. Virtualize external APIs that don’t allow or handle load tests very well. Can reuse existing SoapUI NG Pro functional tests. For Win, Linux, OSX.

soapUI – Free open source source desktop app from SmartBear Software for inspecting, invoking, developing, simulating/mocking and functional/load/compliance testing of SOAP-WSDL and REST web services over HTTP. Testing can be done both interactively in soapUI or within an automated build/integration process using the soapUI command-line tools. REST discovery via recording interactions with API and automatically create test suites for an API based on the interactions. Data driven testing via the DataSource TestStep to read and loop test data from external sources, including Excel, XML, JDBC, and Files. Mocking for both REST and SOAP APIs. Implement an entire MockService and deploy to a standard servlet container – Apache Tomcat, GlassFish, or any other – using the advanced Deploy As War feature. SoapUI NG Pro paid version with more extensive features available also.

Fault Factory – API-level fault injection tool from Extradata Technologies; injects HTTP/SOAP/Socket faults into an application – no code changes, no proxies required. Injects two types of faults: socket API failures and arbitrary HTTP responses (that can be used to imitate a wide range of conditions, including SOAP faults). Can be used standalone or in combination with a debugger. Language-neutral. For Windows platforms.

XML-Simulator – Black-box test tool from Elvior for applications using asynchronous XML messaging to communicate with different systems. Customizable to support any XML protocol. Java application, runs on multiple OS’s.

SOAPSonar – Web services client simulation for service testing – for functional, automation, performance, compliance, and security testing; from CrossCheck Networks. Flexible Test Types – JSON, SOAP, XML, EDI, Batch, REST, etc – all variable-enabled and can be linked together for complex business scenario testing. Automation framework for creation and enforcement of rules for assessing pass/fail characteristics of each transaction – includes database and environment. Concurrent Virtual Clients – independent loading agents aggregate statistics for througput, latency, and TPS. Ramp-up, ramp-down, and weighted scenarios. Vulnerability Analysis includes dynamic XSD mutation security testing with automatic boundary condition testing. Risk assessment and risk mitigation extensible rule framework. Available as free personal edition, pro edition, server edition

ServiceV Pro – Dynamic mocking and service virtualization tool from Smartbear Software. Can simulate 3rd party APIs to overcome rate limits and overage charges, decouple your own process from time constrained access to external systems, quickly isolate bad actors and poor performers during integration and load testing. Enables developing and testing before your actual API is deliverable, enables testers to have control over simulated responses and error handling, and better deal with versioning problems and speed up resolution during continuous integration cycles. Simulate poor API performance to build more resilient apps and integrations. Test how bad data from another system affects your app or API. For Win/Linux, OSX.

WebInject – Open source tool by Cory Goldberg, for automated testing of web services and apps. Can be used to unit test any component with an HTTP interface (JSP, ASP, CGI, PHP, AJAX, Servlets, HTML Forms, XML/SOAP Web Services, REST, etc) or can be used to create a suite of HTTP level functional or regression tests. Can be used as a complete test framework controlled by the WebInject User Interface (GUI) or can be used as a standalone test runner (text/console application) which can be integrated and called from other test frameworks/apps. Uses an XML API for defining and loading test cases – can use WebInject without having to deal with its internal implementation. Written in Perl so can run on any platform that a Perl interpreter can be installed on. Binary executables available for Win platforms.

HTTP Master – Downloadable web development and test tool from Borvid, oriented to REST web services and REST API applications. Capabilities include: dynamic parameters of various data types to create batches of different API requests, various validation types and advanced validation expressions, support for the most common REST methods, validation of output data for popular REST formats, viewers for REST response data. Free ‘Express’ edition available. For Windows.

STORM – Downloadable free open source tool for testing SOAP web services. Dynamically invoke web service methods even those that have input parameters of complex data types. Can edit/manipulate the raw soap requests. For Windows.