Dykk inn i den praktiske verden av Contract Testing med en hands-on guide! Vi utforsker hvordan man implementerer en Contract Testing ved hjelp av Postman, AVJ og catfact.ninja API. Frigjør din indre tester og start å validere dine APIer som en proff!
I min forrige bloggpost dykket vi inn i konseptet Contract Testing og utforsket hvordan en API-kontrakt er sammensatt. I dag skal vi bruke denne kunnskapen praktisk ved å implementere en Contract Test ved hjelp av Postman, et verktøy som er veldig populært i API-testsamfunnet. Vårt emne for dette eksperimentet vil være den sjarmerende catfact.ninja API.
Contract Testing sikrer at tjenester som API-er, overholder sin erklærte kontrakt. I mikrotjenesteverdenen er denne formen for testing avgjørende, og verifiserer at endringer i en tjeneste verken bryter kontrakten eller forårsaker skadelige ringvirkninger på andre tjenester. Vi skal bruke Postman og AJV (Another JSON Schema Validator), en rask JSON-skjemavalidator, for å validere disse kontraktene.
For å følge denne bloggposten, trenger du:
Vår API av valg for denne veiledningen er den lystige catfact.ninja API. Spesielt vil vi bruke GET catfact.ninja/fact endepunktet, som gir oss en tilfeldig fakta om katter.
Et typisk svar fra dette endepunktet ser slik ut:
{ "fact": "A cat's brain is 90% similar to a human's brain.", "length": 50 }
Basert på API-ens svar, kan vi nå lage et JSON-skjema som beskriver datastrukturen. Her er et eksempel på hvordan det skjemaet kan se ut:
{ "$schema": "json-schema.org/draft-07/schema#", "type": "object", "properties": { "fact": { "type": "string" }, "length": { "type": "number" } }, "required": ["fact", "length"] }
Dette skjemaet bekrefter at svaret er et objekt som inneholder en "fact" streng og et "length" nummer. Begge disse egenskapene er nødvendige.
Med vårt skjema klart, la oss dykke inn i oppsettet av Postman.
Her kommer AJV inn i bildet. AJV lar oss validere JSON-data mot et JSON-skjema, noe som er ideelt for Contract Testing. Postman's testskript kan bruke AJV-biblioteket for å validere API-responsen mot vårt skjema.
Først må vi lagre skjemaet vårt i pre-request-scriptet i vår Postman-samling.
// Define schema pm.environment.set("catFact_schema", { "$schema": "json-schema.org/draft-07/schema#", "type": "object", "properties": { "fact": { "type": "string" }, "length": { "type": "number" } }, "required": ["fact", "length"] });
Deretter går vi over til Tests-delen:
// Initialize AJV var Ajv = require('ajv'); ajv = new Ajv({logger: console}); // Set schema parameter (the variable we created in pre-request) var schema = pm.environment.get("catFact_schema"); // Set data parameter (the parsed json response body) var data = pm.response.json(); // Check validation result pm.test('CatFact response adheres to schema', function() { pm.expect(ajv.validate(schema, data)).to.be.true; });
I dette skriptet henter vi skjemaet som ble opprettet i pre-request-scriptet, initialiserer AJV, kompilerer skjemaet ved hjelp av AJV, og validerer responskroppen mot skjemaet. Hvis valideringen mislykkes, logger den feilene; hvis det består, logger den en suksessmelding.
Etter å ha satt opp testen, er du nå klar til å kjøre den. Klikk "Send" for å utføre GET-forespørselen. Etter at forespørselen er fullført, kan du sjekke testresultatene i "Test Results"-fanen i responsdelen.
Og det var det! Du har nå satt opp og kjørt en Contract Test ved hjelp av Postman og AJV. Contract Testing kan være et kraftig verktøy i vedlikeholdet av dine API-er, spesielt i mikroservicestrukturer. Det sikrer at tjenester fortsetter å samhandle sømløst, selv når individuelle tjenester utvikler seg. Utstyrt med verktøy som Postman og AJV, kan du effektivt holde kontraktene dine for API-er intakt. Lykkelig testing!