Üksus 5 / 11

API testimise automatiseerimine: leping, skeem ja täielik valideerimine AI-ga

Kasu:

  • Võimalus teostada tehisintellekti toega tehisintellekti toega põhjalikult API testimist olekukoodi, skeemi/lepingu, ärireeglite ja negatiivsete/volituste kihtidel
  • Võimalus genereerida näidisvastusest JSON-skeemi ja vältida pseudokindlust, mis tekib ainult olekukoodi vaatamisel tüübi ja kohustusliku valideerimisega
  • Võimalus testida turvastsenaariume, nagu autoriseerimine ja IDOR, sünteetiliste andmetega ja kaitseotstarbel ainult autoriseerimise raames

Enamik kaasaegseid tarkvarasid räägib üksteisega taustal läbi API (Application Programming Interface – liides, kus kaks tarkvara räägivad vastavalt konkreetsele lepingule). Kui mobiilirakendus lisab üksused ostukorvi, saadab see tegelikult päringu serveri API-le. API testimine kontrollib, kas see vestlus on liidesest olenemata õige, turvaline ja järjepidev; See on kiirem, stabiilsem ja sügavam kui kasutajaliidese testimine. Tehisintellekt (AI) on API testimisel väga tõhus: genereerib API definitsioonist teste, eraldab vastuseskeemi (lepingu, mis määrab andmete struktuuri), loetleb äärmuslikud juhtumid. Kuid jällegi kehtib keskne hoiatus: AI ei tea teie API tegelikke ärireegleid; kipub tootma pealiskaudseid teste, mis kinnitavad ainult "200 tagastatud". Teie ülesanne on veenduda, et test kinnitab tegelikku lepingut ja äriloogikat.

Selles üksuses saate teada, kuidas seadistada AI-toega sügavaid API teste selliste lähenemisviisidega nagu Postman, REST Assured ja skeemi valideerimine.

API testimise kihid

Kaaluge API testimist mitmel sügavusel, kusjuures AI aitab igas kihis erinevalt.

1. Olekukood ja põhivastus. Kas päring tagastab oodatud HTTP olekukoodi (edu korral 200/201, vea korral 400/401/404)? See on kõige pealiskaudsem kiht; AI toodab kergesti, kuid üksi annab vale usalduse.

2. Skeemi/lepingu kinnitamine. Kas vastuse struktuur sobib lepinguga – kas oodatud väljad on olemas, kas nende tüübid on õiged, kas kohustuslikud väljad puuduvad? AI saab näidisvastusest genereerida JSON-skeemi – standardi, mis määratleb JSON-dokumendi struktuuri – ja testid saavad selle skeemi alusel valideerida. See on palju tugevam kui väljapõhise väite käsitsi kirjutamine.

3. Ärireeglite valideerimine. Tegelik väärtus on siin: "1000 TL tellimuse puhul peaks allahindluse väli olema 100", "tühistatud tellimust ei saa uuesti tühistada". AI kontrollib neid ainult siis, kui annate talle reeglid; Kui ei anna, siis hüppab.

4. Negatiivne ja turvalisus. 401 kehtetu märgi puhul, 403 kellegi teise andmetele juurdepääsu eest, tühjendage 400 halva keha puhul. Autoriseerimistestid (kontrollivad, et kasutajal on juurdepääs ainult oma andmetele) on API turvalisuse keskmes ja neid tehakse kaitseotstarbel.

Näpunäide. Ärge taotlege testi ilma, et te ütleksite tehisintellektile mitte ainult olekukoodi, vaid ka vastuse skeemi ja ärireeglite kinnitamiseks. Vastasel juhul jäävad teile testid, mis ütlevad "200 tagastatud, läbitud", kuid ei märka, et API tagastab rikutud andmeid.

Nõrk viip / Tugev viip

Nõrk: "Kirjutage selle API jaoks teste."
Tugev: "Kirjutage POST-i /tellimuse lõpp-punkti jaoks REST Assured (Java) testid. Leping: toote ID ja kogus on kehas kohustuslikud; 201 ja {orderId, total, discount, status} tagastatakse edu korral. Ärireeglid: 10% allahindlus üle 1000 TL; 400, kui kogus <=0; 400, kui kogus <=0; 400, kui kogus <=0 (1) olekukood, (2) vastuse JSON-skeemi valideerimine, (3) allahindluse ärireegel, (4) siduda iga väide selgesõnalise ärireegliga, mitte ainult kontrollida 200/201.

