
Business & Integration IT konzultant
Predstav si, že šoféruješ auto, motor hučí, kolesá sa točia a vietor ti fúka do vlasov. Všetko sa môže zdať fajn, kým nešliapneš na brzdu, pričom tvoje auto sa zastaví až po 10 sekundách. Vykonanie dôkladného testovania môže pomôcť odhaliť takéto nedostatky. Nefunkčné testovanie ti v tomto prípade pomôže otestovať reakčný čas brzdového systému, ako dobre funguje, aká je jeho rýchlosť, jeho výkon a podobne.
Nefunkčné testovanie je kľúčovým aspektom vývoja softvéru, ktorý sa často prehliada. Zatiaľ čo funkčné testovanie zabezpečuje, aby softvér obsahoval funkčné požadované funkcie, nefunkčné testovanie sa zameriava na aspekty, ako sú výkon, bezpečnosť, použiteľnosť, kompatibilita a škálovateľnosť. Ignorovanie nefunkčného testovania môže predstavovať významné riziká vrátane zníženého výkonu systému, bezpečnostných zraniteľností, zlého používateľského zážitku a obmedzenej škálovateľnosti.
Funkčné testovanie kontroluje procesy aplikácie na základe súboru požiadaviek alebo špecifikácií. Nefunkčné testovanie hodnotí vlastnosti aplikácie, ktoré nie sú kritické pre funkčnosť, ale prispievajú k zážitku koncového používateľa, ako napríklad výkon a spoľahlivosť systému pri záťaži.
Jednoducho povedané, nefunkčné testovanie kontroluje skôr kvalitu produktu než jeho funkcie. Vo svete vývoja softvéru je nefunkčné testovanie rovnako potrebné ako funkčné testovanie. Bez neho môže systém v kontrolovanom prostredí fungovať úplne bezchybne, ale v reálnom svete môže zlyhať.
Non-functional testing sa vykonáva po tom, ako prebehlo unit testovanie, integračné testovanie a funkčné testovanie. Keď testeri zistia, že softvér funguje podľa očakávaní, vykonajú nefunkčné testovanie, aby posúdili, či spĺňa aj nefunkčné parametre. Je to jedna z posledných fáz testovania softvéru pred používateľským akceptačným testovaním a finálnym vydaním produktu do produkcie.
Nefunkčné testovanie je zamerané na dosiahnutie týchto cieľov:
1) Bezpečnosť: Tento parameter definuje, ako je systém zabezpečený proti úmyselným a náhlym útokom z vnútorných a vonkajších zdrojov. Testuje sa to prostredníctvom testovania bezpečnosti.
2) Spoľahlivosť: Miera, do akej akýkoľvek softvérový systém nepretržite vykonáva stanovené funkcie bez poruchy. Testuje sa prostredníctvom testovania spoľahlivosti.
3) Obnoviteľnosť: Tento parameter kontroluje, či softvérový systém naďalej funguje a či sa zotaví v prípade zlyhania systému. Toto sa kontroluje testovaním obnovy.
4) Dostupnosť: Parameter určuje mieru, do akej sa používateľ môže spoľahnúť na systém počas jeho prevádzky. Tento parameter sa kontroluje pomocou testovania stability.
5) Použiteľnosť: Používateľ sa môže ľahko učiť, pracovať, pripravovať vstupy a výstupy prostredníctvom interakcie so systémom. Toto sa kontroluje testovaním použiteľnosti.
6) Škálovateľnosť: Tento pojem sa vzťahuje na stupeň, v ktorom môže akákoľvek softvérová aplikácia rozšíriť svoju spracovateľskú kapacitu s cieľom uspokojiť nárast dopytu. Toto sa overuje testovaním škálovateľnosti.
7) Interoperabilita: Tento nefunkčný parameter kontroluje rozhrania softvérového systému s inými softvérovými systémami. Toto sa kontroluje testovaním interoperability.
8) Efektívnosť: Do akej miery dokáže akýkoľvek softvérový systém zvládnuť kapacitu, množstvo a čas odozvy.
9) Flexibilita: Tento pojem sa vzťahuje na jednoduchosť, s akou môže aplikácia pracovať v rôznych hardvérových a softvérových konfiguráciách. Ako napríklad minimálne požiadavky na pamäť RAM, procesor.
10) Portabilita: Flexibilita softvéru pri prenose z jeho súčasného hardvérového alebo softvérového prostredia.
11) Opätovná použiteľnosť: V tomto prípade ide o časť softvérového systému, ktorú možno previesť na použitie v inej aplikácii.
Testy výkonnosti zabezpečujú niekoľko prvkov kvality softvéru. Overujú, či je rýchly, škálovateľný, stabilný a spoľahlivý. Tieto testy môžu nájsť problémy v návrhu softvéru a výkonnosti architektúry.
Zvyčajne sa vykonáva: meranie času odozvy, identifikácie citlivých miest, lokalizácie miest zlyhania
Záťažové testy overujú, ako sa softvér správa v bežných aj hraničných podmienkach, akú pracovnú záťaž dokáže softvér zvládnuť, kým sa negatívne neovplyvní jeho výkonnosť. Záťažové testy môžeš vykonať spustením viacerých aplikácií súčasne, vystavením servera vysokej prevádzke alebo stiahnutím veľkého množstva súborov.
Záťažové testy sa používajú na zabezpečenie rýchleho a škálovateľného softvéru.
Záťažové testy overujú, ako sa softvér správa za neobvyklých podmienok. Tým sa určuje hranica, pri ktorej sa softvér pokazí. Je dôležité zistiť, čo sa stane, keď je systém pod záťažou. Zobrazí sa správna chybová správa? Zlyhá systém? Ako sa zotaví?
Záťažové testy pomáhajú testerom analyzovať, čo sa stane, keď systém zlyhá. Tým sa zabezpečí, aby bol softvér obnoviteľný, stabilný a spoľahlivý.
Objemové testy slúžia na overenie toho, čo sa stane s výkonom systému, keď sa do databázy pridá obrovský objem údajov. Robí sa to s cieľom zistiť, aké problémy sa môžu vyskytnúť pri rastúcich objemoch údajov. Je známe aj ako záplavové testovanie.
Objemové testy overujú, či systémy reagujú na určité objemy údajov podľa očakávania. Je to dôležité na zabezpečenie výkonu a stability.
Bezpečnostné testy kontrolujú softvér s cieľom nájsť chyby alebo zraniteľnosti, ktoré môžu ohroziť údaje. Cieľom bezpečnostných testov je identifikovať všetky potenciálne bezpečnostné riziká alebo hrozby a zabezpečiť, aby produkt nebol zraniteľný voči hackerským útokom, únikom údajov alebo iným typom bezpečnostných problémov.
Medzi bežné bezpečnostné testy patria: skenovanie zraniteľností, skenovanie zabezpečenia, penetračné testovanie, posúdenie rizík, bezpečnostné audity, etický hacking
Testovaním aktualizácie a inštalácie sa overuje, či softvér bude správne fungovať na všetkých počítačoch. Testovanie aktualizácie sa teda vykonáva pre existujúcich používateľov. A testovanie inštalácie sa vykonáva pre nových používateľov.
Testy obnovy určujú, ako rýchlo sa softvér dokáže obnoviť po páde alebo zlyhaní. Robí sa to tak, že systém prinútime zlyhať.
Tento typ testovania sa vykonáva s cieľom zistiť, čo sa stane so softvérom:
Proces nefunkčného testovania zvyčajne pozostáva z niekoľkých kľúčových fáz. Hoci sa konkrétna terminológia alebo názvoslovie môžu líšiť, hlavné kroky zahrnuté do procesu nefunkčného testovania zvyčajne zahŕňajú:
V prvej fáze procesu testovania tím QA spolupracuje so zainteresovanými stranami, architektmi a vývojármi, aby pochopil a zdokumentoval nefunkčné požiadavky systému. Zahŕňa identifikáciu výkonnostných očakávaní, bezpečnostných kritérií, smerníc použiteľnosti, potrieb škálovateľnosti a ďalších relevantných nefunkčných atribútov.
Na základe zozbieraných požiadaviek testovací tím vytvorí komplexný plán testovania, v ktorom sú uvedené ciele nefunkčného testovania, rozsah, testovacie scenáre, nastavenie testovacieho prostredia a požiadavky na zdroje. Plán tiež definuje prístup k testovaniu, testovacie techniky a nástroje.
V tejto fáze tím QA navrhuje nefunkčné testovacie prípady a testovacie skripty na základe identifikovaných testovacích scenárov. Návrh testov zahŕňa určenie testovacích údajov, výber vhodných techník nefunkčného testovania a načrtnutie krokov na vykonanie testov.
Nefunkčné testy sa vykonávajú podľa plánu testov a návrhu testov. Táto fáza zahŕňa nastavenie testovacieho prostredia, konfiguráciu potrebných nástrojov a spustenie testov. Testeri monitorujú a merajú výkonnosť, bezpečnosť, použiteľnosť a ďalšie nefunkčné aspekty systému.
Po vykonaní testov tím QA analyzuje výsledky testov a porovnáva ich s definovanými nefunkčnými požiadavkami. Akékoľvek odchýlky, problémy alebo chyby sa identifikujú, zdokumentujú a nahlásia. Pripravia sa správy o testoch.
Ak sa vo fáze analýzy identifikujú nefunkčné chyby, zaznamenajú sa, priradia a spravujú v systéme na sledovanie chýb. Vývojový tím tieto chyby rieši a po ich odstránení sa dotknuté nefunkčné testy vykonajú znova, aby sa overili opravy a zabezpečilo, že systém teraz spĺňa požadované nefunkčné kritériá.
V záverečnej fáze testovací tím pripraví správu o ukončení testov, v ktorej zhrnie celkové činnosti nefunkčného testovania, výsledky a získané skúsenosti. Dokumentácia sa aktualizuje a záverečné výstupy vrátane testovacích artefaktov a správ sa archivujú pre budúce použitie.
Nástroje na testovanie zaťaženia
Nástroje ako Apache JMeter, Gatling a LoadRunner pomáhajú simulovať vysoké zaťaženie používateľmi a merať výkon systému pri veľkej prevádzke. Generujú virtuálne požiadavky používateľov, monitorujú časy odozvy a analyzujú správanie systému s cieľom identifikovať citlivé miesta výkonu (bottlenecks).
Nástroje na testovanie bezpečnosti
Bezpečnostné nástroje ako OWASP ZAP, Burp Suite a Nessus pomáhajú pri identifikácii zraniteľností a slabých miest v zabezpečení systému. Vykonávajú skenovanie zraniteľností, penetračné testovanie a analýzu kódu s cieľom posúdiť odolnosť systému voči potenciálnym bezpečnostným hrozbám.
Nástroje na monitorovanie výkonu
Nástroje na monitorovanie výkonu poskytujú prehľad o výkone systému v reálnom čase. Možnosti ako New Relic, AppDynamics a Dynatrace monitorujú kľúčové metriky výkonu, sledujú využitie zdrojov a pomáhajú identifikovať problémy s výkonom v produkčných prostrediach.
Nástroje na testovanie použiteľnosti
Nástroje na testovanie použiteľnosti vrátane UserTesting, Morae a Optimal Workshop pomáhajú pri hodnotení používateľského zážitku a použiteľnosti systému. Tieto nástroje umožňujú vytvárať testy použiteľnosti, nahrávky obrazoviek a zhromažďovať spätnú väzbu používateľov s cieľom posúdiť jednoduchosť používania systému a spokojnosť používateľov.
Nástroje na správu testov
Nástroje JIRA, TestRail, Asana a qTest ponúkajú možnosti na správu a sledovanie činností nefunkčného testovania. Pomáhajú pri plánovaní testov, správe testovacích prípadov, sledovaní chýb a reportovaní, čím uľahčujú efektívne riadenie testov v celom procese nefunkčného testovania.
Nástroje na testovanie zhody
Nástroje na testovanie zhody, ako napríklad OWASP Dependency-Check, SonarQube a Veracode, pomáhajú zabezpečiť súlad s priemyselnými normami, predpismi a osvedčenými postupmi kódovania. Analyzujú kód, závislosti a konfigurácie s cieľom identifikovať potenciálne problémy so súladom a poskytnúť odporúčania na zlepšenie.
Predstav si populárnu webovú stránku elektronického obchodu, na ktorej sa nepodarilo vykonať nefunkčné testovanie. Výsledkom je, že napr. počas Black Friday výpredaja sa webová stránka zrúti v dôsledku náhleho prílevu používateľov. To nielenže poškodzuje povesť spoločnosti, ale má za následok aj stratu príjmov.
Zanedbanie nefunkčného testovania otvára dvere zraniteľnostiam, ktoré môžu hackeri zneužiť. Vezmi si bankovú aplikáciu, bez správneho šifrovania alebo overovacích opatrení sa citlivé údaje zákazníkov stávajú ľahkým cieľom pre kyberzločincov.
Používateľská skúsenosť (UX) zohráva kľúčovú úlohu pri úspechu každej softvérovej aplikácie. Predstav si mobilnú aplikáciu, ktorej načítanie trvá celú večnosť, alebo webovú stránku s neprehľadným rozložením. Používatelia takéto aplikácie rýchlo opustia a budú hľadať alternatívy, ktoré ponúkajú plynulejšie a intuitívnejšie prostredie.
V dnešnom multiplatformovom svete musí byť softvér kompatibilný s rôznymi operačnými systémami, prehliadačmi a zariadeniami. Zanedbanie nefunkčného testovania v tomto aspekte môže viesť k problémom s kompatibilitou. Napríklad aplikácia na streamovanie videa, ktorá funguje len na určitých zariadeniach, alebo webová aplikácia, ktorá sa v určitých prehliadačoch pokazí.
S rastom podniku rastie aj jeho používateľská základňa. Zanedbanie nefunkčného testovania škálovateľnosti môže vyústiť do scenára nočnej mory. Zoberme si cloudovú softvérovú službu, ktorá zažíva rýchlu expanziu bez adekvátneho testovania škálovateľnosti. Systém sa zrazu stane preťaženým, čo vedie k častým pádom a výpadkom.
V roku 2018 aj 2019 sa pri podujatí Prime Day spoločnosti Amazon vyskytli technické problémy. Zákazníci zaznamenali spomalenie webových stránok, nefunkčné odkazy a ťažkosti pri dokončovaní nákupov. Tieto incidenty poukázali na kritickosť nefunkčného testovania vrátane testovania výkonnosti a plánovania kapacity, aby sa zvládol nárast návštevnosti a zabezpečil bezproblémový nákupný zážitok počas podujatí s vysokým dopytom.
V roku 2018 čelila spoločnosť Facebook veľkej kontroverzii, keď sa ukázalo, že osobné údaje miliónov používateľov boli bez súhlasu zhromaždené politickou konzultačnou spoločnosťou Cambridge Analytica. Tento incident vrhol svetlo na význam nefunkčného testovania v súvislosti so súkromím a bezpečnosťou údajov.
Netflix intenzívne investuje do nefunkčného testovania, aby zabezpečil bezproblémový zážitok zo streamovania. Vďaka testovaniu výkonnosti, škálovateľnosti a záťaže dokáže Netflix zvládnuť obrovskú návštevnosť používateľov a poskytovať obsah bez prerušenia.
Google ako technologický gigant chápe dôležitosť nefunkčného testovania pri poskytovaní spoľahlivého a efektívneho používateľského zážitku. Ich vyhľadávač a rôzne aplikácie prechádzajú prísnym testovaním, aby sa zabezpečil optimálny výkon, bezpečnosť a kompatibilita. Vďaka tomu sa Google stal jedným z najobľúbenejších vyhľadávačov.
Na zabezpečenie efektívneho nefunkčného testovania je potrebné zvážiť niekoľko osvedčených postupov:
Test Case # | Test Case | Doména |
1 | Čas načítania aplikácie by nemal byť dlhší ako 5 sekúnd pri súčasnom prístupe 1000 používateľov | Performance Testing |
2 | Softvér by sa mal dať nainštalovať na všetky verzie systémov Windows a Mac | Compatibility Testing |
3 | Všetky webové obrázky by mali mať alt tag | Accessibility testing |
Non-functional testing je komplexný prístup, ktorý pomáha zabezpečiť, aby bola aplikácia optimalizovaná pre používateľský zážitok a spĺňala potrebné normy kvality. Pomáha vývojárom identifikovať a riešiť potenciálne problémy ešte pred zverejnením aplikácie. Týmto spôsobom sa znižuje riziko zlyhania a zabezpečuje sa, že aplikácia splní očakávania používateľov. Netreba na ňho teda zabúdať, lebo svoj produkt zbytočne vystavíš rizikám.
Ak vieš po nemecky a si IT tester alebo automatizovaný tester, pozri si naše firemné benefity a reaguj na voľné pracovné miesta.