Unitate 5 / 11

Automatizare de testare API: validare de contract, schemă și end-to-end cu AI

Câștiguri:

  • Abilitatea de a efectua teste API în profunzime cu suport de inteligență artificială la codul de stare, schema/contractul, regula de afaceri și straturile negative/autorizare
  • Abilitatea de a genera schema JSON din răspunsul eșantionului și de a evita pseudo-încrederea de a privi numai codul de stare cu validare de tip și imperativă
  • Abilitatea de a testa scenarii de securitate, cum ar fi autorizarea și IDOR cu date sintetice și în scopuri defensive numai în cadrul autorizației

Cele mai multe software-uri moderne vorbesc unul cu celălalt în fundal prin API (Interfață de programare a aplicației — interfața în care două bucăți de software vorbesc conform unui contract specific). Când o aplicație mobilă adaugă articole în coș, de fapt trimite o solicitare către un API de pe server. Testarea API verifică dacă această conversație este corectă, sigură și consecventă, indiferent de interfață; Este mai rapid, mai stabil și mai profund decât testarea UI. Inteligența artificială (AI) este foarte eficientă în testarea API: generează teste dintr-o definiție API, extrage schema de răspuns (contractul care definește structura datelor), enumeră cazurile marginale. Dar din nou se aplică avertismentul central: AI nu cunoaște regulile de afaceri reale ale API-ului tău; tinde să producă teste superficiale care confirmă doar „200 returnate”. Sarcina ta este să te asiguri că testul verifică contractul real și logica de afaceri.

În această unitate, veți învăța cum să configurați teste API profunde, susținute de AI, cu abordări precum Postman, REST Assured și validarea schemei.

Straturi de testare API

Luați în considerare testarea API în mai multe profunzimi, AI ajutând în mod diferit la fiecare strat:

1. Cod de stare și răspuns de bază. Solicitarea returnează codul de stare HTTP așteptat (200/201 pentru succes, 400/401/404 pentru eroare)? Acesta este stratul cel mai superficial; Inteligența artificială produce cu ușurință, dar singură oferă încredere falsă.

2. Validarea schemei/contractului. Structura răspunsului se potrivește contractului - sunt câmpurile așteptate prezente, tipurile lor sunt corecte, lipsesc câmpurile obligatorii? AI poate genera Schema JSON - standardul care definește structura unui document JSON - dintr-un răspuns eșantion, iar testele se pot valida pe acea schemă. Acest lucru este mult mai robust decât scrierea manuală a unei afirmații bazate pe câmp.

3. Validarea regulilor de afaceri. Valoarea reală este aici: „Pentru o comandă de 1000 TL, câmpul de reducere ar trebui să fie 100”, „o comandă anulată nu poate fi anulată din nou”. AI le va verifica doar dacă îi oferiți regulile; Dacă nu o dai, va sări.

4. Negativ și securitate. 401 pentru token invalid, 403 pentru accesarea datelor altcuiva, șterge 400 pentru corp rău. Testele de autorizare (verificarea faptului că un utilizator poate accesa doar propriile date) reprezintă inima securității API și sunt efectuate în scopuri defensive.

Sfat: Nu solicitați un test fără a spune AI „să valideze nu doar codul de stare, ci și schema de răspuns și acele reguli de afaceri”. În caz contrar, veți rămâne cu teste care spun „200 returnate, trecute”, dar nu observați că API-ul returnează date corupte.

Prompt slab / Prompt puternic

Slab: „Scrieți teste pentru acest API”.
Puternic: „Scrieți teste REST Assured (Java) pentru punctul final POST/comanda. Acord: productId și cantitatea sunt obligatorii în organism; 201 și {orderId, total, discount, status} sunt returnate la succes. Reguli de afaceri: 10% reducere peste 1000 TL; 400 dacă cantitatea <=0 în căutarea încă 401; comanda utilizatorului: (1) codul de stare, (2) validarea schemei JSON de răspuns, (3) regula de afaceri cu discount, (4) legați fiecare afirmație la regula comercială explicită, nu verificați doar 200/201.

