Ẹyọ 5 / 11

Adáṣiṣẹ Idanwo API: Adehun, Eto ati Ifọwọsi Ipari-si-Ipari pẹlu AI

Awọn anfani:

  • Agbara lati ṣe idanwo API ni ijinle pẹlu atilẹyin itetisi atọwọda ni koodu ipo, ero / adehun, ofin iṣowo ati odi / awọn fẹlẹfẹlẹ aṣẹ
  • Agbara lati ṣe agbekalẹ ero JSON lati idahun ayẹwo ati yago fun igbẹkẹle atansọ ti wiwo nikan koodu ipo pẹlu iru ati afọwọsi pataki
  • Agbara lati ṣe idanwo awọn oju iṣẹlẹ aabo gẹgẹbi aṣẹ ati IDOR pẹlu data sintetiki ati fun awọn idi igbeja nikan laarin aṣẹ

Pupọ sọfitiwia ode oni sọrọ si ara wọn ni abẹlẹ nipasẹ API (Atọpa Eto Eto Ohun elo — wiwo nibiti awọn ege sọfitiwia meji sọrọ ni ibamu si adehun kan pato). Nigbati ohun elo alagbeka ba ṣafikun awọn ohun kan si rira, o fi ibeere ranṣẹ si API kan lori olupin naa. Idanwo API n ṣayẹwo pe ibaraẹnisọrọ yii jẹ deede, aabo, ati deede, laibikita wiwo; O yiyara, iduroṣinṣin diẹ sii ati jinle ju idanwo UI lọ. Imọran atọwọda (AI) jẹ daradara pupọ ni idanwo API: o ṣe agbekalẹ awọn idanwo lati asọye API, yọkuro ero-ọrọ esi (adehun ti o ṣalaye eto ti data), ṣe atokọ awọn ọran eti. Ṣugbọn lẹẹkansi caveat aringbungbun kan: AI ko mọ awọn ofin iṣowo gidi ti API rẹ; ṣọ lati gbe awọn Egbò igbeyewo ti o nikan jerisi "200 pada". Iṣẹ rẹ ni lati rii daju pe idanwo naa jẹri adehun gidi ati ọgbọn iṣowo.

Ninu ẹyọ yii, iwọ yoo kọ ẹkọ bii o ṣe le ṣeto atilẹyin AI, awọn idanwo API ti o jinlẹ pẹlu awọn isunmọ bii Postman, REST Assured ati afọwọsi ero.

Awọn ipele ti idanwo API

Wo idanwo API ni awọn ijinle pupọ, pẹlu AI ṣe iranlọwọ ni oriṣiriṣi ni ipele kọọkan:

1. koodu ipo ati idahun ipilẹ. Ṣe ibeere naa pada koodu ipo HTTP ti o nireti (200/201 fun aṣeyọri, 400/401/404 fun aṣiṣe)? Eleyi jẹ julọ Egbò Layer; AI ṣe agbejade ni irọrun ṣugbọn nikan funni ni igbẹkẹle eke.

2. Iṣeto / adehun afọwọsi. Ṣe eto ti idahun baamu adehun naa - awọn aaye ti a nireti wa, ṣe awọn iru wọn jẹ deede, awọn aaye ti o nilo ni sonu? AI le ṣe ipilẹṣẹ JSON Schema - boṣewa ti o ṣalaye eto ti iwe-ipamọ JSON kan - lati idahun ayẹwo, ati awọn idanwo le fọwọsi si ero yẹn. Eyi ni agbara diẹ sii ju kiko afọwọṣe kan ti o da lori aaye.

3. Iṣowo ofin afọwọsi. Iye gidi wa nibi: “Fun aṣẹ 1000 TL, aaye ẹdinwo yẹ ki o jẹ 100”, “Ibere ​​ti o fagile ko le fagile lẹẹkansi”. AI yoo rii daju awọn wọnyi nikan ti o ba fun ni awọn ofin; Ti o ko ba fun, yoo fo.