Võimas viip annab lepingu, ärireeglid, turvastsenaariumid ja skeemi valideerimise ootused.

Lepingu testimine: meeskondade vaheliste lagunemiste vältimine

Mikroteenuste arhitektuurides (struktuur, milles rakendus on jagatud väikesteks teenusteks, mis on üksteisest sõltumatud ja räägivad API-ga) häirib teenuse vastuse vormingu muutmine vaikselt teisi sellega ühendatud teenuseid. Lepingu testimine – test, mis kontrollib, et pakkuja teenuse ja tarbijateenuse vahel sõlmitud API leping pole mõlemalt poolt rikutud – tabab sellised katkestused varakult. Idee on järgmine: tarbija määratleb vastuse vormi, mida ta tootjalt ootab, "lepinguna"; Iga muudatusega kontrollib tootja, et ta ikka täidab seda lepingut. Seega, kui välja nimi või tüüp muutub, teavitab tarbija torujuhet enne selle kokkujooksmist.

Tehisintellekt kiirendab selles kontekstis kahte ülesannet: lepingu koostamine, mis kajastab tarbija ootusi olemasoleva API vastuse põhjal, ja eelmärkimine, millist lepinguklauslit muudatus võib rikkuda. Leping ise on aga äriotsus: ekspert määrab, millised valdkonnad on tõeliselt kriitilised, millised muudatused rikuvad tagasiühilduvust – vanad tarbijad jätkavad tööd. AI kirjutab lepingu; Sina oled see, kes selle heaks kiidab.

Näpunäide. Välja kustutamine või väljatüübi muutmine API-s on peaaegu alati murranguline muudatus. Uute väljade lisamine on tavaliselt ohutu. Kui tehisintellekt liigitab muudatuse katkiseks või ohutuks, tagab see kiire väljalaskeeelse turvakontrolli.

Postimees või koodipõhine?

kriteerium

Postimees/Newman

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

Õppimine

Lihtne, visuaalne

Vajalik koodi tundmine

Versiooni juhtimine

Kogu JSON

Otse lähtekoodis

keeruline loogika

Piiratud (JS-skriptid)

Täielik programmeerimisvõimsus

CI/CD integreerimine

koos Newmaniga

Sõltub otseselt ehitusest

Skeemi valideerimine

Testskriptidega

Võimas koos raamatukoguga

Meeskonna skaala

väike/keskmine

suur, küps

AI genereerib koodi mõlema jaoks; Tehke selgeks, kumba soovite.

Neli kopeeritavat malli

1) Lepingupõhine API testimine:

Teie roll: vanem API testiinsener.Kirjutage järgmise lõpp-punkti testid [tööriista/keelega]: [meetod + tee].Leping: [nõutavad väljad, edukood, vastuse struktuur].Ärireeglid: [reeglid].Testikihid: (1) olekukood (2) vastuseskeemi valideerimine (3) iga ärireegel (4) negatiivne + volitused. linkida iga asjakohane reegel.

2) Skeemi genereerimine näidisvastusest:

Looge JSON-skeem allolevast API-vastusest. Määrake nõutavad väljad, tüübid, vormingupiirangud (kuupäev, e-post, numbrivahemik). Seejärel tooge katsenäide, mis kinnitab selle skeemi vastu. Vastuse näidis: [kleepige JSON]

3) Negatiivsed ja autoriseerimisstsenaariumid:

Looge lõpp-punkti [endpoint] jaoks negatiivsed ja turvatesti juhtumid. Sisaldab: puuduv/nõutav väli, vale tüüp, liiga suur väärtus, kehtetu/aegunud tunnus, juurdepääs volitamata ressursile (IDOR – juurdepääs kellegi teise kirjele ID muutmisega), määra limiit. Määrake iga stsenaariumi jaoks eeldatav olekukood ja vea keha. Märkus: testitakse ainult minu enda API-s, volitatud.

4) Pseudo-usalduse kontroll:

Vaadake seda API testi. Kas see test saaks kinni, kui server tagastaks õige olekukoodi, kuid FALSEbody/data? Kui ei, lisage skeemi ja ärireeglite valideerimine. Test: [kleebi test]

