top of page

Welcome
to NumpyNinja Blogs

NumpyNinja: Blogs. Demystifying Tech,

One Blog at a Time.
Millions of views. 

API Testing Hackathon Journey

Jan 14
3 min read

In today’s software world, most applications no longer live in isolation. Mobile apps, web portals, reporting tools, and third-party platforms all talk to each other through APIs. If APIs fail, everything fails.

That’s why our recent API Testing Hackathon was more than just a technical exercise — it was a real-world simulation of how modern products are validated before reaching customers.

In this blog, I will walk you through how we tested a complete backend system using Swagger, Postman, Gherkin, and Data-Driven Automation, and how we handled real challenges along the way.

We were given a Swagger-based API platform:

The backend consisted of five functional modules:

Module

Purpose

Program Module

Create and manage training programs

Program Batch Module

Assign batches to programs

User Module

Create and manage users

Login Module

Authenticate users and generate tokens

Skill Master Module

Maintain skill data

This is exactly how real SaaS products are built multiple services connected by APIs.

Swagger gave us:

  • Endpoint URLs

  • Request methods (GET, POST, PUT, DELETE)

  • Required headers

  • Request bodies

  • Response schemas

But Swagger only tells you what should happen, our job was to verify what actually happens by verifying response code.

Setting Up Postman:

Before running any API, we created a Postman Environment.

This is important because real systems don’t hardcode values — they use:

  • Base URLs

  • Tokens

  • User IDs

  • Program IDs

We created environment variables such as:

  • base_url

  • auth_token

  • user_id

  • program_id

  • batch_id

This allowed us to:

  • Run the same tests across environments

  • Chain APIs together

  • Avoid manual copy-paste

Then we added mandatory headers, including:

  • Authorization: Bearer {{auth_token}}

  • Content-Type: application/json

This is exactly how production systems work.

Login First — Because Nothing Works Without Auth

The Login Module was our starting point.

We called:

POST /login

This returned a JWT token.

We wrote a Postman Pre-Script to extract the token:

pm.environment.set("auth_token", pm.response.json().token);

Now every request automatically used the latest valid token — no manual work.

This is a real-world API automation pattern used in companies.

Validating API Responses

For every API, we checked:

What we validated

Why it matters

Status Code

200, 201, 400, 401, 409

Response Body

Data correctness

Error Messages

Business rule validation

Headers

Security & format

Example:

For Create User:

POST /users

We validated:

  • 201 when user created

  • 409 when duplicate email used

  • 400 when mandatory field missing

  • 401 when token is invalid

We wrote Postman Tests:

pm.test("Status is 201", function () {

pm.response.to.have.status (201);

});

This turned Postman into a real test automation tool.

Data-Driven Testing — One Test, Many Inputs

Instead of testing one user, we tested hundreds of users.

We created a CSV file: name, email ,role

Padmaja,padmaja@test.com,Admin

John,john@test.com,User

...

Postman’s Collection Runner executed the same API with multiple data rows.

This helped us validate:

  • Duplicate handling

  • Email uniqueness

  • Role mapping

  • Validation rules

This is how enterprise QA teams test scalability.

Writing Gherkin Scenarios

We didn’t just test APIs — we wrote business scenarios.

Example:

Scenario: Create a new program

Given the user is authenticated

When the user sends a POST request to create a program

Then the API should return status 201

And the program should be saved in the system

This bridges:

  • QA

  • Developers

  • Product Owners

Everyone understands what is being tested.

Real Challenges We Faced

This hackathon was not smooth — just like real projects.

Challenge 1: Token Expiry

Some tests failed randomly because tokens expired.

Solution: We automated login and token refresh in pre-scripts.

Challenge 2: Data Dependency

Program Batch APIs failed when program IDs were missing.

Solution: We created chaining:

  • Create Program → Store ID

  • Create Batch → Use Program ID

Challenge 3: Inconsistent Error Messages

Some APIs returned:

  • 400 with wrong messages

  • 500 instead of validation errors

Solution: We documented defects and raised API contract issues in tracking bug tool called JIRA.

Why This Hackathon Was More Than Testing

This hackathon taught us:

  • How backend systems really work

  • How business rules are enforced

  • How data flows across modules

As someone moving toward Technical Product Manager / Product Owner roles, this is powerful because:

If you understand APIs, you understand the product.

                  The final output :

                  Automated API collections

  • Environment-driven execution

  • Gherkin scenarios

  • Data-driven test coverage

  • Bug reports based on real failures

This is exactly how companies test their products.

Conclusion:

This hackathon showed that API testing is not just QA, it is product validation.

We didn’t just click buttons we validated business logic, data integrity, security, and scalability.

And that’s what makes this experience valuable for both QA Engineers and Product Leaders.

 

 
 

+1 (302) 200-8320

NumPy_Ninja_Logo (1).png

Numpy Ninja Inc. 8 The Grn Ste A Dover, DE 19901

© Copyright 2025 by Numpy Ninja Inc.

  • Twitter
  • LinkedIn
bottom of page