Welcome to Restful-Booker

An API playground created by Mark Winteringham for those wanting to learn more about API testing and tools

Welcome to Restful-booker an API that you can use to learn more about API Testing or try out API testing tools against. Restful-booker is a Create Read Update Delete Web API that comes with authentication features and loaded with a bunch of bugs for you to explore. The API comes pre-loaded with 10 records for you to work with and resets itself every 10 minutes back to that default state. Restful-booker also comes with detailed API documentation to help get you started with your API testing straight away.


Werkblad: API Testing & Postman met restful-booker

Wat ga je doen?

Je gaat de API restful-booker verkennen, een testplan opstellen op basis van user stories, een Postman collection bouwen met positieve en negatieve tests, en afsluiten met een load test. Deze API bevat met opzet een aantal bugs — het is de bedoeling dat je die tegenkomt en documenteert, niet dat je je tests aanpast totdat ze slagen.

Stap 0: Server-adres instellen

Het IP-adres van de testserver kan per sessie wisselen. Vraag je docent naar het huidige adres en zet het als variabele in een Postman environment (niet als collection variable), zodat je het maar op één plek hoeft aan te passen en later eenvoudig kunt wisselen tussen bijvoorbeeld een lokale en een klassikale omgeving:

Zo werkt je hele collection nog steeds als het adres verandert — je past dan alleen de environment-variabele aan, en je collection zelf blijft herbruikbaar voor andere omgevingen.

Stap 1: API verkennen

Doe handmatig een paar requests per endpoint om het gedrag te leren kennen, voordat je iets automatiseert:

Let op: voor PUT, PATCH en DELETE heb je een token nodig (via POST /auth), meegestuurd als header Authorization: Bearer <jouw-token>. Je kunt inloggen met het standaardaccount admin/password123, of eerst je eigen account aanmaken via POST /register en daarna daarmee inloggen.

Let ook op: GET /booking/:id heeft op deze server een opzettelijke vertraging van ~3 seconden. Dat is geen bug en geen netwerkprobleem — het is er bewust ingebouwd zodat je het effect goed ziet tijdens de load test in stap 6.

Stap 2: User stories

#User story
1Als operator wil ik een health check endpoint zodat ik kan controleren of de API online is.
2Als nieuwe gebruiker wil ik mij kunnen registreren met een gebruikersnaam en wachtwoord zodat ik daarna kan inloggen en een token kan verkrijgen.
3Als beheerder wil ik kunnen inloggen met gebruikersnaam en wachtwoord zodat ik een token krijg voor beveiligde acties.
4Als bezoeker wil ik alle booking-ids kunnen opvragen, eventueel gefilterd op naam of datum, zodat ik snel een boeking kan terugvinden.
5Als bezoeker wil ik de details van een specifieke boeking kunnen opvragen zodat ik mijn reservering kan controleren.
6Als gast wil ik een nieuwe boeking kunnen aanmaken zodat ik een kamer kan reserveren.
7Als beheerder wil ik een bestaande boeking volledig of gedeeltelijk kunnen bijwerken zodat ik gegevens kan corrigeren.
8Als beheerder wil ik een boeking kunnen verwijderen zodat geannuleerde reserveringen niet blijven staan.

Stap 3: Acceptatiecriteria schrijven

Schrijf voor elke user story minimaal 1 positief en 1 negatief acceptatiecriterium. Gebruik Gherkin (Given/When/Then) of een duidelijke bullet-vorm — overleg met je docent welke vorm gewenst is.

Voorbeeld (user story 6 — boeking aanmaken):

Scenario: Succesvol een boeking aanmaken met geldige data
  Given ik een volledige set geldige boekingsgegevens heb (firstname, lastname,
        totalprice, depositpaid, bookingdates, additionalneeds)
  When ik een POST-request stuur naar /booking met deze gegevens
  Then ontvang ik een 200-response
  And bevat de response een bookingid

Scenario: Boeking aanmaken zonder verplicht veld
  Given ik een set boekingsgegevens heb waarin het veld "firstname" ontbreekt
  When ik een POST-request stuur naar /booking met deze gegevens
  Then verwacht ik een 400-response (Bad Request)

Vul hieronder je eigen criteria in voor de overige user stories:

User storyPositief scenarioNegatief scenario
1. Health check
2. Registreren nieuwe gebruiker
3. Authenticatie
4. Bookings opvragen
5. Boekingsdetails bekijken
7. Boeking bijwerken
8. Boeking verwijderen

Stap 4: Collection bouwen

Bouw een Postman collection met:

Stap 5: Uitvoeren en rapporteren

Draai de volledige collection via de Collection Runner. Documenteer per test:

TestVerwacht resultaatWerkelijk resultaatBug gevonden? (toelichting)

Een falende negatieve test is vaak net zo waardevol als een geslaagde — het betekent dat je een bug in de API hebt gevonden. Beschrijf wat je zag, verander niet zomaar je assertion om de test te laten slagen.

Stap 6: Load test op GetBooking

Gebruik de ingebouwde performance-testfunctie van de Postman desktop-app (niet de webversie):

Stap 7: Tests via GitHub Actions

Je collection moet uiteindelijk automatisch draaien via GitHub Actions bij elke push, niet alleen handmatig vanuit Postman. Hoe je een workflow opzet, behandelen we klassikaal — zie de slides van je docent. Zorg dat je aan het eind kunt laten zien: