API tesztelési oktatóanyag: Mi az API-tesztautomatizálás?

Mi az API tesztelés?

API tesztelés egy szoftvertesztelési típus, amely az alkalmazásprogramozási felületeket (API-k) érvényesíti. Az API tesztelés célja a programozási felületek funkcionalitásának, megbízhatóságának, teljesítményének és biztonságának ellenőrzése. Az API-tesztelés során a szabványos felhasználói bemenetek (billentyűzet) és kimenetek használata helyett szoftverrel hívásokat küld az API-nak, lekéri a kimenetet, és feljegyzi a rendszer válaszát. Az API-tesztek nagyon különböznek a GUI-tesztektől, és nem az alkalmazások kinézetére és hangulatára koncentrálnak. Főleg a szoftverarchitektúra üzleti logikai rétegére koncentrál.

API tesztelési kép

Háttérnek, API (alkalmazásprogramozási felület) egy számítástechnikai interfész, amely két különálló szoftverrendszer közötti kommunikációt és adatcserét tesz lehetővé. Az API-t végrehajtó szoftverrendszer számos olyan funkciót/alprogramot tartalmaz, amelyeket egy másik szoftverrendszer végrehajthat. Az API meghatározza a két szoftverrendszer között benyújtható kéréseket, kérések benyújtásának módját, használható adatformátumokat stb.

Az API tesztautomatizálási környezet beállítása

API automatizálás A teszteléshez olyan alkalmazásra van szükség, amely API-n keresztül kölcsönhatásba léphet. Egy API teszteléséhez szüksége lesz

  1. Használja a Tesztelő eszközt az API vezetéséhez
  2. Írjon saját kódot az API teszteléséhez

Néhány megjegyzés

  • Az API-tesztelés eltér a többi szoftvertesztelési típustól, mivel a grafikus felhasználói felület nem érhető el, mégis be kell állítania a kezdeti környezetet, amely meghívja az API-t a szükséges paraméterkészlettel, majd végül meg kell vizsgálnia a teszt eredményét.
  • Ezért az API automatizálási tesztelésére szolgáló tesztelési környezet beállítása kissé bonyolultnak tűnik.
  • Az adatbázist és a szervert az alkalmazás követelményeinek megfelelően kell konfigurálni.
  • A telepítés után meg kell hívni az API függvényt, hogy ellenőrizze, működik-e az API.

Az API kimenetének típusai

Az API kimenete lehet

  1. Bármilyen típusú adat
  2. Állapot (mondjuk Pass vagy Fail)
  3. Hívjon egy másik API függvényt.

Nézzünk egy példát a fenti típusok mindegyikére ebben az API-tesztelési oktatóanyagban

Bármilyen típusú adat

Példa: Van egy API-függvény, amelynek két egész számot kell hozzáadnia.

Long add(int a, int b)

A számokat bemeneti paraméterként kell megadni. A kimenetnek két egész szám összegének kell lennie. Ezt a kimenetet a várt eredménnyel kell ellenőrizni.

Hívni kell pl

add (1234, 5656)

Kivételeket kell kezelni, ha a szám meghaladja az egész szám határértékét.

Állapot (mondjuk Pass vagy Fail)

Tekintsük az alábbi API függvényt –

  1. Zár()
  2. Kinyit()
  3. Töröl()

Bármilyen értéket adnak vissza, például True (siker esetén) vagy false (hiba esetén) kimenetként.

Egy pontosabb Teszt eset lenne, bármelyik szkriptben meghívhatja a függvényeket, és később ellenőrizheti az adatbázisban vagy az alkalmazás grafikus felületén történt változásokat.

Másik API/esemény hívása

Másik API/esemény hívása

Ebben az esetben meghívjuk az egyik API függvényt, amely egy másik függvényt hív meg.

Például – Az első API függvény egy megadott rekord törlésére használható a táblában, és ez a függvény egy másik függvényt hív meg az adatbázis FRISSÍTÉSE céljából.

Tesztesetek API teszteléshez:

Az API-tesztelés teszteseteinek alapja

  • Visszatérési érték a bemeneti feltétel alapján: viszonylag könnyen tesztelhető, mivel a bemenet definiálható és az eredmények hitelesíthetők
  • Nem ad vissza semmit: Ha nincs visszatérési érték, akkor ellenőrizni kell az API viselkedését a rendszeren
  • Más API/esemény/megszakítás aktiválása: Ha egy API kimenete valamilyen eseményt vagy megszakítást vált ki, akkor ezeket az eseményeket és megszakításfigyelőket nyomon kell követni
  • Adatstruktúra frissítése: Az adatstruktúra frissítése valamilyen eredménnyel vagy hatással lesz a rendszerre, és ezt hitelesíteni kell
  • Bizonyos erőforrások módosítása: Ha az API hívás módosít néhány erőforrást, akkor azt a megfelelő erőforrások elérésével érvényesíteni kell

API tesztelési megközelítés

API tesztelési megközelítés egy előre definiált stratégia vagy metódus, amelyet a minőségbiztosítási csapat hajt végre az API tesztelése érdekében, miután a build elkészült. Ez a tesztelés nem tartalmazza a forráskódot. Az API-tesztelési megközelítés segít jobban megérteni a funkciókat, a tesztelési technikákat, a bemeneti paramétereket és a tesztesetek végrehajtását.

A következő pontok segítik a felhasználót az API tesztelési megközelítésben:

API tesztelési megközelítés

  1. Az API program funkcionalitásának megértése és a program hatókörének világos meghatározása
  2. Alkalmazzon tesztelési technikákat, például egyenértékűségi osztályokat, határérték-elemzést és hibakitalálást, és írjon teszteseteket az API-hoz
  3. Az API bemeneti paramétereit megfelelően meg kell tervezni és meg kell határozni
  4. Végezze el a teszteseteket, és hasonlítsa össze a várt és a tényleges eredményeket.

Az API-tesztelés és az egységtesztelés közötti különbség

Egység tesztelése API tesztelés
A fejlesztők hajtják végre A tesztelők elvégzik
Külön funkcionalitást tesztelnek A végpontok közötti funkcionalitás tesztelve van
A fejlesztő hozzáférhet a forráskódhoz A tesztelők nem férhetnek hozzá a forráskódhoz
A felhasználói felület tesztelése is részt vesz Csak az API-funkciókat tesztelik
Csak az alapvető funkciókat tesztelik Minden funkcionális probléma tesztelve van
Korlátozott terjedelemben Szélesebb körben
Általában bejelentkezés előtt futott Próbafutás a build létrehozása után

Az API tesztelése

Az API automatizálási tesztelésének ki kell terjednie legalább a következő tesztelési módszerekre, a szokásos SDLC folyamaton kívül

  • Felfedezési tesztelés: A tesztcsoportnak manuálisan kell végrehajtania az API-ban dokumentált híváskészletet, például annak ellenőrzését, hogy az API által kitett adott erőforrás listázható, létrehozható és törölhető-e.
  • Használhatósági tesztelés: Ez a tesztelés ellenőrzi, hogy az API működőképes és felhasználóbarát-e. És az API jól integrálható-e egy másik platformmal is
  • Biztonsági tesztelés: Ez a tesztelés magában foglalja, hogy milyen típusú hitelesítésre van szükség, és hogy az érzékeny adatok HTTP-n vagy mindkettőn keresztül titkosítva vannak-e
  • Automatizált tesztelés: Az API tesztelésének egy olyan szkriptkészlet vagy eszköz létrehozásával kell végződnie, amely az API rendszeres végrehajtására használható.
  • Dokumentáció: A tesztcsoportnak meg kell győződnie arról, hogy a dokumentáció megfelelő, és elegendő információt tartalmaz az API-val való interakcióhoz. A dokumentációnak a végső leszállítás részét kell képeznie

