Backend Testing – nástroje, postupy, otázky na interview, checklist

Backend je kľúčovou súčasťou akéhokoľvek softvérového produktu. V tomto článku sa pozrieme na to, čo presne je backend, ako sa testuje, čo robí backend developer a aké nástroje sa používajú na overenie jeho spoľahlivosti a výkonnosti.

Čo je Backend (BE)?

Backend je technologická časť softvérového systému, ktorá nie je priamo viditeľná pre používateľa. Zahrnuje server, databázu a aplikačnú logiku. Server zabezpečuje komunikáciu medzi frontendom a databázou. Databáza uchováva dáta, aplikačná logika spracováva požiadavky a vykonáva operácie nad dátami.

Backend testing

Backend testing je dôležitým aspektom vývoja softvéru z niekoľkých dôvodov:

  1. Spoľahlivosť a Funkčnosť: Testovanie backendu zabezpečuje, že serverová časť aplikácie funguje správne a očakávane pod rôznymi podmienkami.
  2. Výkonnosť: Pomáha identifikovať slabé miesta a optimalizovať kód pre lepšiu výkonnosť a rýchlosť.
  3. Zabezpečenie: Backend testing zahrnuje testovanie zabezpečenia aplikácie, aby sa predišlo potenciálnym bezpečnostným rizikám.
  4. Škálovateľnosť: Pomáha zistiť, ako dobre aplikácia zvláda nápor používateľov a rastúci objem dát.

Backend aplikácie môžeme testovať na rôznych úrovniach testov:

  1. Unit testy:
  • Testujú individuálne komponenty backendu, ako sú funkcie, triedy alebo moduly.
  • Overujú, či jednotlivé časti kódu fungujú správne a sú v súlade s požiadavkami.
  1. Integračné testy:
  • Testujú spoluprácu medzi rôznymi komponentami backendu.
  • Overujú, či komunikácia medzi časťami systému prebieha bez problémov.
  1. Funkčné testy:
  • Simulujú reálne používanie aplikácie.
  • Testujú, či backend správne reaguje na konkrétne používateľské akcie a generuje očakávané výstupy.
  1. Výkonnostné testy:
  • Zameriavajú sa na výkonnosť a škálovateľnosť backendu.
  • Overujú, ako systém zvláda zaťaženie a odozvu pri rôznom počte používateľov.
  1. Bezpečnostné testy:
  • Overujú bezpečnosť aplikácie a zabezpečenie dát pred neoprávneným prístupom.

Backend Web Development

Backend web development sa zaoberá vývojom serverovej časti webových aplikácií. Využíva rôzne technológie a frameworky, ako sú Node.js, Python, Ruby, PHP a mnohé ďalšie.

Pracovná pozícia – Backend Developer

Backend developer je odborník zodpovedný za vývoj, implementáciu a údržbu serverovej časti softvéru. Jeho úlohy zahŕňajú:

  • Návrh a implementácia API: Vytvára a spravuje rozhrania pre komunikáciu medzi frontendom a backendom.
  • Správa databázy: Navrhuje a udržuje databázu, zabezpečuje optimalizácie a zálohovanie dát.
  • Zabezpečenie: Zodpovedný za zabezpečenie aplikácie a dát pred neoprávneným prístupom.

Backend testing – otázky na interview

Tu je zopár najčastejšie kladených otázok a odpovedí na pohovory o backendovom testovaní.

  1. Čo je to backendové testovanie?

Testovanie backendu je proces testovania funkčnosti backendových komponentov aplikácie alebo komponentov na strane servera. Patrí sem testovanie databázy, aplikačnej logiky a API. Testovanie backendu je dôležité na zabezpečenie toho, aby aplikácia zvládla záťaž a prevádzku, ktorá sa od nej očakáva.

  1. Môžete vysvetliť, čo je to databázová schéma v kontexte testovania backendu?

Databázová schéma je štruktúra databázy, ktorá zahŕňa tabuľky a polia, ktoré sa v nej nachádzajú. V kontexte backendového testovania sa databázová schéma môže použiť na overenie, či sú údaje, ktoré sa vkladajú do databázy, platné a či zodpovedajú očakávanej štruktúre.

  1. Ako si predstavujete testovacie prípady pre backendové testovanie?

