Jednotka 5 / 11

Automatizácia testovania API: Zmluva, schéma a end-to-end validácia s AI

zisky:

  • Schopnosť vykonávať hĺbkové testovanie API s podporou umelej inteligencie v stavovom kóde, schéme/zmluve, obchodných pravidlách a negatívnych/autorizačných vrstvách
  • Schopnosť generovať schému JSON z odozvy vzorky a vyhnúť sa pseudodôvere pri pozeraní sa iba na stavový kód s typom a imperatívnou validáciou
  • Schopnosť testovať bezpečnostné scenáre, ako je autorizácia a IDOR, so syntetickými údajmi a na obranné účely iba v rámci autorizácie

Väčšina moderného softvéru medzi sebou komunikuje na pozadí cez API (Application Programming Interface — rozhranie, v ktorom dva softvéry hovoria podľa konkrétnej zmluvy). Keď mobilná aplikácia pridá položky do košíka, v skutočnosti odošle požiadavku do API na serveri. Testovanie API kontroluje, či je táto konverzácia správna, bezpečná a konzistentná, bez ohľadu na rozhranie; Je to rýchlejšie, stabilnejšie a hlbšie ako testovanie používateľského rozhrania. Umelá inteligencia (AI) je veľmi efektívna pri testovaní API: generuje testy z definície API, extrahuje schému odozvy (zmluvu, ktorá definuje štruktúru údajov), uvádza okrajové prípady. Ale opäť platí hlavné upozornenie: AI nepozná skutočné obchodné pravidlá vášho API; má tendenciu produkovať povrchné testy, ktoré len potvrdzujú „200 vrátených“. Vašou úlohou je uistiť sa, že test overí skutočnú zmluvu a obchodnú logiku.

V tejto lekcii sa naučíte, ako nastaviť hlboké testy API s podporou AI s prístupmi ako Postman, REST Assured a overenie schémy.

Vrstvy testovania API

Zvážte testovanie API v niekoľkých hĺbkach, pričom AI pomáha v každej vrstve inak:

1. Stavový kód a základná odpoveď. Vracia požiadavka očakávaný stavový kód HTTP (200/201 pre úspech, 400/401/404 pre chybu)? Toto je najpovrchnejšia vrstva; AI produkuje ľahko, ale sama o sebe dáva falošnú dôveru.

2. Validácia schémy/zmluvy. Zodpovedá štruktúra odpovede zmluve – sú prítomné očakávané polia, sú ich typy správne, chýbajú povinné polia? AI ​​môže vygenerovať schému JSON – štandard, ktorý definuje štruktúru dokumentu JSON – zo vzorovej odpovede a testy môžu overiť túto schému. Je to oveľa robustnejšie ako manuálne písanie tvrdenia založeného na poli.

3. Overenie obchodných pravidiel. Skutočná hodnota je tu: "Pri objednávke 1000 TL by pole zľavy malo byť 100", "zrušenú objednávku nemožno znova zrušiť". AI ich overí iba vtedy, ak jej dáte pravidlá; Ak to nedáte, skočí.

4. Negatív a bezpečnosť. 401 za neplatný token, 403 za prístup k údajom niekoho iného, ​​vymazanie 400 za zlé telo. Autorizačné testy (overujúce, že používateľ má prístup iba k svojim vlastným údajom) sú srdcom zabezpečenia API a vykonávajú sa na obranné účely.

Tip: Nevyžadujte test bez toho, aby ste povedali AI, aby „overili nielen stavový kód, ale aj schému odpovede a tieto obchodné pravidlá“. V opačnom prípade vám ostanú testy, ktoré hovoria „200 vrátených, úspešné“, ale nevšimnete si, že API vracia poškodené údaje.

Slabá výzva / Silná výzva

Slabé: "Píšte testy pre toto API."
Silný: "Napíšte testy REST Assured (Java) pre koncový bod POST/objednávky. Dohoda: productId a množstvo sú povinné v tele; 201 a {orderId, total, zľava, stav} sa vrátia pri úspechu. Obchodné pravidlá: 10% zľava nad 1000 TL; 400, ak množstvo <=0; 401, ak je neplatný stav objednávky používateľa 403; kód, (2) overenie schémy JSON odpovede, (3) obchodné pravidlo zľavy, (4) naviazať každé tvrdenie na explicitné obchodné pravidlo, nekontrolujte len 200/201.“

