Jedinica 5 / 11

Automatizacija API testova: ugovor, shema i end-to-end validacija sa AI

Dobici:

  • Sposobnost dubinskog testiranja API-ja uz podršku umjetne inteligencije na slojevima statusnog koda, šeme/ugovora, poslovnog pravila i negativnih/autorizacijskih slojeva
  • Sposobnost generiranja JSON sheme iz uzorka odgovora i izbjegavanje pseudopouzdanja gledanja samo u statusni kod s tipom i imperativnom provjerom valjanosti
  • Mogućnost testiranja sigurnosnih scenarija kao što su autorizacija i IDOR sa sintetičkim podacima iu obrambene svrhe samo unutar autorizacije

Većina modernih softvera razgovara jedni s drugima u pozadini preko API-ja (Application Programming Interface — interfejs u kojem dva komada softvera razgovaraju prema određenom ugovoru). Kada mobilna aplikacija doda artikle u korpu, ona zapravo šalje zahtjev API-ju na serveru. API testiranje provjerava da li je ovaj razgovor ispravan, siguran i dosljedan, bez obzira na sučelje; Brži je, stabilniji i dublji od UI testiranja. Veštačka inteligencija (AI) je veoma efikasna u testiranju API-ja: generiše testove iz definicije API-ja, izdvaja šemu odgovora (ugovor koji definiše strukturu podataka), navodi rubne slučajeve. Ali opet važi centralno upozorenje: AI ne poznaje prava poslovna pravila vašeg API-ja; ima tendenciju da proizvede površne testove koji potvrđuju samo "200 vraćeno". Vaš posao je da provjerite da li test potvrđuje stvarni ugovor i poslovnu logiku.

U ovoj jedinici ćete naučiti kako postaviti duboke API testove podržane umjetnom inteligencijom s pristupima kao što su Postman, REST Assured i validacija sheme.

Slojevi API testiranja

Razmotrite API testiranje u nekoliko dubina, pri čemu AI pomaže različito na svakom sloju:

1. Statusni kod i osnovni odgovor. Vraća li zahtjev očekivani HTTP statusni kod (200/201 za uspjeh, 400/401/404 za grešku)? Ovo je najpovršniji sloj; AI proizvodi lako, ali sama daje lažno povjerenje.

2. Validacija šeme/ugovora. Da li struktura odgovora odgovara ugovoru — da li su prisutna očekivana polja, da li su njihovi tipovi tačni, da li nedostaju obavezna polja? AI može generirati JSON shemu — standard koji definira strukturu JSON dokumenta — iz uzorka odgovora, a testovi se mogu potvrditi u odnosu na tu shemu. Ovo je mnogo robusnije od ručnog pisanja tvrdnje zasnovane na polju.

3. Validacija poslovnih pravila. Prava vrijednost je ovdje: "Za narudžbu od 1000 TL, polje popusta treba biti 100", "poništena narudžba se ne može ponovo otkazati". AI će ovo potvrditi samo ako mu date pravila; Ako ga ne date, skočiće.

4. Negativno i sigurnosno. 401 za nevažeći token, 403 za pristup tuđim podacima, brisanje 400 za loše tijelo. Testovi autorizacije (potvrđivanje da korisnik može pristupiti samo svojim podacima) su srce API sigurnosti i rade se u obrambene svrhe.

Savjet: Nemojte zahtijevati test, a da ne kažete AI da "potvrdi ne samo statusni kod, već i shemu odgovora i ta poslovna pravila." U suprotnom, ostat će vam testovi koji kažu "200 vraćeno, prošlo", ali nećete primijetiti da API vraća oštećene podatke.

Slaba prompt / Jaka prompt

Slabo: "Napišite testove za ovaj API."
Snažno: "Napišite REST Assured (Java) testove za krajnju tačku POST /porudžbine. Dogovor: ID proizvoda i količina su obavezni u tijelu; 201 i {orderId, total, discount, status} se vraćaju nakon uspjeha. Poslovna pravila: 10% popusta preko 1000 TL; 400 ako je drugo nevažeće; Testovi narudžbe korisnika: (1) statusni kod, (2) provjera JSON šeme, (3) pravilo popusta, (4) vezanje svake tvrdnje za eksplicitno poslovno pravilo.