Existuje niekoľko rôznych spôsobov, ako pristupovať k backendovému testovaniu. Jedným zo spôsobov je premýšľať o rôznych typoch údajov, ktoré budú prechádzať vaším systémom, a o tom, ako chcete tieto údaje testovať. Ďalším spôsobom je premýšľať o rôznych typoch funkcií, ktoré bude musieť váš systém podporovať, a o tom, ako môžete tieto funkcie testovať.

  1. Aké sú niektoré bežné typy testov backendu?

Existuje mnoho rôznych typov backendových testov, ale medzi najbežnejšie patria unit testy, integračné testy a systémové testy. Unit testy sa zameriavajú na testovanie funkčnosti jednotlivých komponentov, zatiaľ čo integračné testy kontrolujú, ako tieto komponenty fungujú spoločne. Na druhej strane systémové testy testujú celý systém ako celok, aby zistili, či spĺňa požiadavky.

  1. Aké nástroje alebo frameworky používate na testovanie backendu?

Existuje niekoľko rôznych možností nástrojov a frameworkov na testovanie backendu. Medzi obľúbené možnosti patria JUnit, TestNG a Spock.

  1. Prečo potrebujeme vykonávať testovanie backendu?

Testovanie backendu je dôležité, aby sa zabezpečilo správne fungovanie serverovej časti aplikácie. To zahŕňa testovanie databázy, API a všetkých ostatných komponentov na strane servera. Testovanie backendu môže pomôcť odhaliť problémy, ako sú napríklad úzke miesta vo výkone, bezpečnostné zraniteľnosti a chyby, ktoré by mohli ovplyvniť funkčnosť aplikácie.

  1. Aké zručnosti by ste potrebovali, aby ste sa stali odborníkom na backendové testovanie?

Existuje niekoľko kľúčových zručností, ktoré sú potrebné na backendové testovanie. Po prvé, je dôležité dobre rozumieť rôznym používaným backendovým technológiám, ako sú databázy, servery a siete. Okrem toho je potrebné dobre rozumieť rôznym testovacím nástrojom a frameworkom, ktoré sú k dispozícii. Nakoniec je dôležité mať dobré schopnosti riešiť problémy, aby ste dokázali rýchlo identifikovať a vyriešiť problémy.

  1. Na čo by sa mal náš tím zamerať pri vykonávaní backendového testovania?

Existuje niekoľko kľúčových oblastí, na ktoré by sa mal tím pri vykonávaní backendového testovania zamerať:

– zabezpečenie toho, aby údaje zadávané do systému boli platné a presné,

– testovanie rôznych volaní API, aby sa zabezpečilo ich správne fungovanie,

– kontrola databázy s cieľom zabezpečiť, aby sa údaje ukladali a načítavali správne,

– testovanie bezpečnosti systému s cieľom zabezpečiť ochranu citlivých údajov.

  1. Ktoré programovacie jazyky sú najvhodnejšie na písanie testov backendu?

Na písanie testov backendu možno použiť akýkoľvek programovací jazyk, ale niektoré jazyky sú na túto úlohu vhodnejšie ako iné. Napríklad Python je populárny jazyk na písanie backendových testov, pretože je ľahko čitateľný a má veľké množstvo knižníc, ktoré možno použiť na účely testovania.

  1. Je možné písať backendové testy bez znalosti programovania? Ak áno, tak ako?

Áno, je možné písať backendové testy bez znalosti kódovania. Dá sa to urobiť pomocou nástroja, ako je SoapUI, ktorý umožňuje vytvárať a spúšťať testy bez toho, aby ste museli písať akýkoľvek kód.

  1. Ako vyzerá typická sada testov backendu?

Sada testov backendu zvyčajne obsahuje sadu jednotkových testov, ktoré testujú funkčnosť kódu backendu, ako aj sadu integračných testov, ktoré testujú, ako kód backendu spolupracuje so zvyškom systému.

Priprav sa na interview a naštuduj si najčastejšie kladené otázky o backendovom testovaní.
Priprav sa na interview a naštuduj si najčastejšie kladené otázky o backendovom testovaní.
  1. Čo je SQL injection?

Injection SQL je typ útoku, pri ktorom sa škodlivý používateľ pokúša vložiť kód SQL do vstupu webového formulára s cieľom vykonať dotaz v backendovej databáze. To sa môže použiť na krádež údajov alebo poškodenie databázy.

  1. Aké sú spôsoby, ako zabrániť útokom SQL injection?

Existuje niekoľko spôsobov, ako zabrániť útokom SQL injection:

– Na zostavenie dotazov SQL používajte parametrizované dotazy namiesto spájania reťazcov. Pomôže to zabezpečiť, aby sa do databázy vkladali len zamýšľané údaje.

– Vykonávajte overovanie vstupov pre všetky údaje zadané používateľom. To pomôže zabezpečiť, aby sa do databázy odosielali len platné údaje.

– Namiesto čiernej listiny použite bielu listinu povolených znakov. To pomôže zabezpečiť, aby sa do databázy vkladali len zamýšľané údaje.

  1. Ako môžete zistiť, či sa v tabuľke nachádzajú duplicitné riadky?

Existuje niekoľko spôsobov, ako zistiť, či sa v tabuľke nachádzajú duplicitné riadky. Jedným zo spôsobov je použitie funkcie COUNT(). Táto funkcia vráti počet výskytov riadkov v tabuľke. Ak existujú duplicitné riadky, funkcia COUNT() vráti číslo väčšie ako 1. Ďalším spôsobom, ako zistiť duplicitné riadky, je použitie klauzuly GROUP BY. Táto klauzula zoskupí riadky, ktoré majú rovnaké hodnoty. Ak existujú duplicitné riadky, budú zoskupené.

  1. Aký je rozdiel medzi NULL a 0 v jazyku SQL?

NULL je hodnota, ktorá označuje, že nie sú k dispozícii žiadne údaje, zatiaľ čo 0 je hodnota, ktorá označuje neprítomnosť hodnoty. V jazyku SQL sa NULL používa na označenie toho, že hodnota nie je známa, zatiaľ čo 0 sa používa na označenie toho, že hodnota je známa.

  1. Môžete uviesť niekoľko príkladov reálnych scenárov, v ktorých sa používa testovanie backendu?

Testovanie backendu sa používa na zabezpečenie správneho fungovania komponentov aplikácie na strane servera. Môže to zahŕňať testovanie databázy, testovanie API a testovanie logiky aplikácie.

  1. Aké rôzne fázy zahŕňa testovanie databázy?

Pri testovaní databázy sa uplatňujú štyri hlavné fázy: unit testovanie, integračné testovanie, systémové testovanie a user acceptance testovanie. Pri unit testovaní sa testujú jednotlivé komponenty databázy, aby sa zabezpečilo ich správne fungovanie. Pri integračnom testovaní sa testujú jednotlivé komponenty databázy, aby sa zabezpečilo ich správne fungovanie. Pri testovaní systému sa testuje celý databázový systém, aby sa zabezpečilo, že spĺňa všetky požiadavky. A nakoniec, pri user acceptance testovaní skutoční používatelia testujú systém, aby sa uistili, že je použiteľný a spĺňa ich potreby.

  1. Môžete vysvetliť, čo je to databázová transakcia?

Databázová transakcia je súbor príkazov SQL, ktoré sa vykonávajú spoločne ako jeden celok. Transakcie sa používajú na zabezpečenie konzistentnosti a správnosti údajov v databáze. Ak napríklad prevádzate peniaze z jedného bankového účtu na druhý, chceli by ste použiť transakciu, aby sa buď oba účty aktualizovali správne, alebo aby sa neaktualizoval ani jeden z nich. Takto si môžete byť istí, že údaje v databáze sú správne a konzistentné.

  1. Aký význam má používanie databáz s vlastnosťami ACID?

Databázy s vlastnosťami ACID sú dôležité pre testovanie backendu, pretože pomáhajú zabezpečiť konzistentnosť a presnosť ukladaných údajov. Ak databáza nemá vlastnosti ACID, je pravdepodobnejšie, že dôjde k strate alebo poškodeniu údajov.

Testovacie nástroje pre backend (backend testing tools)

Existuje mnoho nástrojov určených na testovanie backendu, z ktorých niektoré sú:

  • Postman: Na testovanie API cez HTTP požiadavky.
  • RestAssured: RestAssured je knižnica založená na Jave na testovanie RESTful API. Poskytuje intuitívnu syntax na uskutočňovanie volaní API a overovanie odpovedí, vďaka čomu je obľúbenou voľbou na automatizáciu.
  • JUnit, NUnit, PyTest: Na písanie a spúšťanie unit testov.
  • Selenium: Aj keď je častejšie používaný na testovanie frontendu, môže sa použiť aj na integračné testovanie backendu.
  • JMeter: Na výkonnostné testovanie backendu.
  • LoadRunner: Pomáha s testovaním výkonnosti, škálovateľnosti a stability aplikácie.
  • Gatling: Gatling je ďalší výkonný nástroj na testovanie výkonu webových aplikácií vrátane backendových služieb. Je známy svojou účinnosťou pri simulácii vysokého počtu virtuálnych používateľov na záťažové testovanie backendových systémov.
  • SoapUI: SoapUI sa používa na testovanie rozhraní SOAP a REST API. Poskytuje používateľsky prívetivé rozhranie na navrhovanie a vykonávanie testov backendových služieb.
  • K6: K6 je open-source nástroj na testovanie záťaže (load testing), ktorý sa používa na testovanie výkonu rozhraní API, backendových služieb a webových aplikácií.

