Geavanceerde API-testscripts optimaliseren in Postman en Insomnia
description
Met deze prompt kan ik geavanceerde en op maat gemaakte testscripts maken die mijn API-testproces efficiënter en betrouwbaarder maken. Het helpt me om complexe scenario's te testen, variabelen effectief te beheren en automatische validaties in te stellen, wat handmatig werk vermindert en fouten voorkomt.
prompt
Help me geavanceerde testscripts te maken voor mijn API in <API-naam> met Postman of Insomnia, incl ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijs overzicht om geavanceerde testscripts te maken voor je API in MijnBetaalAPI met Postman of Insomnia, inclusief variabelenbeheer en geautomatiseerde validaties voor authenticatie en foutafhandeling.
---
## 1. Voorbereiding: Variabelenbeheer
Gebruik environment variables om je API-URL, API-sleutels, tokens, en andere dynamische gegevens centraal te beheren.
### In Postman:
- Maak een nieuw environment aan (bijvoorbeeld: `MijnBetaalAPI Environment`)
- Voeg variabelen toe:
- `baseUrl`: de basis URL van je API
- `authToken`: voor je authenticatietoken
- `apiKey`: indien nodig
- Gebruik de variabelen in je requests: `{{baseUrl}}/endpoint`
### In Insomnia:
- Ga naar 'Manage Environments' en voeg een omgeving toe.
- Definieer dezelfde variabelen.
- Gebruik ze in je requests met `{{variabeleNaam}}`.
---
## 2. Authenticatie Instellen
Stel je authenticatie in via headers of in de Authorization tab.
### Voorbeeld (Bearer Token):
```http
Authorization: Bearer {{authToken}}
```
### Testscript (bijvoorbeeld in Postman):
```javascript
pm.test("Authenticatie succesvol", function () {
pm.response.to.have.status(200);
// Optioneel: controleer of token nog geldig is
pm.expect(pm.response.json()).to.have.property('user');
});
```
---
## 3. Geavanceerde Testscripts
### a. Validatie van succesvolle API-aanroepen
Controleer status, aanwezigheid van belangrijke data, en datatypes.
```javascript
pm.test("Status 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('transactionId');
pm.expect(jsonData.amount).to.be.a('number');
});
```
### b. Foutafhandeling en validatie van foutmeldingen
Detecteer foutstatussen en controleer foutmeldingen.
```javascript
pm.test("Foutstatus 4xx of 5xx", function () {
pm.response.to.have.status(400) || pm.response.to.have.status(500);
});
pm.test("Foutmelding bevat duidelijke info", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('error');
pm.expect(jsonData.error).to.include('invalid');
});
```
### c. Authenticatie-validatie
Controleer of je API correct reageert op ongeldige tokens.
```javascript
// Bij een ongeldig token
if (pm.response.code === 401) {
pm.test("Authenticatie mislukt zoals verwacht", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.error).to.include('Unauthorized');
});
}
```
---
## 4. Automatisatie en Ketens
Gebruik `pm.setNextRequest()` om testseries te automatiseren en afhankelijkheden te beheren.
Voorbeeld:
```javascript
// Na succesvolle login
if (pm.response.code === 200) {
var jsonData = pm.response.json();
pm.environment.set("authToken", jsonData.token);
postman.setNextRequest("Maak betaling");
} else {
postman.setNextRequest(null); // Stop keten bij fout
}
```
---
## 5. Geautomatiseerde Tests toevoegen aan je Requests
In Postman:
- Ga naar het tabblad 'Tests' van je request
- Voeg de bovenstaande scripts toe afhankelijk van je testdoelen
In Insomnia:
- Gebruik 'Test Scripts' onder het request om vergelijkbare scripts te schrijven.
---
## 6. Samenvatting
- **Variabelenbeheer**: centraliseer URL's en tokens
- **Authenticatie**: controleer succesvolle en mislukte authenticatie
- **Validaties**: controleer status, gegevens, en foutmeldingen
- **Automatisatie**: keten van requests en conditionele voortgang
---
Met deze aanpak maak je krachtige, herhaalbare en betrouwbare testscripts voor jouw API in MijnBetaalAPI. Mocht je specifieke endpoints of scenarios willen uitwerken, laat het gerust weten!
provider: deepseek
model: deepseek-chat
Zeker, hier is een uitgebreide handleiding voor het maken van geavanceerde testscripts voor jouw MijnBetaalAPI:
# Geavanceerde API Testautomatisering voor MijnBetaalAPI
## 1. Omgevingsvariabelen Setup
### Postman Environment:
```json
{
"name": "MijnBetaalAPI_Production",
"values": [
{
"key": "base_url",
"value": "https://api.mijnbetaalapi.nl/v1",
"type": "default"
},
{
"key": "client_id",
"value": "jouw_client_id",
"type": "secret"
},
{
"key": "client_secret",
"value": "jouw_client_secret",
"type": "secret"
},
{
"key": "access_token",
"value": "",
"type": "secret"
},
{
"key": "refresh_token",
"value": "",
"type": "secret"
}
]
}
```
## 2. Authenticatie Flow Tests
### Pre-request Script (Authenticatie):
```javascript
// Controleer of token geldig is, anders vernieuwen
if (!pm.environment.get("access_token")) {
pm.sendRequest({
url: pm.environment.get("base_url") + "/auth/token",
method: "POST",
header: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: {
mode: "urlencoded",
urlencoded: [
{key: "grant_type", value: "client_credentials"},
{key: "client_id", value: pm.environment.get("client_id")},
{key: "client_secret", value: pm.environment.get("client_secret")}
]
}
}, function (err, response) {
if (!err) {
pm.environment.set("access_token", response.json().access_token);
pm.environment.set("refresh_token", response.json().refresh_token);
}
});
}
```
## 3. Geavanceerde Test Scripts
### Test Script voor Betaling Endpoint:
```javascript
// Status Code Validatie
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// Response Time Validatie
pm.test("Response time is less than 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// JSON Schema Validatie
pm.test("Response matches JSON schema", function () {
const schema = {
"type": "object",
"properties": {
"transaction_id": {"type": "string"},
"status": {"type": "string", "enum": ["pending", "completed", "failed"]},
"amount": {"type": "number", "minimum": 0},
"currency": {"type": "string", "pattern": "^[A-Z]{3}$"}
},
"required": ["transaction_id", "status", "amount", "currency"]
};
pm.expect(tv4.validate(pm.response.json(), schema)).to.be.true;
});
// Headers Validatie
pm.test("Content-Type header is present", function () {
pm.response.to.have.header("Content-Type");
});
// Security Headers Validatie
pm.test("Security headers are present", function () {
pm.expect(pm.response.headers.get("X-Content-Type-Options")).to.eql("nosniff");
pm.expect(pm.response.headers.get("X-Frame-Options")).to.eql("DENY");
});
```
## 4. Foutafhandeling Tests
### Error Handling Test Script:
```javascript
// Test voor 400 Bad Request
pm.test("Bad Request error handling", function () {
if (pm.response.code === 400) {
pm.expect(pm.response.json()).to.have.property("error");
pm.expect(pm.response.json().error).to.have.property("code");
pm.expect(pm.response.json().error).to.have.property("message");
}
});
// Test voor 401 Unauthorized
pm.test("Unauthorized error handling", function () {
if (pm.response.code === 401) {
pm.expect(pm.response.json()).to.have.property("error", "invalid_token");
}
});
// Test voor 429 Rate Limiting
pm.test("Rate limiting error handling", function () {
if (pm.response.code === 429) {
pm.expect(pm.response.headers.get("Retry-After")).to.be.a('string');
}
});
```
## 5. Geavanceerde Variabelenbeheer
### Dynamic Variable Management:
```javascript
// Sla response data op in environment variables
const responseData = pm.response.json();
pm.environment.set("last_transaction_id", responseData.transaction_id);
pm.environment.set("last_amount", responseData.amount.toString());
// Maak timestamp voor unique IDs
const timestamp = new Date().getTime();
pm.environment.set("unique_reference", "ref_" + timestamp);
// Chain requests met vorige response data
pm.environment.set("next_page_token", responseData.pagination.next_page_token);
```
## 6. Collection Runner Setup
### Collection Variables:
```json
{
"iteration_count": 5,
"delay_between_requests": 1000,
"stop_on_error": false,
"persist_variables": true
}
```
## 7. CI/CD Integratie
### Newman Commands voor Automatisering:
```bash
# Run complete collection
newman run MijnBetaalAPI_Collection.json -e Production_Environment.json
# Run met reporting
newman run MijnBetaalAPI_Collection.json -e Production_Environment.json \
--reporters cli,json --reporter-json-export test-results.json
# Run met data-driven testing
newman run MijnBetaalAPI_Collection.json -d test-data.csv
```
## 8. Monitoring en Alerting
### Performance Monitoring Script:
```javascript
// Monitor response times over time
const responseTime = pm.response.responseTime;
pm.environment.set("avg_response_time",
((pm.environment.get("avg_response_time") || 0) + responseTime) / 2
);
// Alert bij trage responses
if (responseTime > 1000) {
console.warn("⚠️ Trage response: " + responseTime + "ms");
}
```
## Tips voor Optimalisatie:
1. **Gebruik Collection Variables** voor gedeelde configuratie
2. **Implementeer Retry Logic** voor intermittente failures
3. **Gebruik Pre-request Scripts** voor data setup
4. **Maak gebruik van Test Data Files** voor data-driven testing
5. **Implementeer Custom Reporters** voor gedetailleerde reporting
Wil je dat ik specifieke endpoints of scenario's verder uitwerk voor jouw MijnBetaalAPI?