slogan3

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

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?