4. Odi ati aabo. 401 fun ami aitọ, 403 fun iwọle si data elomiran, ko 400 fun ara buburu. Awọn idanwo ašẹ (ijẹrisi pe olumulo le wọle si data tiwọn nikan) jẹ ọkan ti aabo API ati pe a ṣe fun awọn idi igbeja.

Imọran: Maṣe beere idanwo kan laisi sisọ AI lati “fọwọsi kii ṣe koodu ipo nikan, ṣugbọn ero idahun ati awọn ofin iṣowo wọnyẹn.” Bibẹẹkọ, iwọ yoo fi silẹ pẹlu awọn idanwo ti o sọ pe “200 pada, ti kọja” ṣugbọn maṣe akiyesi API ti n pada data ibajẹ.

Ailagbara kiakia / Alagbara kiakia

Alailagbara: "Kọ awọn idanwo fun API yii."
Alagbara: "Kọ awọn idanwo REST Assured (Java) fun POST / aṣẹ ipari ipari. Adehun: productId ati opoiye jẹ dandan ninu ara; 201 ati {orderId, lapapọ, ẹdinwo, ipo} ti wa ni pada lori aṣeyọri. Awọn ofin iṣowo: 10% ẹdinwo lori 1000 TL; 400 ti o ba jẹ pe opoiye si 1000 TL; 400 ti o ba jẹ pe opoiye <1 = 0 miiran; Ilana olumulo

Itọkasi ti o lagbara yoo fun adehun naa, awọn ofin iṣowo, awọn oju iṣẹlẹ aabo, ati ireti afọwọsi ero.

Idanwo adehun: idilọwọ awọn fifọ laarin awọn ẹgbẹ

Ninu awọn ile ayaworan microservice (igbekalẹ ninu eyiti ohun elo ti pin si awọn iṣẹ kekere ti o jẹ ominira ti ara wọn ati sọrọ si API), yiyipada ọna kika idahun ti iṣẹ kan dakẹjẹ awọn iṣẹ miiran ti o sopọ mọ rẹ. Idanwo adehun - idanwo ti o jẹrisi pe adehun API laarin iṣẹ olupese ati iṣẹ alabara ko bajẹ ni ẹgbẹ mejeeji - gba iru awọn isinmi ni kutukutu. Ero naa ni eyi: olumulo n ṣalaye fọọmu idahun ti o nireti lati ọdọ olupilẹṣẹ bi “adehun”; Pẹlu iyipada kọọkan, olupese ṣe idanwo pe o tun ni ibamu pẹlu adehun yii. Nitorinaa nigbati orukọ tabi iru aaye ba yipada, alabara ṣe akiyesi opo gigun ti epo ṣaaju ki o to ṣubu.

AI mu awọn iṣẹ ṣiṣe meji pọ si ni aaye yii: kikọ iwe adehun ti o ṣe afihan ireti alabara lati idahun API ti o wa tẹlẹ, ati ami-ami tẹlẹ eyiti gbolohun adehun iyipada le fọ. Ṣugbọn iwe adehun funrararẹ jẹ ipinnu iṣowo: iwé pinnu iru awọn agbegbe ti o ṣe pataki nitootọ, eyiti awọn iyipada yoo fọ ibamu sẹhin - awọn alabara atijọ tẹsiwaju lati ṣiṣẹ. AI kọ adehun; Iwọ ni ẹni ti o fọwọsi.

Imọran: Piparẹ aaye kan tabi yiyipada iru aaye ni API jẹ igbagbogbo iyipada fifọ. Ṣafikun awọn aaye tuntun nigbagbogbo jẹ ailewu. Nini AI ṣe iyatọ iyipada bi “fifọ tabi ailewu” pese ayẹwo aabo itusilẹ ni iyara.

Postman tabi koodu-orisun?

àwárí mu

Postman / Newman