Backend vs API testing

  • Testovanie backendu je širší pojem, ktorý zahŕňa testovanie celého backendu vrátane rozhraní API, databáz, serverovej logiky a ďalších.
  • Testovanie API je špecifický typ testovania backendu, ktorý sa zameriava výlučne na testovanie rozhraní API.
  • Testovanie backendu zahŕňa širokú škálu komponentov a aspektov vrátane databáz, serverovej logiky, výkonu a zabezpečenia.
  • Testovanie API sa zaoberá koncovými bodmi API, overovaním požiadaviek a odpovedí, autentizáciou, autorizáciou a spracovaním chýb.
  • Nástroje používané na testovanie backendu zahŕňajú rôzne testovacie frameworky, nástroje na testovanie výkonu, nástroje na testovanie bezpečnosti atď.
  • Pri testovaní API sa používajú špecializované nástroje určené výslovne na testovanie API, napríklad Postman a SoapUI.

Backend testing – checklist

  1. Unit Testing :
  • Over, že individuálne komponenty (funkcie, metódy, triedy) backendového kódu fungujú, ako je očakávané.
  • Testuj hraničné prípady, neplatné vstupy a hranice pre každú jednotku.
  • Uisti sa, že unit testy sú nezávislé, izolované a nezávisia na externých faktoroch.
  1. Integration Testing (Integračné testovanie):
  • Testuj integráciu rôznych komponentov backendu (napr. API, služby), aby si zistil, či spolupracujú bezproblémovo.
  • Over tok dát a interakcie medzi rôznymi komponentmi.
  • Kontroluj možné nekonzistencie dát pri integrovaní komponentov.
  1. API Endpoint Testing (Testovanie API koncových bodov):
  • Over, že každý API koncový bod funguje správne a vráti očakávaný stavový kód.
  • Testuj rôzne HTTP metódy (GET, POST, PUT, DELETE) pre každý API koncový bod.
  • Over formáty požiadaviek a odpovedí (napr. JSON, XML) v súlade s špecifikáciami API.
  1. Data Validation and Database Testing (Overovanie dát a testovanie databázy):
  • Uisti sa, že údaje sú správne ukladané, vyhľadávané a aktualizované v databáze.
  • Over, že integritné obmedzenia údajov (napr. unikátne kľúče, cudzie kľúče) sú riadne uplatnené.
  • Testuj pripojenie k databáze, transakcie a vrátenie zmien.
  1. Performance Testing (Testovanie výkonu):
  • Realizuj testovanie zaťaženia, aby si zabezpečil, že backend zvládne očakávanú záťaž od používateľov bez degradácie výkonu.
  • Testuj dobu odozvy backendu a omeškanie za bežných a špičkových zaťažových podmienok.
  • Over, ako sa systém správa pod zaťažením a či sa obnoví korektne.
  1. Security Testing (Testovanie bezpečnosti):
  • Realizuj penetračné testovanie, aby si identifikoval zraniteľnosti a možné riziká pre bezpečnosť v backendovom systéme.
  • Uisti sa, že citlivé údaje sú šifrované a spracovávané bezpečne.
  • Over, že ovládanie prístupu a mechanizmy autentifikácie používateľov sú efektívne a bezpečné.
  1. Error Handling (Spracovanie chýb):
  • Testuj scenáre chýb, aby si zabezpečil, že sú vrátené vhodné kódy chýb a správy.
  • Over, že chybové správy neodhaľujú citlivé informácie.
  • Over mechanizmy zaznamenávania chýb, aby si si uľahčil ladenie a riešenie problémov.
  1. Caching and Performance Optimization (Testovanie cache pamäte a optimalizácia výkonu):
  • Testuj mechanizmy vyrovnávania pamäte, aby si zabezpečil, že zlepšujú výkon, ako je očakávané.
  • Over, že stratégie vyrovnávania pamäte neohrozujú konzistenciu údajov.
  • Skontroluj, či sú optimalizácie výkonu účinne implementované a zlepšujú reakčný čas systému.
  1. Concurrency and Multithreading Testing (Testovanie súbežnosti a viacvláknovosti):
  • Testuj, ako backend zvláda súbežné požiadavky a prístup viacerých používateľov k systému súčasne.
  • Over, že backend zostáva stabilný a reaktívny pri súčasnom prístupe.
  1. Compatibility Testing (Testovanie kompatibility):
  • Testuj backend na rôznych operačných systémoch, prehliadačoch a zariadeniach, aby si zabezpečil kompatibilitu.
  • Uisti sa, že backend funguje správne s rôznymi verziami komponentov tretích strán a knižníc.
  1. API Documentation (Dokumentácia API):
  • Over, že dokumentácia API je presná, aktuálna a komplexná.
  • Uisti sa, že dokumentácia API obsahuje podrobnosti o každom koncovom bode, parametre požiadaviek, formát odpovedí a spracovanie chýb.
  1. Continuous Integration/Deployment (Kontinuálne integrovanie / nasadenie):
  • Integruj testy backendu do procesu CI/CD, aby si zabezpečil automatizované testovanie s každým nasadením novej verzie aplikácie.
  • Over, že automatizované testy backendu sa spúšťajú ako súčasť procesu kontinuálneho integrovania a zlyhávajú, ak testy zlyhajú.
  1. Backup and Recovery Testing (Testovanie zálohovania a obnovovania):
  • Testuj postupy zálohovania a obnovovania, aby si zabezpečil, že údaje možno obnoviť v prípade zlyhania alebo straty údajov.
  1. Logging and Monitoring (Zaznamenávanie a monitorovanie):
  • Over, že sa udalosti a chyby zaznamenávajú správne pre monitorovanie a ladenie.
  • Uisti sa, že protokoly poskytujú dostatočné informácie na diagnostikovanie a riešenie problémov.
  1. Cross-Functionality Testing (Testovanie krížovej funkcionality):
  • Over, že backend funguje správne s inými systémami, integráciami tretích strán alebo externými službami, s ktorými interaguje.
  1. Scalability Testing (Testovanie škálovateľnosti):
  • Testuj schopnosť backendu škálovať horizontálne a vertikálne, aby zvládal zvýšenú záťaž a premávku.
  1. Disaster Recovery Testing (Testovanie obnovy po katastrofe):
  • Over schopnosť systému obnoviť sa po katastrofických zlyhaniach s minimálnym výpadkom a stratou údajov.
  1. Legal and Compliance Testing (Testovanie zákonnosti a zodpovednosti):
  • Uisti sa, že backend spĺňa právne požiadavky a priemyselné normy (napr. GDPR, HIPAA).
  1. User Acceptance Testing (UAT) Support:
  • Spolupracuj s tímom pre kontrolu kvality (QA), aby ste poskytli potrebnú podporu backendu počas testovania prijatia používateľmi.

