APIs are becoming an integral part of how software works, and the more we rely on web-based systems, the more crucial it is that they're tested, monitored, and available for consumers. In this post, I'll outline 10 API testing tools you should try in 2017.
At Assertible, we've used nearly all these tools to dogfood our own product and to better understand exactly how teams are testing web apps and APIs.
I've split up the tools into two categories: hosted and open-source.
Open source API testing tools
Dredd
Command-line
Dredd is a command-line tool designed to validate an API based on a formal definition like Swagger or API Blueprint, and capable of validating responses against expectations defined in the specification.
Dredd is perfectly suited for running API tests from a CI/CD pipeline and supports defining advanced tests in many programming languages including Go and Python.
For more information, check out the Dredd documentation.
Swagger-test-templates
Command-line
Swagger Test Templates is a code generator used to generate API test-suites based on a Swagger definition. Swagger Test Templates generates your test-suite's code in Javascript using familiar libraries such as Mocha JS, Chai JS, and Commander JS.
For more information, check out the Swagger test templates GitHub repository)
Karate DSL
Command-line
Karate is a testing framework which uses a BDD, or Behavior-Driven Development, domain-specific language for defining API tests. Karate is built on top of the Cucumber-JVM which should make it familiar to anyone used to using Cucumber for BDD tests.
One big upside of Karate is that it fully supports seamless integration into CI / CD pipelines and can also support testing live environments like dev, QA, or pre-prod. Karate has very comprehensive support for common HTTP calls that use SOAP/XML, HTTPS, HTTP proxies, URL-encoded form data, multi-part file uploads, and more.
For more info, check out the Karate GitHub repository.
Chakram
Javascript library
Chakram is a REST API testing framework designed to perform end to end tests on JSON REST endpoints. Chakram uses a BDD style syntax which is written in Javascript and offers a comprehensive set of HTTP assertions and hooks for extending test behavior.
Chakram is built on Node.js, Mocha, Chai and Request. Check out the source code on GitHub.
Frisby.js
Javascript library
Frisby is a REST API testing framework built on Node.js and Jasmine (A BDD style test-runner) that makes testing API endpoints simple, easy, and fast.
With the soon-to-be released Frisby.js 2.0, there are many improvements for extensibility and exposure to the underlying Jasmine test structure which makes it familiar for those already running Jasmine based tests.
Frisby tests can be run in a continuous integration or delivery
pipeline using the jasmine-node
test runner.
Check out the Frisby.js source code on GitHub for more information.
Hippie
Javascript library
Hippie is a simple Javascript DSL for testing APIs. It supports a clean assertion syntax, middlewares for extending test behavior, and the ability to print clean reports with diffing capabilities.
Hippie has an extremely clean API and makes it dead simple to write standalone scripts you can automate in your CI / CD pipeline before or after deployments. Hippie also has another package specifically designed to test APIs with a Swagger definition called hippie-swagger.
For some examples, check out the Hippie GitHub repo.
Hosted tools
Assertible
Assertible is an API testing tool that focuses on reliability and automation. Assertible supports validating HTTP responses with turn-key assertions such as JSON Schema validation and JSON Path data integrity checks.
One major advantage of Assertible is it's support for automating API tests through each step of a continuous integration and delivery pipeline. It has support for running API tests after deployments and integrates with familiar tools like GitHub, Slack, and Zapier.
Check out the Assertible documentation for more information.
Postman
Postman is a GUI API client that supports exploratory testing, documentation, sharing, and monitoring. Even though Postman is a competing product with Assertible, it is a very very strong product and has a wide set of nice features for API testing. Because of this, we spend a lot of time using Postman not only to compare with Assertible but also to help build out own APIs.
One big advantage of using Postman is that it runs on your local machine which allows you to control your own data. Some organizations have security restrictions which may prevent using a fully hosted option. Postman also supports running tests in a continuous integration pipeline using Newman.
For more information, check out the Postman website
Apex Ping
Apex Ping is a beautifully simple uptime monitoring tool. I've used Apex Ping to monitor a few sites and while I've never dug into any advanced features, I've found Apex's default behaviors to be well thought out and extremely easy to use. Because of this, I would highly recommend it for simple health checks.
Sign in to Apex Ping to check it out.
Apigee Api Studio
While APIGee's API Studio is heavily focused on constructing APIs, it has a few neat features designed to make testing easier like the Try this operation button on each endpoint as well as API Response Simulation for mocked HTTP responses. API Studio is still in Beta so I am hopeful they will release even more API testing features.
Check out the API Studio demo for more details
Wrapping up
Is there a tool you think I missed? Send me a message or reach out on Twitter and let's talk!
:: Christopher Reichert
Categories
The easiest way to test and
monitor your web services
Reduce bugs in web applications by using Assertible to create an automated QA pipeline that helps you catch failures & ship code faster.
Get started with GitHubSign up for freeRecent posts
Tips for importing and testing your API spec with Assertible 05/26/2020
New feature: Encrypted variables 10/30/2019
New feature: Smarter notifications 5/17/2019