Test Coverage for our REST API

Here is the research on the tools above.

All the tools mentioned are open source frameworks though they differ in the features they offer in respect to API. Below is the summary of what each framework offers!

Swagger is a tool which supports a functional, performance, and security testing of API.

Swagger Features:

  • API design and development
  • API documentation
  • API Testing
  • API Mocking and Virtualizations
  • API Governance and monitoring

Best For: API designing.

Karate is based on the cucumber library and supports a web service test written in a domain-specific language(DSL).

Karate Features:

  • Multi-threaded parallel execution is supported.
  • Allows configuration switching.
  • Reports generation.
  • Supports reusing Payload-data for API testing.

Best For: Supports any language which can deal with HTTP, JSON, or XML

Jmeter supports cross-platform and works at a protocol layer.

Jmeter Features:

  • Allows use of various programming languages.
  • Load and performance testing of many different applications, servers, and protocols.
  • Allows to replay test results.
  • Provides support for variable parameterization and assertions.
  • Supports per-thread cookies.
  • Configuration variables and a variety of reports are also supported by Jmeter.

Best For: load and performance testing of web applications.

Postman is an API development environment however, its not free. It has three pricing plans which I won’t go into details for now.

Postman Features:

  • Helps in automated testing.
  • Assists in exploratory testing.
  • Supports Swagger and RAML (RESTful API Modeling Language) formats.
  • Supports knowledge sharing within the team

Best For: The tool is best for API testing

After looking into the existing tests in openmrs-module-webservice.rest, I noticed they are using REST-Assured framework and below are some of its features

  • Seamless integration with the Serenity automation framework.
  • Provides some baked-in functionalities.
  • Supports the syntax of BDD Given/When/Then.

Thoughts are welcome on this as this is guiding our move into automated tests for REST API direction.

cc: @sharif @dkayiwa @grace @ibacher @bistenes @christine

1 Like