Az API-tesztelés legjobb gyakorlatai:

  • Az API teszteseteket tesztkategória szerint kell csoportosítani
  • Minden teszt tetején fel kell tüntetni a meghívott API-k deklarációit.
  • A paraméterek kiválasztását kifejezetten meg kell említeni magában a tesztesetben
  • Rögzítse az API-függvényhívások prioritásait, hogy a tesztelők könnyen tesztelhessenek
  • Minden tesztesetnek a lehető legönállóbbnak és a függőségektől függetlennek kell lennie
  • Kerülje a „tesztláncolást” a fejlesztés során
  • Különös körültekintéssel kell eljárni az egyszeri hívási funkciók, például – Törlés, Ablak bezárása stb.
  • A hívások sorrendjét végre kell hajtani és jól meg kell tervezni
  • A teljes tesztlefedettség biztosítása érdekében hozzon létre API teszteseteket az API összes lehetséges bemeneti kombinációjához.

Az API-tesztelés által észlelt hibák típusai

  • Nem kezeli kecsesen a hibahelyzeteket
  • Nem használt zászlók
  • Hiányzó vagy ismétlődő funkciók
  • Megbízhatósági kérdések. Nehézség a csatlakozásban és a válasz megszerzésében API.
  • Biztonsági kérdések
  • Többszálú problémák
  • Teljesítménybeli problémák. Az API válaszideje nagyon magas.
  • Helytelen hibák/figyelmeztetés a hívónak
  • Az érvényes argumentumértékek helytelen kezelése
  • A válaszadatok felépítése nem megfelelő (JSON vagy XML)

Az API tesztautomatizálás módja

1) ReadyAPI

ReadyAPI a RESTful, SOAP, GraphQL és más webszolgáltatások funkcionális, biztonsági és terhelési tesztelésének vezető eszköze. Egy intuitív platformon három hatékony eszközt kap: ReadyAPI Test, ReadyAPI Performance és ReadyAPI Virtualization. Ezekkel az eszközökkel funkcionális, biztonsági és teljesítmény/terhelési teszteket végezhet. Robusztus virtualizációs eszközünkkel API- és webszolgáltatások is kigúnyolhatók. Ezenkívül könnyedén integrálhatja a sajátját CI/CD csővezeték minden építés során.

ReadyAPI

Főbb jellemzők

  • A ReadyAPI bármilyen környezetbe integrálható.
  • Intelligens állítás funkcióval rendelkezik, amely gyorsan képes tömeges állításokat létrehozni több száz végpont ellen.
  • Natív támogatás Git, Docker, Jenkins, AzureStb
  • Támogatja a parancssort az automatizált teszteléshez.
  • Támogatja a funkcionális tesztek és a feladatsorok párhuzamos végrehajtását.
  • Promotes kód újrafelhasználása
  • Eltávolítja a függőségeket a tesztelés és a fejlesztés során.

Látogassa meg a ReadyAPI-t >>

14 napos ingyenes próbaverzió (nem szükséges hitelkártya)

A következő oktatóanyagok részletes útmutatót nyújtanak az API-teszt automatizálásához.

Emellett vannak más eszközök is az API-tesztelésre. Ellenőrizze őket itt

Az API tesztelés kihívásai

Az API-tesztelés kihívásai a következők:

  • A webes API tesztelésének fő kihívásai a következők Paraméterek kombinációja, paraméter kiválasztása és hívássorrend
  • Nincs elérhető GUI hogy tesztelje az alkalmazást, amely teszi nehéz megadni a bemeneti értékeket
  • A kimenet érvényesítése és ellenőrzése egy másik rendszerben kissé nehézkes a tesztelők számára
  • A paraméterek kiválasztását és kategorizálását a tesztelőknek ismerniük kell
  • Kivételkezelő funkció tesztelni kell
  • A tesztelők számára kódolási ismeretek szükségesek

Következtetés

Az API az üzleti logikai réteget képviselő osztályok/függvények/eljárások készletéből áll. Ha az API-t nem tesztelik megfelelően, az nemcsak az API-alkalmazásban, hanem a hívó alkalmazásban is problémákat okozhat. Ez egy nélkülözhetetlen teszt a szoftverfejlesztésben.