Výkonná výzva poskytuje očakávanie zmluvy, obchodných pravidiel, scenárov zabezpečenia a overenia schémy.

Testovanie zmlúv: predchádzanie rozchodom medzi tímami

V architektúrach mikroslužieb (štruktúra, v ktorej je aplikácia rozdelená na malé služby, ktoré sú od seba nezávislé a komunikujú s API), zmena formátu odpovede služby ticho naruší ostatné služby, ktoré sú k nej pripojené. Testovanie zmluvy – test, ktorý overuje, či zmluva API medzi poskytovateľom a spotrebiteľskou službou nie je porušená na oboch stranách – takéto prerušenia zachytí skôr. Myšlienka je takáto: spotrebiteľ definuje formu odozvy, ktorú očakáva od výrobcu, ako „zmluvu“; Pri každej zmene výrobca testuje, či stále spĺňa túto dohodu. Takže keď sa zmení názov alebo typ poľa, spotrebiteľ upozorní potrubie skôr, ako zlyhá.

AI v tomto kontexte urýchľuje dve úlohy: návrh zmluvy, ktorá odráža očakávania spotrebiteľov od existujúcej odpovede API, a predbežné označenie, ktorú zmluvnú klauzulu by zmena mohla porušiť. Samotná zmluva je však obchodným rozhodnutím: odborník určí, ktoré oblasti sú skutočne kritické, ktoré zmeny narušia spätnú kompatibilitu – starí spotrebitelia naďalej pracujú. AI napíše zmluvu; Vy ste ten, kto to schvaľuje.

Tip: Odstránenie poľa alebo zmena typu poľa v rozhraní API je takmer vždy zásadnou zmenou. Pridávanie nových polí je zvyčajne bezpečné. Ak umelá inteligencia klasifikuje zmenu ako „rozbitná alebo bezpečná“, poskytuje rýchlu bezpečnostnú kontrolu pred vydaním.

Poštár alebo kódový?

kritérium

Poštár/Newman

REST Assured / kód (Java, C#, JS)

Učenie

Jednoduché, vizuálne

Vyžaduje sa znalosť kódu

Kontrola verzií

Zbierka JSON

Priamo v zdrojovom kóde

komplexná logika

Obmedzené (JS skripty)

Plný programovací výkon

Integrácia CI/CD

s Newmanom

Priamo závislé od konštrukcie

Overenie schémy

S testovacími skriptami

Výkonný s knižnicou

Tímová mierka

malý/stredný

veľký, zrelý

AI generuje kód pre obe; Ujasnite si, ktorý chcete.

Štyri kopírovateľné šablóny

1) Testovanie API na základe zmluvy:

Vaša rola: senior testovací technik API.Píšte testy pre nasledujúci koncový bod pomocou [nástroja/jazyka]: [metóda + cesta].Zmluva: [povinné polia, kód úspechu, štruktúra odpovede].Obchodné pravidlá: [pravidlá].Testovacie vrstvy: (1) stavový kód (2) overenie schémy odozvy(3) každé obchodné pravidlo (4) negatívne + autorizácia/zmluva prepojte s príslušným pravidlom.

2) Generovanie schémy z odozvy vzorky:

Vygenerujte schému JSON zo vzorovej odpovede rozhrania API nižšie. Zadajte požadované polia, typy, obmedzenia formátu (dátum, e-mail, číselný rozsah). Potom uveďte testovací príklad, ktorý sa overí podľa tejto schémy. Vzorová odpoveď: [prilepiť JSON]

3) Negatívne a autorizačné scenáre:

Generujte negatívne a bezpečnostné testovacie prípady pre koncový bod[koncový bod]. Zahŕňa: chýbajúce/povinné pole, nesprávny typ, príliš veľká hodnota, neplatný/vypršaný token, prístup k neoprávnenému zdroju (IDOR – prístup k záznamu niekoho iného zmenou ID), limit sadzby. Zadajte očakávaný stavový kód a telo chyby pre každý scenár. Poznámka: Bude testované iba na mojom vlastnom API, autorizované.

4) Pseudo-dôveryhodná kontrola:

Pozrite si tento test API. Zachytil by tento test, keby server vrátil správny stavový kód, ale FALSEbody/data? Ak nie, pridajte overenie schémy a obchodných pravidiel. Test: [prilepiť test]

