Enota 5 / 11

Avtomatizacija testiranja API-ja: pogodba, shema in celovita validacija z umetno inteligenco

Dobički:

  • Sposobnost izvajanja poglobljenega testiranja API-ja s podporo umetne inteligence na statusni kodi, shemi/pogodbi, poslovnem pravilu in negativnih/avtorizacijskih slojih
  • Sposobnost generiranja sheme JSON iz vzorčnega odgovora in izogibanje psevdozaupanju gledanja samo statusne kode s tipom in nujnim preverjanjem
  • Možnost testiranja varnostnih scenarijev, kot sta avtorizacija in IDOR, s sintetičnimi podatki in za obrambne namene samo znotraj avtorizacije

Večina sodobne programske opreme se med seboj pogovarja v ozadju prek API-ja (Application Programming Interface — vmesnik, kjer se dva dela programske opreme pogovarjata v skladu z določeno pogodbo). Ko mobilna aplikacija doda izdelke v košarico, dejansko pošlje zahtevo API-ju na strežniku. Testiranje API-ja preverja, ali je ta pogovor pravilen, varen in dosleden, ne glede na vmesnik; Je hitrejši, stabilnejši in globlji od testiranja uporabniškega vmesnika. Umetna inteligenca (AI) je zelo učinkovita pri testiranju API-jev: generira teste iz definicije API-ja, izvleče odzivno shemo (pogodbo, ki definira strukturo podatkov), navede robne primere. Toda spet velja osrednje opozorilo: umetna inteligenca ne pozna pravih poslovnih pravil vašega API-ja; nagiba k izdelavi površnih testov, ki potrdijo samo "200 vrnjenih". Vaša naloga je zagotoviti, da test preveri dejansko pogodbo in poslovno logiko.

V tej enoti se boste naučili, kako nastaviti globoke teste API-ja, ki jih podpira AI, s pristopi, kot so Postman, REST Assured in validacija sheme.

Plasti testiranja API

Razmislite o testiranju API-ja v več globinah, pri čemer AI pomaga drugače na vsaki ravni:

1. Statusna koda in osnovni odgovor. Ali zahteva vrne pričakovano statusno kodo HTTP (200/201 za uspeh, 400/401/404 za napako)? To je najbolj površinska plast; Umetna inteligenca proizvaja zlahka, vendar sama daje lažno zaupanje.

2. Potrditev sheme/pogodbe. Ali struktura odgovora ustreza pogodbi – ali so prisotna pričakovana polja, ali so njihove vrste pravilne, ali zahtevana polja manjkajo? Umetna inteligenca lahko ustvari shemo JSON – standard, ki definira strukturo dokumenta JSON – iz vzorčnega odgovora, testi pa lahko preverijo glede na to shemo. To je veliko bolj robustno kot ročno pisanje trditve, ki temelji na polju.

3. Potrjevanje poslovnih pravil. Prava vrednost je tukaj: "Za naročilo v vrednosti 1000 TL mora biti polje za popust 100", "preklicanega naročila ni mogoče znova preklicati". AI jih bo preveril le, če mu daste pravila; Če ga ne daš, bo skočil.

4. Negativno in varnost. 401 za neveljaven žeton, 403 za dostop do podatkov nekoga drugega, počisti 400 za slabo telo. Preizkusi avtorizacije (preverjanje, ali lahko uporabnik dostopa samo do svojih podatkov) so srce varnosti API in se izvajajo v obrambne namene.

Namig: Ne zahtevajte preizkusa, ne da bi AI sporočili, naj "preveri ne samo statusno kodo, ampak tudi odzivno shemo in ta poslovna pravila." V nasprotnem primeru vam bodo ostali testi, ki pravijo "200 vrnjenih, opravljenih", vendar ne opazijo, da bi API vrnil poškodovane podatke.

Šibek poziv/močan poziv

Slabo: "Pišite teste za ta API."
Močno: »Pišite teste REST Assured (Java) za končno točko POST /naročilo. Dogovor: productId in količina sta obvezna v telesu; 201 in {orderId, total, discount, status} se vrneta ob uspehu. Poslovna pravila: 10 % popust nad 1000 TL; 400, če je količina<=0; 401, če je neveljaven žeton; 403, ko vidite drugega uporabnika Preizkusi: (1) statusna koda, (2) preverjanje sheme odziva, (3) poslovno pravilo popusta, (4) povezovanje vsake potrditve z eksplicitnim poslovnim pravilom.«

