
Business & Integration IT konzultant
Existuje súbor, ktorý definuje, čo je v softvéri prijateľné správanie a čo nie. Ide o funkčnú špecifikáciu alebo špecifikáciu požiadaviek. Špecifikácia požiadaviek je dokument, ktorý popisuje, čo má softvér robiť a zahŕňa popis funkčných a nefunkčných požiadaviek.
Špecifikácia požiadaviek je dôležitá pre testovanie softvéru, pretože poskytuje testerom informácie, ktoré potrebujú na návrh a vykonávanie testov. Poďme sa teda pozrieť na to, čo presne je funkčné testovanie – functional testing.
Funkčné testovanie je typ testovania softvéru, pri ktorom sa testujú základné funkcie aplikácie na základe vopred stanoveného súboru špecifikácií. Pri funkčnom testovaní sa každá funkcia testuje zadaním hodnoty, určením výstupu a overením skutočného výstupu s očakávanou hodnotou.
Funkčné testovanie sa vykonáva ako testovanie čiernej skrinky (black box testing), ktoré je prezentované na potvrdenie toho, že funkčnosť aplikácie alebo systému sa správa tak, ako očakávame.
Funkčné testovanie sa aj preto nazýva testovanie čiernej skrinky, pretože sa zameriava skôr na funkcie aplikácie než na skutočný kód. Výsledky testu sú binárne: test prešiel alebo neprešiel (pass/failed).
Testovanie funkčnosti sa môže vykonávať prostredníctvom dvoch populárnych techník:
Pri funkčnom testovaní postupujú IT testeri podľa nasledujúcich krokov:
Pozri si aj functional testing checklist, pri ktorom určite na nič nezabudneš.
Funkčné testy overujú, či sú splnené špecifikované funkčné požiadavky, zatiaľ čo nefunkčné testy sa môžu použiť na testovanie mimo funkcií, ako je výkon, bezpečnosť, škálovateľnosť alebo kvalita aplikácie. Inak povedané, funkčné testovanie sa zaoberá tým, či kľúčové funkcie v aplikácií fungujú a nefunkčné testy sa viac zaoberajú tým, ako operácie prebiehajú, čiže ich zaujíma výkon, bezpečnosť, použiteľnosť a ďalšie.
Medzi druhy funkčného testovania patrí: Unit Testing, Integration Testing, System Testing, User Acceptance Testing, Regression Testing, Sanity Testing atď.
Zatiaľ čo nefunkčné testovanie zahŕňa: Performance Testing, Security Testing, Usability Testing, Compatibility Testing, Load Testing, Stress Testing, Volume Testing, Penetration Testing, Migration Testing.
Čo sa týka kritérií testu pri funkčnom testovaní, pass/fail kritériá sú často jednoduché a vychádzajú z očakávaných výsledkov. Pri nefunkčnom testovaní však pass/fail kritériá môžu zahŕňať prahové hodnoty alebo referenčné hodnoty (napr. čas odozvy by mal byť nižší ako 2 sekundy).
Poznáme rôzne techniky funkčného testovania:
Príklad: reštaurácia potrebuje aplikáciu, ktorá pomôže zákazníkom objednať si jedlo pri stole bez obsluhy. Vývojár vytvorí unit test na preskúmanie funkcie „pridať k objednávke“. Ostatné funkcie, ako napríklad „odstrániť z objednávky“ alebo „odoslať objednávku“, by tiež prešli unit testovaním.
Príklad: V bankovej aplikácii si používatelia môžu zriadiť sporiaci účet. Obsahuje možnosť prevodu peňazí z ich hlavného účtu na sporiaci účet. Keďže ide o samostatné moduly, testeri musia vykonať integračné testovanie, aby zabezpečili, že transakcie medzi nimi prebehnú hladko a správne.
Príklad: Spoločnosť poskytujúca verejné služby vytvorila aplikáciu s funkciou nahlasovania výpadkov v domácnostiach zákazníkov. Táto funkcia nahlási adresu a ďalšie dôležité informácie, ako aj upozorní majiteľa domu, keď je dispečer na ceste na pomoc. Smoke testovanie overí túto funkciu na základnej úrovni, aby sa zabezpečilo, že pri nahlásení výpadku sa odošlú správne informácie, aby sa dispečer mohol dostaviť na miesto včas.
Príklad: Predstavme si, že zákazník si kupuje nový pár topánok v online obchode s obuvou. UAT testy overia, či zákazník môže úspešne pridať požadované topánky do nákupného košíka a zaplatiť.
Príklad: Zákazník sa pokúša zaplatiť objednávku cez Paypal v aplikácii na online nakupovanie. Počas interface testingu sa overí, či sa aplikácia Paypal správne vyplní a prebehne platba.
Príklad: Skupina používateľov má pri používaní aplikácie na online nakupovanie splniť súbor úloh napríklad: používateľ je požiadaný, aby našiel konkrétny výrobok, napríklad pár bielych bežeckých topánok. Používateľ je pozorovaný pri hľadaní výrobku a pri navigácii v aplikácii. Ďalej je používateľ požiadaný, aby pridal tovar do nákupného košíka. Používateľ je pozorovaný, ako pridáva položku do košíka a prechádza k pokladni a k dokončeniu procesu pokladnice. Posudzuje sa intuícia zákazníka a schopnosť navigovať sa v systéme.
Príklad: bola vytvorená fitnes aplikácia s možnosťami, ako je nastavenie a sledovanie mesačných fitnes cieľov, výpis fitnes metrík, vytváranie osobných cvičebných plánov a integrácia inteligentných hodiniek. Každá z týchto funkcií sa bude posudzovať jednotlivo, ako aj všetky spolu pri testovaní systému.
Príklad: Aplikácia na rozvoz jedla pridala funkciu, ktorá používateľom pomáha pridávať viacero zľavových kódov naraz. Je potrebné vykonať regresný test, aby sa zabezpečilo, že proces pokladnice a platby nebude ovplyvnený.
Príklad: Na webovej stránke elektronického obchodu si používatelia nemôžu pridať konkrétny výrobok do košíka, aj keď je na sklade. Po odstránení problému sa vykoná testovanie správnosti, aby sa zabezpečilo, že funkcia „pridať do košíka“ skutočne funguje.
Príklad: Developer testuje funkciu, ktorá vypočíta súčet dvoch čísel. Preskúma kód funkcie, aby identifikoval potenciálne chyby alebo nedostatky. Tester vytvorí testovacie prípady, ktoré pokrývajú všetky možné vstupy a výstupy funkcie. Vykoná testovacie prípady a sleduje výsledky. Ak sa nájdu nejaké chyby, developer kód debugguje a opraví.
Príklad: Tester testuje aplikáciu ATM. Tester preskúma požiadavky na aplikáciu ATM, aby pochopil jej funkčnosť. Vytvorí testovacie prípady, ktoré pokrývajú všetky hlavné funkcie aplikácie ATM. Vykoná testovacie prípady a sleduje výsledky. Ak sa zistia nejaké chyby, tester ich nahlási vývojovému tímu.
Príklad: Tester testuje databázovú aplikáciu. Preskúma databázovú schému, aby pochopil štruktúru databázy. Vytvorí testovacie údaje, ktoré pokrývajú všetky rôzne typy údajov, ktoré budú uložené v databáze. Vykonáva testovacie prípady, ktoré vkladajú, aktualizujú a odstraňujú údaje z databázy. Tester overuje, či sú údaje v databáze presné a úplné. Ak sa zistia problémy s výkonom, tester ich nahlási vývojovému tímu.
Príklad: Predpokladajme, že developer pracuje na novej funkcii webovej aplikácie. Dokončil kódovanie funkcie a chce sa uistiť, že funguje podľa očakávania. Namiesto písania formálnych testovacích prípadov môže začať používať funkciu náhodne, klikaním na rôzne tlačidlá a zadávaním rôznych údajov. Toto je príklad ad hoc testovania.
Príklad: Zvažujme aplikáciu online bankovníctva. Počas transakcie môže dôjsť k výpadku siete alebo k poruche servera. Testovanie obnovy by zahŕňalo simuláciu týchto scenárov a overenie, či aplikácia: elegantne zvládne prerušenie, aplikácia by nemala náhle zamrznúť alebo zobraziť chybové hlásenia. Mala by zachovávať integritu údajov o transakciách a zabezpečiť, aby nedošlo k strate alebo poškodeniu informácií. Aplikácia by mala poskytnúť používateľovi jasné pokyny alebo možnosti na obnovenie transakcie alebo vykonanie alternatívnych činností. Po odstránení prerušenia by aplikácia mala obnoviť svoju normálnu funkčnosť bez toho, aby sa musel vykonať úplný reštart.
Príklad: Ide o ručné preskúmanie kódu riadok po riadku s cieľom identifikovať potenciálne chyby alebo nedostatky.
Príklad: Tester testuje webovú aplikáciu. Najskôr preskúma časť kódu webovej aplikácie, aby pochopil jej všeobecnú štruktúru a funkčnosť. Potom vytvorí testovacie prípady, ktoré pokrývajú známe aj neznáme oblasti webovej aplikácie. Neskôr vykoná testovacie prípady a sleduje výsledky. Tester používa nástroje na analýzu kódu na potenciálne chyby alebo nedostatky. Ak sa nájdu nejaké chyby, tester ich nahlási vývojovému tímu.
Príklad: Aplikácia zdravotníckych služieb má funkciu, ktorá pomáha pacientom naplánovať stretnutie s lekármi podľa ich výberu. Súčasťou, ktorú treba otestovať, je spôsob, akým systém zobrazuje „blízke“ nemocnice alebo zdravotnícke strediská pomocou údajov z GPS používateľa. Na testovanie tejto funkcie je profil používateľa stub a ovládačom sú dostupné rozvrhy poskytovateľov zdravotnej starostlivosti.
Funkčné testovanie API je typ testovania softvéru, ktorým sa overuje funkčnosť rozhraní na programovanie aplikácií (API). Pomáha zabezpečiť, aby aplikácia a rozhranie API fungovali podľa očakávaní pri konkrétnom pracovnom zaťažení, ktoré dokážu zvládnuť.
Rozhrania API sú motormi, ktoré poháňajú naše softvérové aplikácie. Umožňujú rôznym systémom navzájom komunikovať a bezproblémovo prenášať údaje. Ale tak ako každý iný motor, aj API sa môžu pokaziť a nesprávne fungovať, ak nie sú správne otestované.
Práve tu prichádza na rad funkčné testovanie API. Zahŕňa testovanie správania a funkčnosti rozhrania API s cieľom zabezpečiť, aby fungovalo podľa očakávaní, spĺňalo špecifikované požiadavky a vracalo správnu odpoveď pri rôznych scenároch.
Príklad: over, či API dokáže načítať informácie o lete na základe zadaných parametrov.
Očakávaný výstup sa skontroluje prostredníctvom tela Status a Response, ako je uvedené nižšie:
Okrem toho, keď zákazníci potvrdia svoju rezerváciu a rozhodnú sa zaplatiť cenu letenky pomocou akejkoľvek online platobnej platformy, ako je Stripe alebo Paypal, testeri musia otestovať, či cestovná aplikácia dokáže komunikovať s platobnou službou, aby sa zabezpečila úspešná a bezpečná platba pre používateľov.
Selenium je open-source projekt zastrešujúci celý rad nástrojov a knižníc vyvinutých s cieľom podporiť automatizáciu web aplikácií.
Nástroj QTP je nástroj určený na vykonávanie automatizovaného funkčného testovania bez potreby monitorovať systém.
JUnit je open-source framework na unit testovanie pre programovací jazyk Java. Používa sa na písanie a vykonávanie automatizovaných testovacích prípadov.
Je to jeden z popredných nástrojov na testovanie SOAP a webových služieb. Umožňuje jednoduché a rýchle vytváranie a vykonávanie funkčných, regresných a záťažových testov.
Cucumber je open-source testovací nástroj napísaný v jazyku Ruby.
Ak sa chceš o funkčnom testovaní naučiť ešte niečo viac, prípadne sa pripraviť na pohovor, odporúčam prejsť si zopár otázok na interview, pri ktorých sa hneď dozvieš aj odpoveď. Otázky nájdeš tu:
Template pre funkčné testovanie si môžeš stiahnuť tu – functional testing template.
Ak si IT tester alebo automatizovaný tester a vieš po nemecky, pozri si naše firemné benefity a reaguj na pracovné ponuky.