kolm minikarpi

Juhtum 1 – skeemi valideerimise võimsus. Meeskond kontrollis AI-ga koostatud testides ainult olekukoodi. Ühes versioonis hakkas API ekslikult tagastama koguvälja tekstina ("1200"); testid jäid roheliseks, sest see andis ikka veel 200. Mobiilirakendus jooksis kokku. Pärast tüübikinnituse lisamist malliga "Skeemi genereerimine näidisvastusest" tabati kohe sama viga.

Juhtum 2 – autoriteetide lünk (IDOR). Ekspert tegi IDOR-testi AI loodud negatiivsete ja autoriseerimisstsenaariumide vahel: ta küsis kasutaja B tellimuse ID-d kasutaja A märgiga. API tagastas andmed 200 ja B – see on tõsine autoriseerimise haavatavus. See kaitsetest sulges andmelekke enne selle käivitamist.

Juhtum 3 – ärireeglitest möödasõit. AI genereeris allahindluse lõpp-punkti jaoks 8 testi; kõik kontrollisid 200, ükski ei kontrollinud allahindluse summat. Ekspert lisas viipale ärireeglid ja lasi need paljundada. Uute testidega selgus, et 1000 TL limiidi juures oli allahindlus valesti arvestatud (allahindlust rakendati ka 999-le). Lepingu kontrollist ei piisa; Ärireeglite kontroll on kohustuslik.

Levinud vead

  • Lihtsalt olekukoodi vaadates. Öelda "200 on tagasi ja möödas"; rikutud keha mittenägemine (vale-usaldus).
  • Skeemi valideerimisest möödaminek. Väljatüüpide ja kohustuse mittekontrollimine; tüübimuutused mööduvad vaikselt.
  • Testimise taotlemine ilma ärireegleid esitamata. AI ei tea reegleid; see toodab ainult tehnilist kontrolli.
  • Unustades negatiivsed ja õiguslikud stsenaariumid. Turvanõrkused (IDOR, volitamata juurdepääs) tabavad ainult need testid.
  • Reaal-/tootmislubade ja andmete kasutamine. Kasutage testimiseks spetsiaalset meediat ja sünteetilisi andmeid; Ärge torgake autosse pärisvõtmeid.
  • Volitamata turvatestid. Käivitage autoriseerimisteste ainult oma API-s ja loaga.

Kokkuvõttes

API testimine kontrollib tarkvara osade kõnet kiiresti ja põhjalikult, sõltumata liidesest. AI; lepingutestid on väga tõhusad JSON-skeemi ja negatiivsete/turvastsenaariumide genereerimiseks valimi vastusest. Kuid pealiskaudsed testid, mis kontrollivad ainult olekukoodi, annavad pseudokindlust. Nõuavad kõiki nelja kihti: olekukood, skeemi valideerimine, ärireegel, negatiivne ja autoriseerimine. Pange ärireeglid ja leping viipale; Tehke turvateste sünteetiliste andmetega ja ainult volitusega.

Rakenduse ülesanne

Valige oma projektist API lõpp-punkt. Laske tehisintellektil kirjutada neljakihilised testid malliga „lepingupõhine API testimine”. Seejärel lisage tüübi-/jõustusvalideerimine valikuga "Skeemi genereerimine näidisvastusest" ja rakendage "pseudo-usalduskontrolli". Käivitage oma testkeskkonnas vähemalt üks IDOR-i/volitamise stsenaarium. Teatage kõigist leitud lepingu- või ärireeglite rikkumistest; Kui te ei leia ühtegi, käivitage test tahtlikult moonutatud vastusega, et tõestada, et see tabas seda.

kontrollnimekiri

  • [ ] Katsin testimise neli kihti (juhtum, skeem, ärireegel, negatiivne/volitus).
  • [ ] Andsin selgelt AI-le lepingu ja ärireeglid.
  • [ ] Seadistan testid, mis kinnitavad vastuse skeemi (väli, tüüp, kohustuslik).
  • [ ] Olen proovinud vähemalt ühte autoriseerimis-/IDOR-i stsenaariumi kaitseks.
  • [ ] Kasutasin testkeskkonda ja sünteetilisi andmeid päris tokeni/andmete asemel.
  • [ ] Tõestasin "pseudokindluskontrolliga", et iga test tabab rikutud vastuse.