REST Ni idaniloju / koodu (Java, C#, JS)

Ẹkọ

Rọrun, wiwo

Imọ koodu ti a beere

Iṣakoso ẹya

Gbigba JSON

Taara ni koodu orisun

eka kannaa

Lopin (awọn iwe afọwọkọ JS)

Agbara siseto ni kikun

CI / CD Integration

pẹlu Newman

Taara da lori Kọ

Afọwọsi ero

Pẹlu awọn iwe afọwọkọ idanwo

Alagbara pẹlu ìkàwé

Iwọn ẹgbẹ

kekere / alabọde

nla, ogbo

AI ṣe koodu fun awọn mejeeji; Jẹ ko o eyi ti o fẹ.

Mẹrin daakọ awọn awoṣe

1) Idanwo API ti o da lori adehun:

Rẹ ipa: oga API igbeyewo engineer.Kọ awọn igbeyewo fun awọn wọnyi opin ojuami pẹlu [ọpa / ede]: [ọna + ọna].Adehun: [beere aaye, aseyori koodu, Esi ilana].Business ofin: [ofin].Test Layer: (1) ipo koodu (2) esi eto afọwọsi (3) kọọkan owo ofin (4) odi + ašẹ. Sopọ kọọkan ofin ti o yẹ.

2) Iran ero lati idahun ayẹwo:

Ṣe agbekalẹ Ilana JSON lati inu idahun API ti o wa ni isalẹ. Pato awọn aaye ti a beere, awọn oriṣi, awọn idiwọ ọna kika (ọjọ, imeeli, sakani nọmba). Lẹhinna fun apẹẹrẹ idanwo kan ti o fidi si ero-ọrọ yii. Idahun apẹẹrẹ: [lẹẹmọ JSON]

3) Awọn oju iṣẹlẹ odi ati aṣẹ:

Ṣe ipilẹṣẹ odi ati awọn ọran idanwo aabo fun aaye ipari[ipari]. Pẹlu: sonu/aaye ti a beere, iru aṣiṣe, iye ti o tobi ju, ami aitọ/pari, iraye si awọn orisun laigba aṣẹ (IDOR — iraye si igbasilẹ ẹnikan nipa yiyipada ID), opin oṣuwọn. Pato koodu ipo ti a nireti ati ara aṣiṣe fun oju iṣẹlẹ kọọkan. Akiyesi: yoo ni idanwo nikan lori API ti ara mi, ti a fun ni aṣẹ.

4) Iṣakoso afarape:

Ṣayẹwo idanwo API yii. Ṣe idanwo yii yoo mu ti olupin ba da koodu ipo to pe pada ṣugbọn FALSEbody/data? Ti kii ba ṣe bẹ, ṣafikun ero ati afọwọsi ofin iṣowo. Idanwo: [idanwo lẹẹmọ]

mẹta mini igba

Ọran 1 - Agbara afọwọsi ero. Ẹgbẹ kan n ṣayẹwo koodu ipo nikan ni awọn idanwo ti o ṣe pẹlu AI. Ninu ẹya kan, API bẹrẹ ni aṣiṣe dada aaye lapapọ pada gẹgẹbi ọrọ ("1200"); awọn igbeyewo duro alawọ ewe nitori ti o ti tun pada 200. Mobile elo kọlu. Lẹhin fifi afọwọsi iru kun pẹlu “iran Eto lati awoṣe esi ayẹwo”, aṣiṣe kanna ni a mu lẹsẹkẹsẹ.

Ọran 2 - Aafo alaṣẹ (IDOR). Onimọran kan ṣe idanwo IDOR laarin awọn “awọn oju iṣẹlẹ odi ati aṣẹ” ti ipilẹṣẹ nipasẹ AI: O beere ID aṣẹ olumulo B pẹlu aami olumulo A. API pada data ti 200 ati B — ailagbara aṣẹ-aṣẹ pataki. Idanwo igbeja yii ti paade jijo data ṣaaju ki o to lọ laaye.