Promptul puternic oferă contractul, regulile de afaceri, scenariile de securitate și așteptările de validare a schemei.

Testarea contractelor: prevenirea despărțirilor între echipe

În arhitecturile de microservicii (structura în care aplicația este împărțită în servicii mici care sunt independente unele de altele și vorbesc cu API-ul), modificarea formatului de răspuns al unui serviciu perturbă în tăcere alte servicii conectate la acesta. Testarea contractelor – testul care verifică că contractul API dintre furnizorul de servicii și serviciul pentru consumatori nu este încălcat de ambele părți – prinde astfel de pauze devreme. Ideea este aceasta: consumatorul definește forma de răspuns pe care o așteaptă de la producător ca un „contract”; Cu fiecare modificare, producătorul testează dacă încă respectă acest acord. Deci, atunci când numele sau tipul unui câmp se schimbă, consumatorul notifică conducta înainte ca aceasta să se blocheze.

AI accelerează două sarcini în acest context: elaborarea unui contract care să reflecte așteptările consumatorilor de la un răspuns API existent și pre-marcarea clauzei contractuale pe care o modificare ar putea încălca. Dar contractul în sine este o decizie de afaceri: expertul determină care domenii sunt cu adevărat critice, care schimbări vor rupe compatibilitatea cu retrocompatibilitatea - consumatorii vechi continuă să lucreze. AI scrie contractul; Tu ești cel care o aprobă.

Sfat: Ștergerea unui câmp sau modificarea tipului de câmp într-un API este aproape întotdeauna o schimbare ruptură. Adăugarea de noi câmpuri este de obicei sigură. Faptul ca AI să clasifice o modificare ca „de ruptură sau sigură” oferă o verificare rapidă de securitate înainte de lansare.

Poștaș sau bazat pe cod?

criteriu

Poștașul/Newman

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

Învățare

Ușor, vizual

Sunt necesare cunoștințe de cod

Controlul versiunilor

Colecția JSON

Direct în codul sursă

logica complexa

Limitat (scripturi JS)

Putere de programare deplină

Integrare CI/CD

cu Newman

Direct dependent de construcție

Validarea schemei

Cu scripturi de testare

Puternic cu biblioteca

Scara echipei

mic/mediu

mare, matur

AI generează cod pentru ambele; Fii clar pe care vrei.

Patru șabloane copiabile

1) Testare API pe bază de contract:

Rolul dvs.: inginer senior de testare API. Scrieți teste pentru următorul punct final cu [instrument/limbă]: [metodă + cale].Contract: [câmpuri obligatorii, cod de succes, structură de răspuns].Reguli de afaceri: [reguli].Strate de testare: (1) cod de stare (2) validare schema de răspuns (3) fiecare regulă de afaceri (4) negativ + autorizație pentru a lega fiecare clauză/autorizare relevantă.

2) Generarea schemei din răspunsul eșantionului:

Generați schema JSON din exemplul de răspuns API de mai jos. Specificați câmpurile obligatorii, tipurile, constrângerile de format (data, e-mail, interval de numere). Apoi dați un exemplu de testare care validează această schemă. Exemplu de răspuns: [paste JSON]

3) Scenarii negative și de autorizare:

Generați cazuri de testare negative și de securitate pentru endpoint[endpoint]. Include: câmp lipsă/obligatoriu, tip greșit, valoare prea mare, simbol invalid/expirat, acces la o resursă neautorizată (IDOR — acces la înregistrarea altcuiva prin schimbarea ID), limita de rată. Specificați codul de stare așteptat și corpul erorii pentru fiecare scenariu. Notă: va fi testat numai pe propriul meu API, autorizat.

4) Controlul pseudo-încrederii:

Consultați acest test API. Ar prinde acest test dacă serverul ar returna codul de stare corect, dar FALSEbody/data? Dacă nu, adăugați schema și validarea regulilor de afaceri. Test: [test de lipire]

trei mini cutii

