When you’re working with platforms that are using RESTful API’s then it becomes really important to test your API’s . Not only does it let’s you know the performance and health of the API’s, but also let’s you know if there are any errors or issues with the API’s , which could become the reason for the downfall of the whole application.
In today’s market, RESTful API’s are being used a lot. Whether developed using Python DJango-REST platform, or using JavaScript based NodeJS, I see an increasing shift towards use of REST API’s.
This leads many to question -when testing with REST API’s what the things that you need to consider and what tests should you include? I’m glad you asked. There are a lot of things to be considered when testing rest API’s. Here is a full checklist of all the things that you need to consider doing before/during/after your API- and in particular REST API’s testing.
WHY POSTMAN
I have used a lot of API’s tools – from SmartBear’s SOAP UI, to REST Console, but hands down, POSTMAN Chrome App has been the simplest, easy to use, and easy to debug tool I have seen.
Reasons-
- Easy to use – It has a really nice GUI interface, which lets you perform the your tests very easily.
- Grouping of API’s – Postman lets you create Collections of various API calls that you can run at once- which is a really nice feature.
- In built JavaScript Tests – Postman lets you write in built tests, using a basic JS syntax, which is very handy for asserting the API requests and response.
- Integration with CI – Postman has a very nice CLI feature, called Newman, which can be used to integrate it with CI systems like Jenkins, for Continuous integration and delivery, which is a huge plus point.
- Availability of libraries for tests– There are external libraries that can be used for testing API’s response ,apart from the built in tests that Postman Provides.
In the subsequent lines, you’ll see how we can combine Postman, Jenkins and Postman-BDD library to come up with a API testing framework , integrated with CI.
PREREQUISITES
-
POSTMAN APP
To start with writing tests for our REST API’s, we are going to have to install Postman. Installation of Postman is one of the easiest tasks in the world. Earlier Postman used to come only as a Chrome app, but now, you can get a native client for both Mac and Windows.
Since I’m on a Mac, I’m gonna go ahead, and install the Chrome app from app store, which is going to add Postman as a Chrome app on the machine.
In case you want to read about how to install the native client, you can head over to the Postman docs here, where the whole installation process is discussed in detail.
-
POSTMAN INTERCEPTOR
Postman Interceptor is the extension available for Chrome that can capture and manipulate HTTP requests passing between Postman and web servers. This is what the Postman docs says about the interceptor
Postman Interceptor is an extension available for Chrome that can capture and manipulate HTTP requests passing between Postman and web servers. It can capture network requests directly from Chrome and save them to Postman’s history. This means you can debug your web apps APIs in real time! There is no need to install or configure a proxy. There are no code changes required either. You can filter requests according to the URL based on a regular expression. If you have a web app for which you don’t have a collection built already, or you just want to debug the APIs that your app is using, this can save a lot of time. Built on the Chrome platform, the feature works effortlessly across Windows, Linux, Mac and Chrome OS. It can also capture and manipulate cookies or set certain HTTP headers that are blocked on the Chrome platform by default.
You can install interceptor also as a Chrome app, by simply clicking on this app store link here.
Once you have Postman and Postman interceptor, you can launch them by either going in the Chrome apps tab from the Chrome browser settings, or just simply search by their name in the Spotlight
search.
You’ll see this window
Now, in order to have a first hand knowledge of how to capture API requests and response in Postman, you need to follow this tutorials, which are given by the Postman team itself.
I’m not going into the basics of how to capture and test API’s using Postman, since it’s gonna make this post unbelievably long. If you’re some who has almost little or no knowledge of using Postman, then I’d suppose you give at least 2-3 days with these videos and then come back to this post.
-
POSTMAN BDD LIBRARY
Postman BDD Library is one of the awesomest libraries that I have encountered across on the npm
installation library.
Although Postman allows you to assert and write tests for your API’s using this tests window (shown below)
Postman’s built-in test framework uses a boolean-flag syntax for testing, like this:
describe
section and apply various it
statements to check you tests
NodeJS
, and then the node package manager npm
and then we will use npm
to install postman-bdd
.npm
.node
and npm
installed, you can now simply run this to install Postman BDDnpm install postman-bdd
- Send a
GET
request to the url given below
http://bigstickcarpet.com/postman-bdd/dist/postman-bdd.min.js
- In the same request that you created in Step 1, go to the “Tests” tab and add the following script:
postman.setGlobalVariable('postmanBDD', responseBody)
- Now to use
Postman-BDD
in your individual tests, you need to add this as the first line in your tests tab
eval(globals.postmanBDD)
In our next step, we’re going to write some basic tests using Postman-BDD Library.