Moćni prompt daje ugovor, poslovna pravila, sigurnosne scenarije i očekivanja validacije šeme.

Testiranje ugovora: sprečavanje raspada između timova

U arhitekturi mikroservisa (struktura u kojoj je aplikacija podijeljena na male usluge koje su neovisne jedna od druge i razgovaraju s API-jem), promjena formata odgovora usluge tiho ometa druge usluge povezane s njom. Testiranje ugovora — test koji potvrđuje da API ugovor između usluge provajdera i potrošačke usluge nije prekinut s obje strane — rano otkriva takve prekide. Ideja je sljedeća: potrošač definira oblik odgovora koji očekuje od proizvođača kao "ugovor"; Sa svakom promjenom, proizvođač testira da li je i dalje u skladu s ovim ugovorom. Dakle, kada se promijeni ime ili tip polja, potrošač obavještava cjevovod prije nego što se sruši.

AI ubrzava dva zadatka u ovom kontekstu: izradu nacrta ugovora koji odražava očekivanja potrošača od postojećeg odgovora API-ja i prethodno označavanje klauzule ugovora koja bi promjena mogla prekinuti. Ali sam ugovor je poslovna odluka: stručnjak određuje koja su područja zaista kritična, koje promjene će prekinuti kompatibilnost unatrag — stari potrošači nastavljaju raditi. AI piše ugovor; Vi ste taj koji to odobrava.

Savjet: Brisanje polja ili promjena tipa polja u API-ju je gotovo uvijek kritična promjena. Dodavanje novih polja je obično sigurno. Ako AI klasifikuje promjenu kao "provalna ili sigurna" pruža brzu sigurnosnu provjeru prije objavljivanja.

Poštar ili na bazi koda?

kriterijum

Postman/Newman

Osiguran REST / kod (Java, C#, JS)

Učenje

Lako, vizuelno

Potrebno poznavanje koda

Kontrola verzija

Kolekcija JSON

Direktno u izvornom kodu

složena logika

Ograničeno (JS skripte)

Puna moć programiranja

CI/CD integracija

sa Newmanom

Direktno ovisi o gradnji

Validacija šeme

Sa test skriptama

Moćan sa bibliotekom

Timska skala

mala/srednja

veliki, zreli

AI generiše kod za oba; Budite jasni koje želite.

Četiri šablona za kopiranje

1) API testiranje na osnovu ugovora:

Vaša uloga: viši inženjer za testiranje API-ja. Napišite testove za sljedeću krajnju tačku sa [alat/jezik]: [metoda + putanja].Ugovor: [obavezna polja, kod uspjeha, struktura odgovora].Poslovna pravila: [pravila].Slojevi testiranja: (1) statusni kod (2) validacija šeme odgovora(3) svako poslovno pravilo (4) negativno + autorizacija. Povežite svako relevantno pravilo kao ugovor.

2) Generiranje šeme iz odgovora uzorka:

Generirajte JSON shemu iz primjera API odgovora u nastavku. Navedite obavezna polja, tipove, ograničenja formata (datum, email, raspon brojeva). Zatim dajte testni primjer koji potvrđuje ovu shemu. Primjer odgovora: [zalijepi JSON]

3) Negativni scenariji i scenariji autorizacije:

Generirajte negativne i sigurnosne testne slučajeve za krajnju tačku[endpoint]. Uključuje: nedostaje/obavezno polje, pogrešan tip, prevelika vrijednost, nevažeći/istekli token, pristup neovlaštenom resursu (IDOR — pristup tuđem zapisu promjenom ID-a), ograničenje stope. Navedite očekivani statusni kod i tijelo greške za svaki scenarij. Napomena: bit će testirano samo na mom vlastitom API-ju, ovlašteno.

4) Kontrola pseudo-povjerenja:

Pogledajte ovaj API test. Da li bi ovaj test uhvatio ako server vrati tačan statusni kod, ali FALSEbody/data? Ako ne, dodajte šemu i provjeru valjanosti poslovnog pravila. Test: [test zalijepi]

tri mini kofera