Zmogljiv poziv poda pogodbo, poslovna pravila, varnostne scenarije in pričakovanja pri preverjanju sheme.

Testiranje pogodbe: preprečevanje razpadov med ekipami

V arhitekturah mikrostoritev (struktura, v kateri je aplikacija razdeljena na majhne storitve, ki so neodvisne druga od druge in se pogovarjajo z API-jem), spreminjanje oblike odgovora storitve tiho prekine druge storitve, povezane z njo. Preizkušanje pogodbe – test, ki preverja, ali pogodba API med ponudnikovo storitvijo in potrošniško storitvijo ni prekinjena na obeh straneh – zgodaj odkrije takšne prekinitve. Ideja je naslednja: potrošnik definira obliko odgovora, ki ga pričakuje od proizvajalca, kot »pogodbo«; Z vsako spremembo proizvajalec preveri, ali še vedno izpolnjuje to pogodbo. Torej, ko se ime ali vrsta polja spremeni, potrošnik obvesti cevovod, preden se zruši.

Umetna inteligenca v tem kontekstu pospeši dve nalogi: pripravo pogodbe, ki odraža pričakovanja potrošnikov na podlagi obstoječega odziva API-ja, in predhodno označevanje, katero pogodbeno klavzulo bi sprememba lahko kršila. Toda sama pogodba je poslovna odločitev: strokovnjak določi, katera področja so resnično kritična, katere spremembe bodo prekinile združljivost za nazaj - stari potrošniki še naprej delajo. AI napiše pogodbo; Vi ste tisti, ki to odobri.

Nasvet: brisanje polja ali spreminjanje vrste polja v API-ju je skoraj vedno prelomna sprememba. Dodajanje novih polj je običajno varno. Če umetna inteligenca spremembo razvrsti kot »zlomno ali varno«, se zagotovi hiter varnostni pregled pred izdajo.

Poštar ali šifriran?

merilo

Poštar/Newman

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

Učenje

Enostavno, vizualno

Potrebno poznavanje kode

Nadzor različic

Zbirka JSON

Neposredno v izvorni kodi

kompleksna logika

Omejeno (skripti JS)

Polna moč programiranja

Integracija CI/CD

z Newmanom

Neposredno odvisno od zgradbe

Preverjanje sheme

S testnimi skripti

Zmogljiv s knjižnico

Team scale

small/medium

velik, zrel

AI ustvari kodo za oba; Jasno povejte, katero želite.

Štiri predloge za kopiranje

1) Testiranje API-ja na podlagi pogodbe:

Vaša vloga: višji inženir za preizkušanje API-ja. Napišite teste za naslednjo končno točko z [orodjem/jezikom]: [metoda + pot].Pogodba: [zahtevana polja, koda uspeha, struktura odziva].Poslovna pravila: [pravila].Testne plasti: (1) koda stanja (2) preverjanje sheme odziva(3) vsako poslovno pravilo (4) negativno + avtorizacija.Povežite vsako trditev z ustreznim pravilom/pogodbeno klavzulo.

2) Generiranje sheme iz vzorčnega odgovora:

Ustvarite shemo JSON iz spodnjega vzorčnega odgovora API-ja. Določite zahtevana polja, vrste, omejitve formata (datum, e-pošta, obseg številk). Nato podajte testni primer, ki se preverja glede na to shemo. Primer odgovora: [prilepi JSON]

3) Negativni in avtorizacijski scenariji:

Ustvarite negativne in varnostne testne primere za končno točko [endpoint]. Vključuje: manjkajoče/obvezno polje, napačen tip, prevelika vrednost, neveljaven/potekel žeton, dostop do nepooblaščenega vira (IDOR — dostop do zapisa nekoga drugega s spremembo ID-ja), omejitev stopnje. Podajte pričakovano statusno kodo in telo napake za vsak scenarij. Opomba: testirano bo samo na mojem API-ju, pooblaščenem.

4) Pseudo-trust control:

Check out this API test. Ali bi ta preizkus ujel, če bi strežnik vrnil pravilno statusno kodo, vendar FALSEbody/data? Če ne, dodajte preverjanje sheme in poslovnega pravila. Test: [paste test]