Cazul 1 – Puterea validării schemei. O echipă verifica doar codul de stare în testele pe care le-a produs cu AI. Într-o versiune, API-ul a început să returneze în mod eronat câmpul total ca text ("1200"); testele au rămas verzi pentru că încă se întorcea 200. Aplicația mobilă s-a prăbușit. După adăugarea validării tipului cu șablonul „Generare schemă din răspunsul eșantionului”, aceeași eroare a fost imediat surprinsă.

Cazul 2 – Decalajul de autoritate (IDOR). Un expert a efectuat testul IDOR între „scenariile negative și de autorizare” generate de AI: a solicitat ID-ul de comandă al utilizatorului B cu simbolul utilizatorului A. API-ul a returnat date de 200 și B - o vulnerabilitate gravă de autorizare. Acest test defensiv a închis scurgerea de date înainte de a intra în funcțiune.

Cazul 3 – Ocolirea regulilor de afaceri. AI a generat 8 teste pentru punctul final de reducere; toți verificau 200, niciunul nu verifica suma reducerii. Expertul a adăugat regulile de afaceri la prompt și le-a reprodus. Noi teste au arătat că reducerea a fost calculată incorect la limita de 1000 TL (reducerea a fost aplicată și la 999). Controlul contractului nu este suficient; Controlul regulilor de afaceri este o necesitate.

Greșeli comune

  • Privind doar codul de stare. A spune „200 s-au întors și au trecut”; nevăzând corpul corupt (fals-încredere).
  • Ocolirea validării schemei. Nu se verifică tipurile de câmpuri și obligația; modificările de tip trec în tăcere.
  • Solicitarea de testare fără a furniza reguli de afaceri. AI nu cunoaște regulile; produce doar control tehnic.
  • Uitând scenariile negative și de drepturi. Vulnerabilitățile de securitate (IDOR, acces neautorizat) sunt surprinse doar de aceste teste.
  • Folosind jetoane și date reale/de producție. Utilizați medii dedicate și date sintetice pentru testare; Nu introduceți chei reale în vehicul.
  • Testare de securitate neautorizată. Rulați teste de autorizare numai pe propriul dvs. API și cu permisiune.

În concluzie

Testarea API verifică rapid și profund vorbirea componentelor software, indiferent de interfață. AI; Testele contractelor sunt foarte eficiente la generarea schemei JSON și a scenariilor negative/de securitate din răspunsul eșantionului. Dar testele superficiale care verifică doar codul de stare dau pseudo-încredere. Necesită toate cele patru straturi: cod de stare, validare a schemei, regulă de afaceri, negativ și autorizare. Puneți regulile de afaceri și contractul pe prompt; Efectuați teste de securitate cu date sintetice și numai cu autorizație.

Sarcina de aplicare

Alegeți un punct final API din propriul proiect. Puneți AI să scrie teste pe patru straturi cu șablonul „testare API pe bază de contract”. Apoi adăugați validarea tipului/execuției cu „generarea schemei din răspunsul eșantionului” și aplicați „verificarea pseudo-încrederii”. Rulați cel puțin un scenariu IDOR/autorizare în propriul mediu de testare. Raportați orice încălcare a contractului sau a regulilor de afaceri pe care le găsiți; Dacă nu găsiți niciunul, rulați testul împotriva unui răspuns în mod deliberat fals pentru a dovedi că a prins-o.

lista de verificare

  • [ ] Am acoperit cele patru straturi de testare (caz, schemă, regulă de afaceri, negativ/autorizare).
  • [ ] Am dat în mod clar contractul și regulile de afaceri AI.
  • [ ] Am configurat teste care validează schema de răspuns (câmp, tip, imperativ).
  • [ ] Am încercat cel puțin un scenariu de autorizare/IDOR în mod defensiv.
  • [ ] Am folosit mediul de testare și date sintetice în loc de token/date reale.
  • [ ] Am demonstrat printr-o „verificare a pseudo-încrederii” că fiecare test prinde răspunsul corupt.