Testovanie backendu je kľúčovým krokom v procese vývoja softvérových aplikácií. Správne vykonané testy backendu zabezpečujú, že serverové komponenty sú spoľahlivé, výkonné a bezpečné. V tomto článku sme preskúmali rôzne aspekty testovania backendu a vytvorili rozsiahly kontrolný zoznam pre tento proces.

Je dôležité mať na pamäti, že testovanie backendu nie je izolovaným procesom. Spolupráca medzi vývojovými tímami a testovacími tímami, integrovanie testov do procesu CI/CD a neustále zdokonaľovanie testovacích postupov sú kľúčové pre dosiahnutie úspešného výsledku.

Ak si si IT tester alebo automatizovaný tester a zvládaš nemčinu, pozri si naše ponuky zamestnania. Možno ťa niektorá ponuka práce zaujme. Máme skvelé firemné benefity a priateľskú atmosféru vo firme.

O autorovi

Michaela Kojnoková

Agile Test Engineer

Po štúdiu informatiky na ŽU a TUKE som sa najviac ponorila do oblasti automatizácie testovania. Okrem toho sa venujem tvorbe webov, databázam, dátovej analytike, umelej inteligencii a strojovému učeniu. Mám rada cestovanie, šport a najviac si užívam čas strávený v prírode s mojimi blízkymi. LinkedIn

Daj nám o sebe vedieť