Enhed 5 / 11

API Test Automation: Kontrakt, Skema og End-to-End validering med AI

Gevinster:

  • Evne til at udføre API-test i dybden med støtte til kunstig intelligens ved statuskode, skema/kontrakt, forretningsregler og negative/autorisationslag
  • Evne til at generere JSON-skema fra prøvesvar og undgå pseudo-tilliden ved kun at se på statuskoden med type og imperativ validering
  • Evne til at teste sikkerhedsscenarier såsom autorisation og IDOR med syntetiske data og til defensive formål kun inden for autorisation

De fleste moderne software taler med hinanden i baggrunden via API (Application Programming Interface — grænsefladen, hvor to stykker software taler i henhold til en specifik kontrakt). Når en mobilapp tilføjer varer til indkøbskurven, sender den faktisk en anmodning til en API på serveren. API-test kontrollerer, at denne samtale er korrekt, sikker og konsistent, uanset grænsefladen; Det er hurtigere, mere stabilt og dybere end UI-test. Kunstig intelligens (AI) er meget effektiv i API-testning: den genererer test fra en API-definition, udtrækker svarskemaet (kontrakten, der definerer strukturen af ​​dataene), lister kantsager. Men igen gælder den centrale advarsel: AI’en kender ikke de rigtige forretningsregler for din API; har tendens til at producere overfladiske test, der kun bekræfter "200 returneret". Dit job er at sikre, at testen verificerer den faktiske kontrakt og forretningslogik.

I denne enhed lærer du, hvordan du opsætter AI-understøttede, dybe API-tests med tilgange som Postman, REST Assured og skemavalidering.

Lag af API-testning

Overvej API-testning i flere dybder, hvor AI hjælper forskelligt på hvert lag:

1. Statuskode og grundlæggende svar. Returnerer anmodningen den forventede HTTP-statuskode (200/201 for succes, 400/401/404 for fejl)? Dette er det mest overfladiske lag; AI producerer let, men alene giver falsk tillid.

2. Skema/kontraktvalidering. Passer strukturen af ​​svaret til kontrakten - er de forventede felter til stede, er deres typer korrekte, mangler obligatoriske felter? AI kan generere JSON-skema - standarden, der definerer strukturen af ​​et JSON-dokument - ud fra et eksempelsvar, og test kan validere mod dette skema. Dette er meget mere robust end manuelt at skrive en feltbaseret påstand.

3. Validering af forretningsregler. Den reelle værdi er her: "For en ordre på 1000 TL skal rabatfeltet være 100", "en annulleret ordre kan ikke annulleres igen". AI vil kun verificere disse, hvis du giver den reglerne; Hvis du ikke giver det, springer det.

4. Negativ og tryghed. 401 for ugyldig token, 403 for adgang til en andens data, ryd 400 for dårlig krop. Autorisationstests (bekræfter, at en bruger kun kan få adgang til deres egne data) er hjertet af API-sikkerhed og udføres til defensive formål.

Tip: Anmod ikke om en test uden at fortælle AI'en om at "validere ikke kun statuskoden, men også svarskemaet og disse forretningsregler." Ellers vil du stå tilbage med tests, der siger "200 returneret, bestået", men bemærker ikke, at API'en returnerer beskadigede data.

Svag prompt / Stærk prompt

Svag: "Skriv test til denne API."
Stærk: "Skriv REST Assured (Java) test for POST /ordre endpoint. Aftale: productId og quantity er obligatoriske i kroppen; 201 og {orderId, total, discount, status} returneres ved succes. Forretningsregler: 10% rabat over 1000 TL; 400 hvis gyldigt antal 40=40; brugerens bestilling: (1) statuskode, (2) validering af svar-JSON-skema, (3) rabatforretningsregel, (4) binder alle påstande til eksplicitte forretningsregler.

Den kraftfulde prompt giver forventninger til kontrakten, forretningsregler, sikkerhedsscenarier og skemavalidering.

Kontrakttest: forebyggelse af brud mellem hold

I mikrotjenestearkitekturer (den struktur, hvor applikationen er opdelt i små tjenester, der er uafhængige af hinanden og taler til API'en), forstyrrer ændring af svarformatet for en tjeneste stille andre tjenester, der er forbundet til den. Kontrakttestning - testen, der verificerer, at API-kontrakten mellem udbydertjenesten og forbrugertjenesten ikke er brudt på begge sider - fanger sådanne brud tidligt. Ideen er denne: forbrugeren definerer den form for respons, han forventer fra producenten, som en "kontrakt"; Med hver ændring tester producenten, at den stadig overholder denne aftale. Så når navnet eller typen af ​​et felt ændres, giver forbrugeren besked til pipelinen, før den går ned.

AI accelererer to opgaver i denne sammenhæng: at udarbejde en kontrakt, der afspejler forbrugernes forventninger fra et eksisterende API-svar, og præ-markering af, hvilken kontraktklausul en ændring kunne bryde. Men selve kontrakten er en forretningsbeslutning: Eksperten afgør, hvilke områder der virkelig er kritiske, hvilke ændringer vil bryde bagudkompatibiliteten - gamle forbrugere fortsætter med at arbejde. AI skriver kontrakten; Det er dig, der godkender det.

Tip: Sletning af et felt eller ændring af felttype i en API er næsten altid en brydende ændring. Tilføjelse af nye felter er normalt sikkert. At få AI'en til at klassificere en ændring som "defekt eller sikker", giver et hurtigt sikkerhedstjek før udgivelsen.

Postbud eller kodebaseret?

kriterium

Postmand/Newman

REST Assured / kode (Java, C#, JS)

Læring

Nemt, visuelt

Kodekendskab påkrævet

Versionskontrol

Samling JSON

Direkte i kildekoden

kompleks logik

Begrænset (JS-scripts)

Fuld programmeringskraft

CI/CD integration

med Newman

Direkte afhængig af opbygning

Skema validering

Med test scripts

Kraftfuld med bibliotek

Team skala

lille/mellem

stor, moden

AI genererer kode for begge; Vær klar over, hvilken du vil have.

Fire kopierbare skabeloner

1) Kontraktbaseret API-test:

Din rolle: senior API-testingeniør.Skriv tests for følgende slutpunkt med [værktøj/sprog]: [metode + sti].Kontrakt: [påkrævede felter, succeskode, svarstruktur].Forretningsregler: [regler].Testlag: (1) statuskode (2) validering af svarskema(3) hver forretningsregel (4) Link hver virksomhedsregel til den relevante krav + autorisation.

2) Skemagenerering fra prøvesvar:

Generer JSON-skema fra eksempel-API-svaret nedenfor. Angiv påkrævede felter, typer, formatbegrænsninger (dato, e-mail, talinterval). Giv derefter et testeksempel, der validerer mod dette skema. Eksempel på svar: [indsæt JSON]

3) Negative scenarier og autorisationsscenarier:

Generer negative og sikkerhedstestsager for endpoint[endpoint]. Inkluderer: manglende/påkrævet felt, forkert type, for stor værdi, ugyldig/udløbet token, adgang til uautoriseret ressource (IDOR — adgang til en andens post ved at ændre ID), satsgrænse. Angiv den forventede statuskode og fejltekst for hvert scenarie. Bemærk: vil kun blive testet på min egen API, autoriseret.

4) Pseudo-tillidskontrol:

Tjek denne API-test. Ville denne test fange, hvis serveren returnerede den korrekte statuskode, men FALSEbody/data? Hvis ikke, tilføj skema- og forretningsregelvalidering. Test: [indsæt test]

tre minisager

Case 1 — Styrken ved skemavalidering. Et hold tjekkede kun statuskoden i de test, det producerede med AI. I en version begyndte API'en fejlagtigt at returnere det samlede felt som tekst ("1200"); testene forblev grønne, fordi den stadig returnerede 200. Mobilapplikationen gik ned. Efter tilføjelse af typevalidering med skabelonen "Skemagenerering fra prøvesvar" blev den samme fejl straks fanget.

Sag 2 — Authority gap (IDOR). En ekspert kørte IDOR-testen mellem de "negative scenarier og autorisationsscenarier" genereret af AI: Han anmodede om ordre-id'et for bruger B med bruger A's token. API'en returnerede data på 200 og B - en alvorlig autorisationssårbarhed. Denne defensive test lukkede datalækket, før det gik live.

Case 3 — Bypass af forretningsregler. AI genererede 8 test for rabatslutpunktet; alle tjekkede 200, ingen bekræftede rabatbeløbet. Eksperten tilføjede forretningsreglerne til prompten og fik dem gengivet. Nye test viste, at rabatten blev beregnet forkert ved grænsen på 1000 TL (rabatten blev også anvendt på 999). Kontraktkontrol er ikke nok; Kontrol med forretningsregler er et must.

Almindelige fejl

  • Bare se på statuskoden. At sige "200 er vendt tilbage og bestået"; ikke at se den korrupte krop (falsk tillid).
  • Omgå skemavalidering. Ikke at kontrollere felttyper og forpligtelser; typeændringer passerer stille.
  • Anmoder om test uden at angive forretningsregler. AI kender ikke reglerne; det producerer kun teknisk kontrol.
  • At glemme negative scenarier og berettigelsesscenarier. Sikkerhedssårbarheder (IDOR, uautoriseret adgang) fanges kun af disse tests.
  • Brug af ægte/produktionstokens og data. Brug dedikerede medier og syntetiske data til test; Stik ikke rigtige nøgler ind i køretøjet.
  • Uautoriseret sikkerhedstest. Kør kun autorisationstest på din egen API og med tilladelse.

Sammenfattende

API-test verificerer talen fra softwarestykker hurtigt og dybt, uanset interface. AI; kontrakttests er meget effektive til at generere JSON-skema og negative/sikkerhedsscenarier fra prøvesvaret. Men overfladiske test, der kun tjekker statuskoden, giver pseudo-sikkerhed. Kræv alle fire lag: statuskode, skemavalidering, forretningsregel, negativ og godkendelse. Sæt forretningsreglerne og kontrakten på prompten; Udfør sikkerhedstest med syntetiske data og kun med autorisation.

Ansøgningsopgave

Vælg et API-slutpunkt fra dit eget projekt. Få AI til at skrive fire-lags test med skabelonen "kontraktbaseret API-testning". Tilføj derefter type-/håndhævelsesvalidering med "skemagenerering fra prøvesvar" og anvend "pseudo-tillidskontrol". Kør mindst ét ​​IDOR/autorisationsscenarie i dit eget testmiljø. Rapporter enhver overtrædelse af kontrakt eller forretningsregler, du finder; Hvis du ikke kan finde nogen, så kør testen mod et bevidst forvansket svar for at bevise, at det fangede det.

tjekliste

  • [ ] Jeg dækkede de fire testlag (sag, skema, forretningsregel, negativ/autorisation).
  • [ ] Jeg gav klart kontrakten og forretningsreglerne til AI.
  • [ ] Jeg opsætter test, der validerer svarskemaet (felt, type, imperativ).
  • [ ] Jeg har prøvet mindst ét ​​autorisations-/IDOR-scenarie defensivt.
  • [ ] Jeg brugte testmiljø og syntetiske data i stedet for ægte token/data.
  • [ ] Jeg beviste med et "pseudo-tillidstjek", at hver test fanger det korrupte svar.