Ọran 3 - Iṣowo ofin fori. AI ṣe ipilẹṣẹ awọn idanwo 8 fun opin opin ẹdinwo; gbogbo wọn n ṣayẹwo 200, ko si ẹnikan ti o jẹrisi iye ẹdinwo. Onimọran ṣafikun awọn ofin iṣowo si tọ ati pe wọn tun ṣe. Awọn idanwo tuntun ṣafihan pe ẹdinwo naa jẹ iṣiro ni aṣiṣe ni opin 1000 TL (ẹdinwo naa tun lo si 999). Iṣakoso adehun ko to; Iṣakoso ofin iṣowo jẹ dandan.

Awọn aṣiṣe ti o wọpọ

  • O kan n wo koodu ipo naa. Lati sọ pe "200 ti pada ati kọja"; ko ri ara ibaje (eke-igbekele).
  • Fori afọwọsi ero. Ko ṣayẹwo awọn iru aaye ati ọranyan; iru ayipada kọja silently.
  • Nbeere idanwo laisi ipese awọn ofin iṣowo. AI ko mọ awọn ofin; o fun wa nikan imọ Iṣakoso.
  • Ngbagbe odi ati awọn oju iṣẹlẹ ẹtọ. Awọn ailagbara aabo (IDOR, iraye si laigba aṣẹ) ni a mu nipasẹ awọn idanwo wọnyi nikan.
  • Lilo gidi / gbóògì àmi ati data. Lo media igbẹhin ati data sintetiki fun idanwo; Maṣe fi awọn bọtini gidi sinu ọkọ.
  • Idanwo aabo laigba aṣẹ. Ṣiṣe awọn idanwo aṣẹ nikan lori API tirẹ ati pẹlu igbanilaaye.

Ni soki

Idanwo API jẹrisi ọrọ awọn ege sọfitiwia ni iyara ati jinna, laibikita wiwo. AI; awọn idanwo adehun ni o munadoko pupọ ni ipilẹṣẹ eto JSON ati odi / awọn oju iṣẹlẹ aabo lati idahun ayẹwo. Ṣugbọn awọn idanwo lasan ti o ṣayẹwo koodu ipo nikan funni ni igbẹkẹle afarape. Beere gbogbo awọn ipele mẹrin: koodu ipo, afọwọsi ero, ofin iṣowo, odi, ati aṣẹ. Fi awọn ofin iṣowo ati adehun lori itọsi; Ṣe awọn idanwo aabo pẹlu data sintetiki ati pẹlu aṣẹ nikan.

Ohun elo iṣẹ-ṣiṣe

Yan aaye ipari API lati inu iṣẹ akanṣe tirẹ. Jẹ ki AI kọ awọn idanwo ala-mẹrin pẹlu awoṣe “idanwo API ti o da lori adehun”. Lẹhinna ṣafikun iru/afọwọsi imuse pẹlu “iran ero lati idahun ayẹwo” ati lo “ṣayẹwo-igbekele-igbẹkẹle”. Ṣiṣe o kere ju IDOR kan / oju iṣẹlẹ aṣẹ ni agbegbe idanwo tirẹ. Jabọ eyikeyi adehun tabi irufin ofin iṣowo ti o rii; Ti o ko ba le ri eyikeyi, ṣiṣe idanwo naa lodi si idahun ti a mọọmọ ti o ni ẹwu lati fi mule pe o mu.

akojọ ayẹwo

  • [] Mo bo awọn ipele mẹrin ti idanwo (ọran, ero, ofin iṣowo, odi/aṣẹ).
  • [] Mo fun ni kedere adehun ati awọn ofin iṣowo si AI.
  • [] Mo ṣeto awọn idanwo ti o fọwọsi eto esi (aaye, oriṣi, pataki).
  • [] Mo ti gbiyanju o kere ju ọkan aṣẹ/oju iṣẹlẹ IDOR ni igbeja.
  • [] Mo ti lo igbeyewo ayika ati sintetiki data dipo ti gidi àmi/data.
  • [] Mo ti safihan pẹlu kan "pseudo-igbekele ayẹwo" ti gbogbo igbeyewo mu awọn ibaje esi.