Slučaj 1 — Moć provjere valjanosti sheme. Tim je samo provjeravao statusni kod u testovima koje je proizveo s AI. U jednoj verziji, API je počeo greškom da vraća ukupno polje kao tekst ("1200"); testovi su ostali zeleni jer je još uvijek vraćao 200. Mobilna aplikacija se srušila. Nakon dodavanja validacije tipa sa šablonom "Generacija šeme iz uzorka odgovora", ista greška je odmah uhvaćena.

Slučaj 2 — Nedostatak autoriteta (IDOR). Stručnjak je izvršio IDOR test između „negativnog scenarija i scenarija autorizacije“ koji je generirao AI: zatražio je ID narudžbe korisnika B sa tokenom korisnika A. API je vratio podatke od 200 i B – ozbiljnu ranjivost autorizacije. Ovaj odbrambeni test zatvorio je curenje podataka prije nego što je objavljen.

Slučaj 3 — Zaobilaženje poslovnih pravila. AI je generirao 8 testova za krajnju tačku popusta; svi su provjeravali 200, niko nije potvrđivao iznos popusta. Stručnjak je dodao poslovna pravila u upit i dao ih reproducirati. Novi testovi su otkrili da je popust pogrešno izračunat na granici od 1000 TL (popust je također primijenjen na 999). Kontrola ugovora nije dovoljna; Kontrola poslovnih pravila je neophodna.

Uobičajene greške

  • Samo gledam statusni kod. Reći "200 se vratilo i prošlo"; nevidjeti korumpirano tijelo (lažno povjerenje).
  • Zaobilaženje provjere valjanosti sheme. Ne provjerava vrste polja i obaveze; promjene tipa prolaze tiho.
  • Zahtjev za testiranje bez davanja poslovnih pravila. AI ne poznaje pravila; proizvodi samo tehničku kontrolu.
  • Zaboravljanje negativnih scenarija i scenarija prava. Sigurnosne ranjivosti (IDOR, neovlašteni pristup) se otkrivaju samo ovim testovima.
  • Korištenje stvarnih/proizvodnih tokena i podataka. Koristite namjenske medije i sintetičke podatke za testiranje; Ne stavljajte prave ključeve u vozilo.
  • Neovlašteno testiranje sigurnosti. Pokreni samo testove autorizacije na vlastitom API-ju i uz dopuštenje.

Ukratko

API testiranje provjerava govor dijelova softvera brzo i duboko, bez obzira na interfejs. AI; ugovorni testovi su veoma efikasni u generisanju JSON šeme i negativnih/sigurnosnih scenarija iz odgovora uzorka. Ali površni testovi koji samo provjeravaju statusni kod daju pseudopouzdanje. Zahtijevaju sva četiri sloja: statusni kod, provjeru valjanosti sheme, poslovno pravilo, negativ i autorizaciju. Stavite pravila poslovanja i ugovor na prompt; Izvršite sigurnosne testove sa sintetičkim podacima i samo uz autorizaciju.

Zadatak aplikacije

Odaberite krajnju tačku API-ja iz vlastitog projekta. Neka AI napiše četvoroslojne testove sa šablonom „API testiranje zasnovano na ugovoru“. Zatim dodajte provjeru tipa/provođenja s "generiranjem sheme iz uzorka odgovora" i primijenite "provjeru pseudo-povjerenja". Pokrenite barem jedan IDOR/autorizacijski scenarij u svom vlastitom testnom okruženju. Prijavite sve povrede ugovora ili poslovnih pravila koje utvrdite; Ako ga ne možete pronaći, pokrenite test s namjerno iskrivljenim odgovorom kako biste dokazali da ga je uhvatio.

kontrolna lista

  • [ ] Pokrio sam četiri sloja testiranja (slučaj, šema, poslovno pravilo, negativna/autorizacija).
  • [ ] Jasno sam dao ugovor i poslovna pravila AI.
  • [ ] Postavio sam testove koji potvrđuju shemu odgovora (polje, tip, imperativ).
  • [ ] Pokušao sam barem jedan scenarij autorizacije/IDOR u odbrani.
  • [ ] Koristio sam testno okruženje i sintetičke podatke umjesto pravih tokena/podataka.
  • [ ] Dokazao sam sa "provjerom pseudopouzdanja" da svaki test hvata neispravan odgovor.