
Business & Integration IT konzultant
Odolnosť testovacieho prostredia je dôležitým faktorom pre kvalitu testovania. Odolné testovacie prostredie bude odolné voči chybám a útokom, čo pomôže zabezpečiť, že softvér bude testovaný dôkladne a efektívne. V tomto článku sa dozvieš, ako vybudovať testovacie prostredie, ktoré bude odolné voči chybám a útokom.
Keď sú softvérové testy navrhnuté, potrebujú rozhranie, v ktorom sa budú vykonávať. Toto rozhranie sa nazýva testovacie prostredie (angl. testing environment). Vytvára sa integráciou hardvéru, softvéru, správnych sieťových konfigurácií a údajov potrebných na vykonávanie testov. Testovacie prostredie musí v podstate kopírovať produkčné prostredie (tzn. skutočné zariadenie a prehliadač, na ktorých sa bude softvér spúšťať).
Testovacie prostredie ti umožňuje vytvoriť identické prostredie vždy, keď potrebuješ otestovať svoj produkt. Je to najdôležitejší nástroj pre testera, aby mal dôveru vo výsledky testovania.
Úplne netestovaný softvér nemožno zverejniť, a to ani na účely beta testovania. Musí sa vykonať prinajmenšom unit, integračné, výkonnostné (performance testing) a záťažové testovanie – hoci zvyčajne je testovanie oveľa rozsiahlejšie.
Tieto testy sa musia vykonávať v prostredí, ktoré čo najvernejšie napodobňuje podmienky reálneho používateľa. Testovacie prostredia robia práve toto a umožňujú QA identifikovať chyby, nekompatibility a iné problémy.
Po zistení chýb môžu testeri a vývojári upraviť údaje bez toho, aby to ovplyvnilo skutočných používateľov alebo ich skúsenosti. Povedzme napríklad, že sa testuje aktualizácia bankovej aplikácie. Nebolo by najlepším postupom presúvať skutočné peniaze na účtoch skutočných zákazníkov, aby sa otestovala jej účinnosť?
S testovacím prostredím však môžu testeri zodpovední za kvalitu vykonávať všetky akcie, ktoré chcú, hrať sa s aplikáciou a testovať základné funkcie bez toho, aby sa obávali dôsledkov v reálnom svete.
Vzhľadom na obrovský počet zariadení, verzií systémov Android a iOS a prehliadačov musí testovacie prostredie zabezpečiť kompatibilitu s viacerými kombináciami zariadení, prehliadačov a operačných systémov.
V takýchto prípadoch je zvyčajne najlepšie použiť ako testovacie prostredie skutočné zariadenia. Je to predovšetkým preto, že emulátory a simulátory neponúkajú všetky funkcie skutočného zariadenia a prehliadača, s ktorými bude musieť softvér pracovať. Emulátor napríklad neumožňuje testerom replikovať stav vybitej batérie, slabý sieťový signál alebo testovanie geolokácie. Preto neexistuje spôsob, ako otestovať aplikáciu v neoptimálnych podmienkach. Aplikácia však musí fungovať dobre, aby poskytovala vysoké štandardy používateľskej skúsenosti, najmä v takýchto situáciách.
Každé testovacie prostredie alebo QA environment je vytvorené kombináciou nasledujúcich prvkov:
Dobré testovacie prostredie má tieto vlastnosti:
Testovacie prostredia majú mnoho výhod, ako napríklad:
Správa testovacieho prostredia je v súčasnosti zložitý a nákladný proces. Ak chceš z testovania vyťažiť maximum, musíš zabezpečiť, aby bolo tvoje testovacie prostredie vhodne vybavené a spravované. To však nie je vždy jednoduché. Mnohé podniky narážajú na tri bežné problémy, ktoré ovplyvňujú ich testovacie prostredie.
Jednou z kritických výziev pri správe testovacieho prostredia je náročnosť riadenia zdrojov. Testovacie prostredie často obsahuje fyzické a virtuálne zdroje a je potrebné spravovať oboje.
Medzi zdroje patria servery, úložiská a sieťová infraštruktúra. Tím musí zabezpečiť, aby bolo prostredie vybudované a udržiavané vhodným spôsobom. Okrem toho musí zabezpečiť, aby dokázalo prenášať zdroje do ďalších verzií a testovania.
Ďalšou výzvou je správa zmien v codebase. Postupom času sa napríklad do prostredia pridávajú nové zdroje alebo nové verzie existujúcich zdrojov. Keď vykonáš tieto zmeny, tím musí mať spôsob, ako ich sledovať a dokumentovať.
Komunikácia je kľúčom k úspechu, aspoň sa to hovorí. Nedostatočná komunikácia alebo spolupráca medzi produktovými manažérmi alebo manažérmi QA a testermi môže viesť k vynechaniu kritických oblastí aplikácie alebo k prehliadnutiu kľúčových obchodných rizík.
Spustenie testov na živých údajoch si vyžaduje správne plánovanie a nastavenie infraštruktúry. Nepríjemná strata údajov alebo poškodenie inštancií môže testy úplne zničiť.
Všetci členovia vývojového tímu by mali mať k dispozícii najaktuálnejšie testovacie údaje. Nekonzistentné dáta, ktoré vznikajú v dôsledku zle nakonfigurovaných testovacích prostredí, môžu viesť k tomu, že tímy zbytočne vynaložia úsilie na inak vyriešené problémy.
Slúži na integráciu jednotlivých softvérových komponentov a testovanie výkonnosti integrovaného systému. Integračné testy kontrolujú, či systém funguje tak, ako má – podľa dokumentov s požiadavkami.
V nastavení DevOps dochádza k integrácii viackrát denne, čo znamená, že integračné prostredie sa bude používať takmer nepretržite. Prirodzene, musí byť modelované tak, aby čo najviac kopírovalo produkčné prostredie.
Slúži na overenie toho, ako softvér funguje v porovnaní s vopred určenými normami. Tieto ciele môžu siahať od času odozvy, stability a kompatibility až po priepustnosť a súbežnosť. Závisí to od toho, čo sa aplikácia snaží ponúknuť svojim používateľom.
Testovanie výkonu je široký pojem a zahŕňa rôzne kategórie testov – záťažové, stresové, objemové, breakpointové a podobne. Výkonnostné testy v podstate fungujú na každej funkcii a identifikujú citlivé miesta alebo obmedzenia používateľa.
Vo všeobecnosti si výkonnostné testy vyžadujú značné množstvo času a finančných prostriedkov. Preto je najlepšie nastaviť prostredie QA a spustiť viacero testov súčasne, zvyčajne vtedy, keď bola v softvéri implementovaná významná zmena. Výkonnostné testy má zmysel vykonávať aj pred cyklom vydania softvéru.
Slúži na kontrolu, či softvér nemá bezpečnostné medzery, nedostatky alebo zraniteľnosti týkajúce sa autentifikácie, dôvernosti, autorizácie a zhody.
Prostredie na testovanie bezpečnosti QA vytvárajú interní a externí bezpečnostní experti, ktorí skúmajú softvér, aby zistili, ktoré časti by pravdepodobne mohli byť terčom útokov a akými prostriedkami môžu takéto hrozby prísť.
Slúži na zavedenie stresorov, ktoré môžu spôsobiť zlyhanie softvéru. Zámerom testovania chaosu je otestovať odolnosť systémov v reálnom svete. Úspešné testy chaosu identifikujú oblasti nestability a zabezpečujú, aby sa softvér neuspokojil. Pomáha tiež testerom a vývojárom uvedomiť si kritické závislosti systémov a hlavné uzly ich možného zlyhania.
Prostredia na testovanie chaosu musia byť nakonfigurované na škálovanie a vysokú dostupnosť. Testeri často vykonávajú testy chaosu spolu s výkonnostnými testami, preto je možné vykonávať obidva testy v tom istom rozhraní.
Akceptačné alebo používateľské testovanie sa vykonáva s cieľom skontrolovať, či aplikácia spĺňa obchodné požiadavky koncových používateľov. Ide o záverečnú fázu testovania. Ak vlastnosti a funkcie aplikácie vyhovujú koncovému používateľovi, aplikácia sa presunie do produkčného prostredia.
V tomto prostredí sa na aplikácii vykonáva testovanie end-to-end po úspešnej integrácii všetkých modulov. Cieľom alfa testovania je zabezpečiť, aby aplikácia fungovala podľa očakávaní klienta.
V prostredí beta testovania sa aplikácia uvoľní pre obmedzený počet používateľov. Používatelia v reálnom svete vystavujú aplikáciu záťaži, aby sa zabezpečilo, že produkt funguje podľa zámeru a spĺňa požiadavky koncových používateľov. Ide o posledné testovacie prostredie pred releasnutím finálnej aplikácie na komerčné použitie. Tu je potrebné prostredie na testovanie typu open-source.
Pokiaľ ide o vývoj softvéru, existuje niekoľko IT prostredí, ktoré sú zvyčajne potrebné na zabezpečenie kvality a efektívnosti softvéru. Medzi tieto prostredia patrí vývojové prostredie, testovacie prostredie a prostredie staging.
Development environment (vývojové prostredie) je prostredie, v ktorom vývojový tím vytvára a testuje softvér. Zvyčajne je oddelené od produkčného prostredia, aby sa zabránilo negatívnemu vplyvu na živý systém. Vo vývojovom prostredí môžu vývojári testovať nové vlastnosti a funkcie bez rizika poškodenia produkčného prostredia.
Test environment (testovacie prostredie) – V testovacom prostredí sa testuje softvér, aby sa zabezpečilo, že spĺňa požiadavky a špecifikácie. Toto prostredie je zvyčajne presnou kópiou produkčného prostredia a používa sa na simuláciu rôznych scenárov a dôkladné testovanie softvéru.
Staging environment (predprodukčné prostredie) – V staging prostredí, známom aj ako predprodukčné prostredie, sa softvér testuje s reálnymi údajmi a podmienkami. Toto prostredie sa používa na overenie, či je softvér pripravený na nasadenie v produkčnom prostredí.
Stagingové prostredie kopíruje produkčné prostredie, v ktorom bude umiestnená živá verzia aplikácie. Je veľmi dôležité, aby prostredie staging bolo presnou replikou produkčného prostredia. Často sa to dá dosiahnuť tým, že máš veľmi podrobnú dokumentáciu. V nej by mali byť opísané všetky potreby a správna konfigurácia tvojho produkčného prostredia.
Zatiaľ čo testovacie prostredie je zamerané na testovanie jednotlivých komponentov, prostredie staging je zamerané na testovanie celej aplikácie. Stagingové prostredie je v podstate bezpečné ihrisko, na ktorom môžeš testovať celú aplikáciu.
Vďaka tomu je prostredie staging ideálne na vykonávanie end-to-end testov alebo testovanie výkonu. End-to-end testy potvrdzujú, že celá aplikácia funguje podľa očakávaní, a to testovaním všetkých integrácií.
Okrem toho, keďže prostredie staging kopíruje produkčné prostredie, je to bezpečný priestor na testovanie limitov prostredia a aplikácie pomocou výkonnostných testov.
Stručne povedané, v prostredí staging testuješ celú aplikáciu v reálnych podmienkach, ktoré by zažila v produkčnom prostredí.
Krok 1. Nastavenie testovacieho servera
Každý test sa nemusí vykonávať na lokálnom počítači. Môže byť potrebné vytvoriť testovací server, ktorý môže podporovať aplikácie.
Napríklad Fedora nastavená pre PHP, aplikácie založené na Jave s poštovými servermi alebo bez nich, nastavenie cronu, aplikácie založené na Jave a podobne.
Krok 2. Sieť
Nastavenie siete podľa požiadaviek testu. Zahŕňa:
Zabezpečuje, aby preťaženie, ktoré vznikne počas testovania, neovplyvnilo ostatných členov tímu.
Krok 3. Nastavenie testovacieho počítača
Pri webovom testovaní môže byť potrebné nastaviť rôzne prehliadače pre rôznych testerov. V prípade desktopových aplikácií budeš potrebovať rôzne typy operačných systémov pre rôzne počítače testerov.
Napríklad testovanie aplikácie pre Windows Phone môže vyžadovať:
Krok 4. Hlásenie chýb
Testerom by mali byť poskytnuté nástroje na nahlasovanie chýb, napríklad Jira.
Krok 5. Vytvorenie testovacích údajov pre testovacie prostredie
Mnohé spoločnosti používajú na testovanie softvérového produktu samostatné testovacie prostredie. Bežne používaným prístupom je kopírovanie produkčných údajov do testovacieho prostredia. To pomáha IT testerovi, aby zistil rovnaké problémy ako na živom produkčnom serveri bez poškodenia produkčných údajov.
Prístup na kopírovanie produkčných údajov do testovacích údajov zahŕňa:
Testeri alebo vývojári si ich môžu skopírovať do svojho individuálneho testovacieho prostredia. Môžu ho upraviť podľa svojich požiadaviek.
Ochrana osobných údajov je hlavným problémom pri kopírovaní produkčných údajov. Na prekonanie problémov so súkromím by si sa mal zaoberať fejkovými a anonymizovanými testovacími údajmi.
Na anonymizáciu údajov možno použiť dva prístupy:
Ak používaš produkčné údaje, musíš tiež rozumne zvoliť spôsob získavania údajov. Efektívnym prístupom je získavanie údajov z databázy pomocou skriptu SQL.
Hardvér
Softvér / pripojenia
Skontroluj, či sú k dispozícii štandardné súbory testovacích údajov.
Nástroje/procesy údržby
Okrem týchto otázok je potrebné pred vytvorením testovacieho prostredia zodpovedať ešte niekoľko ďalších:
Namiesto úpravy a testovania celého kódu, izoluj a testuj jednotlivé funkcie. V takomto duchu sa nesie správa funkcií, nová trieda nástrojov a procesov na vývoj a dodávanie softvéru, ktorá je ukotvená v používaní príznakov funkcií. Najlepšie využitie tvojho času je testovanie týchto malých funkcií v produkcii. Ale aj keď sa rozhodneš testovať tieto funkcie v predprodukčných testovacích a stagingových prostrediach, stále môžeš získať výhody z rozdelenia zmien kódu na malé časti. Testovanie malých zmien kódu si napríklad vyžaduje menej času na písanie testovacích skriptov a celkové spustenie testov.
Nastav integráciu s chatovacími nástrojmi, ktoré tvoj tím používa (napr. Slack a Microsoft Teams), aby ste v prípade zlyhania automatizovaných testov boli okamžite informovaní. Tým sa zabezpečí, že správni ľudia budú môcť chyby rýchlo opraviť.
Môže sa hodiť aj na upozornenie členov tímu, ktorí nie sú priamo zapojení do pipeline CI/CD. Ak majú ľudia, ktorí nie sú vývojármi, lepší prehľad o pripravovaných funkciách a vylepšeniach aplikácie, môžu prijať opatrenia, ktorých výsledkom bude lepšia používateľská skúsenosť.
Systematický spôsob spracovania testovacích úloh uľahčuje zlepšovanie testov v čase. V krátkodobom horizonte to každého zamestná, aby plnil svoju úlohu vždy, keď je vyzvaný. Rozdiel v prípade, že takáto štruktúra nie je zavedená, spočíva v tom, že testovanie je často ponechané na testerov. Žiadna eskalácia chýb a žiadne sledovanie toho, ako často sa chyba objavuje, určite zníži spotrebu cenného času a úsilia.
Pomocou príznakov funkcií môžeš znížiť režijné náklady spojené s testovaním. Ak príznaky funkcií implementuješ správne, v niektorých prípadoch sa môžeš úplne zbaviť testovacích a stagingových prostredí. Tie isté aplikácie, ku ktorým pristupujú tvoji zákazníci, sa budú zobrazovať rôzne v závislosti od pravidiel príznakov funkcií. Tieto pravidlá môžu byť založené na atribútoch, ako je umiestnenie, prístupové zariadenie alebo dokonca na jemnejších detailoch, ako je jedinečné ID používateľa.
Pomocou príznakov funkcií môžeš kľúčovým zainteresovaným stranám v tvojej organizácii ukázať nové funkcie ešte pred ich releasnutím pre používateľov. Funkcie môžu byť vystavené v produkcií, ale bez toho, aby boli vystavené koncovým používateľom, čím sa zníži riziko. Testovanie v produkcii ti ušetrí peniaze a zdroje, ktoré by ste vo firme inak vložili do izolovaných testovacích relácií v prostredí.
Ak vieš po nemecky a si software tester alebo automatizovaný tester, pozri si naše benefity pre zamestnancov a reaguj na najnovšie ponuky práce.