Geavanceerde API-testscenario's ontwerpen met Postman of Insomnia
description
Met deze prompt kan de gebruiker uitgebreide en robuuste testscenario's maken die verder gaan dan standaard testen. Dit helpt bij het opsporen van edge cases en het verbeteren van de API-kwaliteit, wat minder fouten in productie betekent. Het is beter dan simpele testcases omdat het integratie van authenticatie en dynamische data ondersteunt.
prompt
Help me bij het ontwerpen van een geavanceerd testscenario voor mijn API met behulp van <kies Postman of Insomnia>. Beschrijf hoe ik authentificatie, foutafhandeling en ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een gedetailleerd stappenplan voor het ontwerpen van een geavanceerd testscenario in Postman voor jouw API:
**1. Omgevingsvariabelen instellen**
- Maak een nieuwe omgeving aan in Postman, bijvoorbeeld “Productie” of “Test”.
- Voeg variabelen toe zoals:
- `api_url` = `https://api.mijnbedrijf.nl/v1/orders`
- `auth_token` = `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....`
**2. Authentificatie integreren**
- In je request stel je de URL in op: `{{api_url}}`
- Voeg onder het tabblad “Headers” de header toe:
- Key: `Authorization`
- Value: `Bearer {{auth_token}}`
- Hiermee wordt de token dynamisch gebruikt en makkelijk te updaten.
**3. Data-variabelen gebruiken**
- Als je verschillende testdata wilt gebruiken, maak je een `data` bestand (bijvoorbeeld CSV of JSON).
- Bijvoorbeeld in CSV:
```
order_id,product,quantity
12345,productA,2
67890,productB,5
```
- In je Postman testscript kun je deze data gebruiken voor dynamische tests.
**4. Testscript voor foutafhandeling en validatie**
- Ga naar het tabblad “Tests” en voeg script toe om de respons te controleren:
```javascript
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Response bevat verwachte data", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('orderId');
pm.expect(jsonData.orderId).to.eql(pm.variables.get('order_id'));
});
```
- Voor foutafhandeling:
```javascript
if (pm.response.code !== 200) {
console.error("Fout bij API-aanroep:", pm.response.status, pm.response.body);
// Eventueel automatische notificatie of logging
}
```
**5. Geavanceerde scenario’s**
- **Conditional Tests:** Controleer of bepaalde velden aanwezig zijn en reageer anders als dat niet zo is.
- **Sequential Testing:** Gebruik de `pm.setEnvironmentVariable` en `pm.environment.set` functies om data tussen requests door te geven.
- **Automatisch Herhalen:** Gebruik Postman’s Collection Runner met data-bestanden om meerdere scenario’s te testen.
**6. Automatisering en monitoring**
- Sla je tests op in een collectie.
- Voer ze uit via de Collection Runner of via Newman (CLI) voor geautomatiseerde tests.
- Stel alerts in voor mislukte tests.
Door deze stappen te volgen, integreer je authenticatie, foutafhandeling en data-variabelen effectief in je API-testscenario in Postman.
provider: deepseek
model: deepseek-chat
Absoluut. Hier is een gedetailleerd, geavanceerd testscenario voor je API-eindpunt in Postman, opgedeeld in de gevraagde componenten.
### Overzicht van het Testscenario
We gaan een testcollection maken die de volgende flow doorloopt:
1. **Authenticatie:** Een token ophalen (indien nodig) en hergebruiken.
2. **Happy Flow:** Een succesvolle `POST` request om een nieuwe order aan te maken en de response te valideren.
3. **Foutafhandeling:** Opzettelijk foute requests sturen om de error handling van de API te testen.
4. **Data-driven Tests:** Meerdere orders aanmaken met verschillende data vanuit een CSV-bestand.
---
### 1. Authenticatie Integreren (Environment Variables & Pre-request Scripts)
Het is onveilig en onhandig om het hardcoded Bearer-token in elke request te plaatsen. We gebruiken **Environment Variables**.
**Stappen:**
1. Klik rechtsboven in Postman op 'Environments' en maak een nieuwe aan, bv. `MijnBedrijf API Prod`.
2. Voeg een variabele toe genaamd `access_token` en plak je JWT-token als initial value.
3. Selecteer deze environment in de dropdown naast de environment-knop.
**In je Request:**
* Ga naar het *Authorization* tabblad van je request.
* Type: `Bearer Token`
* Token: `{{access_token}}`
Postman vervangt `{{access_token}}` automatisch door de waarde uit je geselecteerde environment.
**Geavanceerd: Token automatisch ophalen (Als je een /auth endpoint hebt):**
Maak een aparte request `Get Auth Token` naar je login endpoint. In de **Tests** tab van die request, schrijf je een script om het token op te slaan:
```javascript
// Check of de response succesvol is
if (pm.response.code === 200) {
// Parse de response en pak het token
const jsonData = pm.response.json();
const token = jsonData.access_token; // Pas deze key aan naar wat jouw API retourneert
// Zet het token in de environment variable
pm.environment.set("access_token", token);
console.log("Token opgeslagen: " + token);
}
```
Je kunt deze request als eerste in een collection run laten uitvoeren met **Collection Runner**.
---
### 2. Testscenario Ontwerp (Tests Tab)
Laten we een `POST` request naar `https://api.mijnbedrijf.nl/v1/orders` maken.
**Request Body (raw JSON):**
```json
{
"productId": "prod_12345",
"quantity": 2,
"customerNotes": "Levering graag avonds"
}
```
**In de Tests tab** van deze request schrijven we scripts om de response automatisch te valideren.
```javascript
// 1. Test op succesvolle HTTP status code (201 Created is typisch voor POST)
pm.test("Status code is 201", function () {
pm.response.to.have.status(201);
});
// 2. Test of de response binnen acceptabele tijd komt (bv. < 500ms)
pm.test("Response time is less than 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// 3. Valideer het JSON response schema en belangrijke velden
pm.test("Response body heeft correcte structuur en data", function () {
const responseJson = pm.response.json();
// Check of bepaalde velden bestaan en het juiste type hebben
pm.expect(responseJson).to.have.property("id");
pm.expect(responseJson).to.have.property("status");
pm.expect(responseJson.status).to.be.oneOf(["verwerkt", "in_behandeling", "betaald"]); // Voorbeeld enum
pm.expect(responseJson).to.have.property("totalAmount");
pm.expect(typeof responseJson.totalAmount).to.eql('number');
pm.expect(responseJson).to.have.property("createdAt");
// Optioneel: check of de response de juiste productId teruggaf
pm.expect(responseJson.productId).to.eql(pm.request.body.raw.productId);
});
// 4. Sla het order-ID op als variabele voor latere requests (bv. GET /orders/{id})
const orderId = pm.response.json().id;
pm.environment.set("new_order_id", orderId);
console.log("Opgeslagen order ID: " + orderId);
```
---
### 3. Foutafhandeling Testen
Maak kopieën van je hoofd-request (of gebruik **Collection Runner** met verschillende data) om edge cases te testen.
**Scenario 1: Ongeldige Authenticatie**
* **Actie:** Verander de `Authorization` header tijdelijk in `Bearer ongeldig_token`.
* **Verwachting:** HTTP `401 Unauthorized`.
* **Test Script:**
```javascript
pm.test("Ongeldige token retourneert 401", function () {
pm.response.to.have.status(401);
});
pm.test("Response bevat error message", function () {
const jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("message");
});
```
**Scenario 2: Ontbrekende verplichte velden**
* **Actie:** Verstuur een request body zonder `productId` of met `quantity: 0`.
* **Verwachting:** HTTP `400 Bad Request`.
* **Test Script:**
```javascript
pm.test("Ongeldige request retourneert 400", function () {
pm.response.to.have.status(400);
});
pm.test("Error message geeft ontbrekend veld aan", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.message).to.include("productId"); // Check of de foutmelding het veld noemt
});
```
---
### 4. Data Variabelen Integreren (Data-driven Testing)
Dit is krachtig voor het testen met meerdere datasets.
1. Maak een CSV-bestand (bv. `orders_data.csv`):
```csv
productId, quantity, customerNotes, expected_status_code
prod_12345, 2, "Levering avonds", 201
prod_99999, 0, "Hoeveelheid is 0", 400
invalid_id, 1, "Ongeldig product", 422
```
2. Pas je request body aan naar gebruik van de variabelen:
```json
{
"productId": "{{productId}}",
"quantity": {{quantity}},
"customerNotes": "{{customerNotes}}"
}
```
3. Pas je test aan om de verwachte statuscode uit het CSV-bestand te gebruiken:
```javascript
// Lees de verwachte status code uit de data file
const expectedStatusCode = pm.iterationData.get("expected_status_code");
pm.test(`Status code is ${expectedStatusCode}`, function () {
pm.response.to.have.status(parseInt(expectedStatusCode));
});
```
4. **Voer de test uit:**
* Open de **Collection Runner**.
* Selecteer je collection en de `POST /v1/orders` request.
* Kies je CSV-bestand onder "Select File" bij "Data".
* Klik op "Run MijnBedrijf API Prod". Postman zal nu 3 iteraties uitvoeren, één voor elke rij in je CSV.
### Conclusie
Door deze componenten te combineren, creëer je een robuuste, geautomatiseerde testsuite in Postman die niet alleen de "happy flow" test, maar ook de veerkracht en betrouwbaarheid van je API verifieert onder verschillende condities. Je kunt dit uitbreiden naar `GET`, `PUT`, en `DELETE` requests voor volledige CRUD-dekking.
error: Generation failed [deepseek] prompt_id=1901 locale=zh err=DeepSeek connection/timeout