trije mini kovčki

Primer 1 – Moč potrjevanja sheme. Ekipa je samo preverjala statusno kodo v testih, ki jih je izvedla z AI. V eni različici je API začel pomotoma vračati skupno polje kot besedilo (»1200«); testi so ostali zeleni, ker je še vedno vračal 200. Mobilna aplikacija se je sesula. Po dodajanju preverjanja tipa s predlogo »Generacija sheme iz vzorčnega odgovora« je bila ista napaka takoj ulovljena.

Primer 2 – vrzel v avtoriteti (IDOR). Strokovnjak je izvedel test IDOR med »negativnimi in avtorizacijskimi scenariji«, ki jih je ustvaril AI: zahteval je ID naročila uporabnika B z žetonom uporabnika A. API je vrnil podatke 200 in B – resna avtorizacijska ranljivost. Ta obrambni test je zaprl uhajanje podatkov, preden je začel delovati.

Primer 3 – Obhod poslovnega pravila. AI je ustvaril 8 testov za končno točko popusta; vsi so preverjali 200, nihče ni preverjal zneska popusta. Strokovnjak je pozivu dodal poslovna pravila in jih dal reproducirati. Novi testi so pokazali, da je bil popust izračunan napačno pri omejitvi 1000 TL (popust je bil uporabljen tudi za 999). Nadzor pogodbe ni dovolj; Nadzor poslovnih pravil je nujen.

Pogoste napake

  • Samo pogledam statusno kodo. Reči "200 se je vrnilo in minilo"; nevidenje pokvarjenega telesa (lažno zaupanje).
  • Obhod preverjanja sheme. Nepreverjanje vrst polj in obveznosti; spremembe vrste potekajo tiho.
  • Zahtevanje testiranja brez zagotavljanja poslovnih pravil. AI ne pozna pravil; proizvaja samo tehnični nadzor.
  • Pozabite na negativne scenarije in scenarije upravičenosti. Varnostne ranljivosti (IDOR, nepooblaščen dostop) ujamejo samo ti testi.
  • Uporaba realnih/produkcijskih žetonov in podatkov. Uporabite namenske medije in sintetične podatke za testiranje; V vozilo ne vtikajte pravih ključev.
  • Nepooblaščeno varnostno testiranje. Zaženite avtorizacijske preizkuse samo na svojem API-ju in z dovoljenjem.

Če povzamem

Testiranje API-ja hitro in temeljito preveri govor programske opreme, ne glede na vmesnik. AI; pogodbeni testi so zelo učinkoviti pri ustvarjanju sheme JSON in negativnih/varnostnih scenarijev iz vzorčnega odgovora. Toda površni testi, ki preverjajo samo statusno kodo, dajejo psevdozavest. Zahtevajte vse štiri plasti: statusno kodo, preverjanje sheme, poslovno pravilo, negativno in avtorizacijo. Postavite poslovna pravila in pogodbo na poziv; Izvedite varnostne teste s sintetičnimi podatki in samo z avtorizacijo.

Aplikacijska naloga

Izberite končno točko API iz svojega projekta. Naj AI napiše štiriplastne teste s predlogo »pogodbeno testiranje API-ja«. Nato dodajte preverjanje tipa/uveljavitve z "generiranjem sheme iz odziva vzorca" in uporabite "preverjanje psevdozaupanja". Zaženite vsaj en scenarij IDOR/avtorizacije v lastnem testnem okolju. Prijavite vse kršitve pogodb ali poslovnih pravil, ki jih odkrijete; Če ne najdete nobenega, zaženite preizkus z namenoma popačenim odgovorom, da dokažete, da ga je ujel.

kontrolni seznam

  • [ ] Pokril sem štiri plasti testiranja (primer, shema, poslovno pravilo, negativno/avtorizacija).
  • [ ] AI sem jasno dal pogodbo in poslovna pravila.
  • [ ] Nastavil sem teste, ki potrjujejo odzivno shemo (polje, tip, imperativ).
  • [ ] Obrambno sem preizkusil vsaj en scenarij avtorizacije/IDOR.
  • [ ] Uporabil sem testno okolje in sintetične podatke namesto pravega žetona/podatkov.
  • [ ] S "psevdopreverjanjem zaupanja" sem dokazal, da vsak test ujame pokvarjen odgovor.