tri mini prípady

Prípad 1 – Sila validácie schémy. Tím iba kontroloval stavový kód v testoch, ktoré vytvoril s AI. V jednej verzii začalo API chybne vracať celkové pole ako text ("1200"); testy zostali zelené, pretože stále vracal 200. Mobilná aplikácia spadla. Po pridaní overenia typu pomocou šablóny „Generovanie schémy zo vzorovej odpovede“ sa okamžite zachytila ​​rovnaká chyba.

Prípad 2 – Nedostatok autority (IDOR). Expert vykonal test IDOR medzi „negatívnym a autorizačným scenárom“ vygenerovaným AI: Požiadal o ID objednávky používateľa B s tokenom používateľa A. API vrátilo údaje 200 a B – vážna autorizačná chyba. Tento obranný test uzavrel únik údajov pred uvedením do prevádzky.

Prípad 3 – Obchádzanie obchodných pravidiel. AI vygenerovala 8 testov pre koncový bod zľavy; všetci kontrolovali 200, nikto neoveroval výšku zľavy. Odborník pridal obchodné pravidlá do výzvy a nechal ich reprodukovať. Nové testy odhalili, že zľava bola vypočítaná nesprávne pri limite 1000 TL (zľava bola aplikovaná aj na 999). Kontrola zmlúv nestačí; Kontrola obchodných pravidiel je nevyhnutnosťou.

Časté chyby

  • Stačí sa pozrieť na stavový kód. Povedať „200 sa vrátilo a prešlo“; nevidieť poškodené telo (falošná dôvera).
  • Obídenie overenia schémy. Nekontroluje typy polí a povinnosť; zmeny typu prechádzajú ticho.
  • Žiadosť o testovanie bez poskytnutia obchodných pravidiel. AI nepozná pravidlá; produkuje len technickú kontrolu.
  • Zabudnutie na negatívne a oprávnené scenáre. Bezpečnostné chyby (IDOR, neoprávnený prístup) zachytia iba tieto testy.
  • Používanie skutočných/produkčných tokenov a údajov. Na testovanie používajte vyhradené médiá a syntetické údaje; Nevkladajte skutočné kľúče do vozidla.
  • Neoprávnené testovanie bezpečnosti. Testy autorizácie spúšťajte iba na svojom vlastnom rozhraní API a s povolením.

V súhrne

Testovanie API rýchlo a hlboko overuje reč softvérových prvkov bez ohľadu na rozhranie. AI; zmluvné testy sú veľmi účinné pri generovaní schémy JSON a negatívnych/bezpečnostných scenárov zo vzorovej odpovede. Ale povrchné testy, ktoré kontrolujú iba stavový kód, poskytujú pseudodôveru. Vyžadovať všetky štyri vrstvy: stavový kód, overenie schémy, obchodné pravidlo, negatív a autorizáciu. Uveďte obchodné pravidlá a zmluvu na výzvu; Vykonajte bezpečnostné testy so syntetickými údajmi a len s autorizáciou.

Aplikačná úloha

Vyberte si koncový bod API z vlastného projektu. Nechajte AI napísať štvorvrstvové testy so šablónou „testovania API na základe zmluvy“. Potom pridajte overenie typu/vynútenia pomocou „generovania schémy zo vzorovej odpovede“ a použite „kontrolu pseudodôvery“. Spustite aspoň jeden scenár IDOR/autorizáciu vo svojom vlastnom testovacom prostredí. Nahláste akékoľvek porušenia zmluvy alebo obchodných pravidiel, ktoré zistíte; Ak nemôžete nájsť žiadnu, spustite test proti zámerne skomolenej odpovedi, aby ste dokázali, že ju zachytil.

kontrolný zoznam

  • [ ] Pokryl som štyri vrstvy testovania (prípad, schéma, obchodné pravidlo, negatív/autorizácia).
  • [ ] Zmluvu a obchodné pravidlá som jasne dal AI.
  • [ ] Nastavil som testy, ktoré overia schému odpovede (pole, typ, imperatív).
  • [ ] Obranne som vyskúšal aspoň jeden scenár autorizácie/IDOR.
  • [ ] Namiesto skutočného tokenu/údajov som použil testovacie prostredie a syntetické údaje.
  • [ ] „Pseudokontrolou dôveryhodnosti“ som dokázal, že každý test zachytí poškodenú odpoveď.