Reading list Switch to dark mode

    Fundamentals of API Testing

    Updated 12 October 2018

    What is API testing?

    Application Program Interface (API) is a set of commands used by an individual program to communicate with one another directly and use each other’s functions to get information and API testing is a type of software testing, which is done just to make sure that API is returning the correct response as per the expected format. API testing includes testing (Representational State Transfer) REST APIs  with (JavaScript Object Notation) JSON being over (Hypertext transfer protocol) HTTP and HTTPS.

    How REST Requests Work?

    An API is made up of set of REST requests. These are the requests made to an application server that retrieve, delete, or manipulate data in an application’s database.

    A REST request is made up of following parts:-

    • An HTTP verb that describes what action should be taken.
    • A URL that defines the location of the request.
    • HTTP headers that provide information to the server about the request.
    • Request body that provides further details for the request.

    Certainly, there are mainly 4 methods involve in testing REST API like GET, POST, PUT and DELETE.

    GET

    First of all, lets start with GET request. It is the most commonly and widely used method in API. The GET method is used to extract information from the given server using a given URL.

    Start your headless eCommerce
    now.
    Find out More

    For example, we have an API with /products endpoint. Making a GET request to that endpoint should return a list of all products in the shop and if we want to retrieve the detail of a particular product then we can fetch it by its product id using /products/{{product_id}}.

    Syntax:-

    GET https://abcd.com/products/{{product_id}}

    Response will be like  :-

    {
    "product": {
    "title": "Product",
    "id": 546,
    "type": "simple",
    "status": "publish",
    "regular_price": "500",
    "description":" abcd",
    "short_description": "xyz"
    }

    We need to validate these things:-

    • Check that a valid GET request returns a 200 status code.
    • Ensure that a GET request to a specific resource returns the correct data. Here for request GET /products, it must return a list of all products.

     

    Post

    Another most important request is POST request which basically creates new entity. It can also be used to send data to the server. The data sent to the server is stored in the request body of the HTTP request. The body specifies exactly what information should be added to the database. It is usually in JavaScript Object Notation (JSON) or Extensible Markup Language (XML) format.

    Here is an example of what a JSON request body might look like for doing a POST request to add a product:-

    Syntax:-

    POST https://abcd.com/products

    Request Body :-

    "product": {
    "title": "Product",
    "type": "simple",
    "regular_price": "545",
    "description":" abcd",
    "short_description": "xyz"
    }

    Response will be like  :-

    {
    "product": {
    "title": "Product",
    "id": 547,
    "type": "simple",
    "status": "publish",
    "regular_price": "545",
    "description":" abcd",
    "short_description": "xyz"
    }

    We need to follow these steps to test POST requests :-

    • Create a resource with a POST request and make sure that 200 status code is returned.
    • Secondly, make a GET request for that resource, and make sure that the data was saved correctly.
    • Add tests that ensure POST requests FAIL with incorrect or wrongly formatted data.

     

    PUT

    PUT requests are used to create a new entity or update an existing one. The difference between PUT and POST is that PUT is idempotent. An idempotent method means that the result of a successful performed request is independent of the number of times it is executed.

    Syntax:-

    PUT https://abcd.com/products

    Request body and Response will be same like POST requests.

    We need to follow these steps to test PUT requests :-

    • Repeatedly calling a PUT request always returns the same result (idempotent).
    • After updating a resource with a PUT request, a GET request for that resource should return the new data.
    • PUT requests should fail if invalid data is supplied in the request.

    DELETE

    DELETE request deletes the resource at the specified URL.

    If a new product is created with a POST request to /products , and it can be fetched with a GET request to /products/{{product_id}} , then making a DELETE request to /products/{{product_id}} will completely remove that product.

    Syntax:-

    DELETE https://abcd.com/products/{{product_id}}

    Simple test case for DELETE request is :-

    • Create a new user with a POST request to /products
    • With the product id returned from the POST , make a DELETE request to  /products/{{product_id}}
    • After that on passing a GET request to /products/{{product_id}}  should return a 404 not found status code.

    Likewise, we will learn about how we use postman to test API methods and how to make test scripts in postman in another blog.

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    Be the first to comment.

    Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home

    Table of Content