2. diel - Testovací proces Nové
V predchádzajúcej lekcii, Základy testovania , sme si vysvetlili, prečo by sme mali softvér testovať, čo je vlastne testovanie a aké sú jeho ciele.
V dnešnej lekcii, v ktorej sa venujeme testovaciemu procesu sa dozvieme, prečo je testovanie nevyhnutné. Potom sa pozrieme na základné princípy testovania, prejdeme si rôzne testovacie činnosti, testware a role v testovaní.
Prečo je testovanie nevyhnutné?
Software development life cycle (životný cyklus vývoja softvéru), skrátene SDLC, je štruktúrovaný proces, ktorý zahŕňa všetky fázy vývoja softvéru od prvotného nápadu až po jeho nasadenie a údržbu:
Životný cyklus vývoja softvéru zahŕňa:
- požiadavky teda čo má softvér vedieť,
- návrh ako bude softvér vyzerať a fungovať,
- vývoj v ktorom programátori napíšu kód,
- testovanie kde overíme, že softvér funguje správne a neobsahuje chyby,
- nasadenie pri ktorom sa softvér spustí a dá sa užívateľom na používanie,
- údržbu, pretože aj po nasadení sa softvér občas opravuje alebo vylepšuje.
Testovanie poskytuje nákladovo efektívny spôsob detekcie chýb. Tieto defekty je možné odstrániť ladením. Dáva nám prostriedky na priame hodnotenie kvality testovaného objektu v rôznych fázach SDLC. Tieto hodnotenia sú súčasťou širších aktivít projektového manažmentu a pomáhajú rozhodnúť o prechode do ďalšej fázy SDLC.
Testeri sú zárukou toho, že ich pochopenie potrieb užívateľov je zohľadnené v priebehu celého SDLC. Alternatívou k využitiu testerov je zapojenie reprezentatívnej skupiny užívateľov do projektu. Okrem hodnotenia kvality môže byť testovanie softvéru vyžadované aj kvôli splneniu zmluvných či právnych požiadaviek.
Testovanie, quality assurance a defekty
Ľudia často zamieňajú pojmy testovania a quality assurance (zaistenie kvality), skrátene QA. Testovanie je forma quality control (riadenie kvality), skrátene QC, čo je nápravný prístup zameraný na produkt a zameriava sa na činnosti podporujúce dosiahnutie zodpovedajúcej úrovne kvality.
QA je preventívny prístup orientovaný na procesy, ktorý sa zameriava na ich zavádzanie a zlepšovanie. Je založený na predpoklade, že pokiaľ je dodržovaný správny proces, potom je jeho výsledkom správny produkt. Výsledky testov sú využívané v QA aj v QC. V QC sa používajú na opravu defektov, zatiaľ čo v QA poskytujú spätnú väzbu o tom, ako dobre fungujú procesy vývoja a testovania.
Defekty možno nájsť v dokumentácii, v zdrojovom kóde alebo v akomkoľvek podpornom artefakte. Ak je spustený defekt v kóde, môže to spôsobiť zlyhanie. Zlyhania môžu byť spôsobené aj podmienkami prostredia napríklad defekt pri firmvéri spôsobený žiarením alebo pôsobením elektromagnetického poľa. Koreňová príčina je primárnym dôvodom vzniku problému. Riešením koreňovej príčiny je možné zabrániť podobným zlyhaniam alebo defektom, alebo aspoň znížiť ich početnosť:
Princípy testovania
Počas posledných rokov bol zdokumentovaný rad princípov, ktoré poskytujú všeobecný návod aplikovateľný pre všetky druhy testovania:
- Testovanie preukazuje prítomnosť defektov, nie správnosť systému.
- Kompletné testovanie nie je možné, je lepšie sa zamerať na vhodné techniky testovania, stanovenie priorít test časov (testovacích prípadov) a testovanie založené na rizikách.
- Včasné testovanie šetrí čas a peniaze.
- Zhlukovanie defektov – väčšina defektov sa vyskytuje v niekoľkých kľúčových oblastiach.
- Testy sa opotrebovávajú, je nutné meniť existujúce testy a testovacie dáta.
- Testovanie je závislé od kontextu, je potrebné ho prispôsobiť rôznym projektom.
- Neprítomnosť defektov je klam – absencia defektov neznamená, že systém spĺňa potreby užívateľov.
Proces testovania môže byť prispôsobený danej situácii na základe rôznych faktorov. O tom, ktoré testovacie činnosti sú zahrnuté do procesu testovania, ako sú implementované a kedy k nim dôjde, sa obvykle rozhoduje v rámci test planningu (plánovanie testovania):
Proces testovania sa skladá z hlavných skupín činností, ktoré musíme prispôsobiť systému a projektu. Sú často vykonávané iteratívne alebo paralelne.
Test planning
Test planning zahŕňa stanovenie cieľov testovania a výber vhodného prístupu k ich dosiahnutiu. Napríklad sa tím rozhodne, že bude testovať aplikáciu na základe funkčných požiadaviek a stanoví cieľ overiť, či všetky kľúčové funkcie, ako je pridávanie položiek do nákupného košíka, fungujú správne.
Test monitoring
Test monitoring and control (monitorovanie a riadenie testovania) sa zameriava na sledovanie postupu, porovnávanie so stanoveným plánom a prijatie potrebných opatrení na dosiahnutie cieľov. Tu napríklad test manager (manažér testovania) sleduje priebeh testovania a porovnáva ho s harmonogramom. Keď zistí oneskorenie pri testovaní platobnej brány, pridelí ďalšie zdroje na dokončenie testov včas.
Test analysis
Test analysis (testovacia analýza) spočíva v analýze testovacej bázy, definovaní testovacích podmienok a identifikácii defektov. Hodnotí sa aj testovateľnosť objektov. Tester môže treba analyzovať požiadavky aplikácie a identifikovať, že platobný proces obsahuje riziko chybného spracovania transakcií, preto navrhne testovacie podmienky pre rôzne platobné scenáre.
Test design
Test design (návrh testov) zahŕňa tvorbu test časov a ďalšieho testwaru, vrátane stanovenia požiadaviek na testovacie dáta a návrh testovacieho prostredia. Tester napríklad pripraví test casy pre overenie, či systém správne spracováva zľavové kupóny a rôzne metódy platby. Súčasne navrhne prostredie s rôznymi platobnými bránami.
Test implementation
Test implementation (implementácia testovania) zahŕňa vytvorenie a zoskupenie test časov do procedúr a sád, rovnako ako prípravu testovacích skriptov. Testovacie procedúry sú usporiadané do harmonogramu a testovacie prostredie je pripravené na použitie. Tým napríklad vytvoria testovacie sady, ktoré zahŕňajú testy pre validáciu platieb a integráciu s bankovými systémami, a napíše automatické testovacie skripty.
Test execution
Test execution (vykonanie testov) znamená spustenie testov podľa harmonogramu, porovnanie výsledkov s očakávaním a analýzu anomálií, ktoré vedú k reportovaniu zlyhania. Napríklad tester spustí testovacie sady, ktoré simulujú rôzne platobné metódy, a porovná výsledky s očakávanými. Zaznamená anomálie a nahlási defekt, kedy systém zle uplatňuje zľavy.
Test closure
Test closure (dokončenie testovania) obvykle nastáva pri dosiahnutí míľnikov projektu. Nevyriešené defekty sú pridané do backlogu, testware je archivovaný a prostredie uvedené do pôvodného stavu. Súhrnný report zhŕňa poznatky a je odovzdaný zainteresovaným stranám. Po úspešnom otestovaní sú všetky testovacie skripty archivované, a tím pripraví záverečnú správu o kvalite, ktorá zhŕňa nájdené a opravené chyby.
Proces testovania v súvislostiach a testware
Testovanie je neoddeliteľnou súčasťou vývoja softvéru v organizácii a jeho cieľom je naplnenie biznisových potrieb zainteresovaných strán, ktoré financujú testovací proces:
Testovanie je ovplyvnené mnohými faktormi, ako sú:
- zainteresované strany, ich potreby, očakávania a ochota spolupracovať,
- členovia tímu, ich zručnosti, skúsenosti a potreby školenia,
- odbor podnikania, kritickosť testovaného objektu, riziká a právne predpisy,
- technické faktory, typ softvéru, architektúra a použité technológie,
- obmedzenie projektu, rozsah, čas, rozpočet a dostupné zdroje,
- organizačné faktory, štruktúra, politiky a používané postupy,
- SDLC, metódy vývoja a technické postupy,
- nástroje, dostupnosť, použiteľnosť a regulačná zhoda.
Testware
Testware je súhrn výstupných pracovných produktov vytvorených pri testovacích činnostiach. Jeho správa a organizácia sa líšia medzi organizáciami, preto je zásadné zaistiť dobrý konfiguračný manažment pre zachovanie konzistencie a integrity.
Typické výstupy testware zahŕňajú:
- Pracovné produkty z test planning - test plan (plán testovania), harmonogram testovania, register rizík a vstupné a výstupné kritériá.
- Pracovné produkty z test monitoring and control - reporty o postupe prác pri testovaní, pokyny a nevyhnutné nápravné opatrenia a informácie o rizikách.
- Pracovné produkty z test analysis - testovacie podmienky a reporty o defektoch v testovacej báze.
- Pracovné produkty z test designu - test casy, testovacie listiny, položky pokrytia, požiadavky na testovacie dáta a požiadavky na testovacie prostredie.
- Pracovné produkty z test implementation - testovacie procedúry, automatizované testovacie skripty, testovacie sady a dáta, harmonogram prevedenia testov a prvky testovacieho prostredia.
- Pracovné produkty z vykonania testov - protokoly z testovania a reporty o defektoch.
- Pracovné produkty z dokončenia testovania - súhrnný report z testovania, akčné body na zlepšenie budúcich projektov alebo iterácií, zdokumentované ponaučenie a zmenové požiadavky.
Pre efektívny test monitoring and control je zásadné udržiavať trasovateľnosť medzi položkami testovacej bázy, výstupmi testovania, výsledkami testov a nájdenými defektmi.
Presná trasovateľnosť umožňuje vyhodnocovať pokrytie. Kritériá pokrytia môžu predstavovať jeden z kľúčových key performance indicators (ukazovateľov výkonnosti) - KPI, pre riadenie testovacích činností, ktoré ukazujú na mieru dosiahnutie cieľov testovania. Napríklad trasovateľnosť medzi test casmi a požiadavkami pomôže overiť, že požiadavky sú pokryté test casy. Trasovateľnosť medzi výsledkami testov a rizikami je možné použiť na vyhodnotenie úrovne zvyškového rizika pri testovanom objekte.
Okrem vyhodnotenia pokrytia umožňuje dobrá trasovateľnosť určiť vplyv zmien, uľahčuje vykonávanie auditov testovania a pomáha plniť kritériá zásad správneho riadenia v IT. Dobrá trasovateľnosť taktiež zlepšuje zrozumiteľnosť reportov o postupe prác pri testovaní a súhrnných reportov z testovania. Trasovateľnosť poskytuje informácie pre posúdenie kvality produktu, spôsobilosti procesov a postupu prác v projekte vzhľadom na biznisové ciele.
Praktický príklad
Pri vývoji softvéru pre správu zdravotných záznamov je nutné zaistiť, že všetky požiadavky na funkčnosť a bezpečnosť sú starostlivo trasované:
Trasovateľnosť medzi test casmi a špecifikovanými požiadavkami je tu kľúčová – napríklad každá požiadavka na bezpečnosť dát pacientov musí byť pokrytá konkrétnym test casom. Keď dôjde k nájdeniu defektu, trasovateľnosť umožňuje ľahko zistiť, ktoré požiadavky sú týmto defektom ovplyvnené a aké testy sú potrebné na jeho vyriešenie. Tento prístup pomáha zaistiť, že softvér zodpovedá regulačným štandardom a že akákoľvek zmena v softvéri neovplyvní inú časť systému.
Rola v testovaní
Existujú dve hlavné roly v testovaní: test manager a tester. Ich činnosti závisia od kontextu projektu, zručností a organizácie. Test manager zodpovedá za celý proces testovania, testovací tím, riadenie a úspešné dokončenie testovacích činností. V agilných tímoch môžu niektoré jeho úlohy prevziať členovia tímu, zatiaľ čo pri väčších projektoch ich môže riešiť test manager mimo vývojového tímu. Úlohy, ktoré zahŕňajú viac tímov alebo celú organizáciu, môžu byť vykonávané test manažérmi mimo vývojový tím. Tester sa zameriava na technické aspekty testovania – test analysis, test design, test implementation a ich vykonanie. Tieto role môžu byť kombinované alebo rozdelené medzi rôzne osoby v závislosti od potrieb projektu.
Zdrojom tejto lekcie sú Učebné osnovy - Certifikovaný tester základnej úrovne ver. 4.0. Copyright © 2023 autori verzie 4.0: Renzo Cerquozzi, Wim Decouter, Klaudia Dussa-Zieger, Jean-François Riverin, Arnika Hryszko, Martin Klonk, Michael Pilaeten, Meile Posthuma, Stuart Reid, Eric Riou du Cosquer (predseda) Stapp, Stephanie Ulrich (podpredseda), Eshraka Zakaria
V nasledujúcej lekcii, Testovanie v priebehu SDLC - Zručnosti a osvedčené postupy , si vysvetlíme aké sú základné zručnosti a osvedčené postupy a pozrieme sa na testovanie v kontexte životného cyklu vývoja softvéru.