5 Testovanie
Zahŕňa testovanie a dolaďovanie v zmysle spojenia s ostatnými pridruženými aplikáciami. Počas fáze testovania sa skúša výkon, zabezpečenie a integrita údajov v spojení s ďalšími aplikáciami. Výkon sa testuje pri rôznych podmienkach, aby bolo možné zistiť ako databáza spracováva viac súbežných spojení alebo veľké množstvo operácií (aktualizácia a čítanie) [1].
Pri kontrole integrity údajov sa testujú logické nedostatky, ktoré môže databáza obsahovať pričom ich dôsledkom sú straty údajov alebo ich nepresnosti. Pri zabezpečení sa potom testuje, či používatelia majú prístup iba k údajom a možnostiam zmien, ktoré im určujú ich oprávnenia. Vo viacerých prípadoch môžu nastať aj zmeny technologického a implementačného návrhu (modelu) [1].
Tento proces môžeme opísať niekoľkými na seba nadväzujúcimi krokmi:
- testovanie výkonnosti (výkonu),
- testovanie zabezpečenia,
- testovanie integrity údajov,
- optimalizáciou parametrov alebo zmenou logického či fyzického návrhu v závislosti od výsledkov testov [1].
5.1 Testovanie softvérových systémov
Pri samotnom procese testovania sa softvéroví inžinieri sústreďujú na celý životný cyklus testovania, ktorý začína testovaním funkcií a končí preberacím testovaním a zahŕňa [2]:
- Testy funkcií a modulov – sú vykonávané prevažne softvérovými inžiniermi priamo v etape implementácie.
- Integračné testy – je testovanie viacerých modulov súčasne.
- Regresné testovanie – testuje sa, či nenastal vedľajší efekt pridaním nového modulu alebo funkcie (zavlečenie chyby).
- Nezávislé testy – vykonávané nezávislými externými subjektami.
- Alfa a beta testovanie – je testovanie systému v reálnom prostredí. Pri alfa testovaní sa systém testuje bez živých údajov. Testuje ho zákazník u vývojára. Beta testovanie používa reálne údaje so sledovaním výsledkov s možnosťou okamžitej nápravy.
- Systémové testovanie – je to séria rôznych testov, ktorá preveruje celý systém (hardvér, softvérové prostredie, databáza, používatelia…). Môžeme sem zaradiť aj testovanie obnovy (recovery), bezpečnostné testovanie, výkonnostné a záťažové testovanie (stress). Obdobne sem môžeme zaradiť aj tzv. testovanie citlivosti (sensititivity testing), ktorého cieľom je objaviť kombinácie údajov (v rámci platných obmedzení), ktoré môžu spôsobiť nestabilitu systému.
- Inštalačné testy – zahŕňajúce všeobecnú výkonnosť systému, ktorý je prvý raz nainštalovaný na konkrétnom hardvéri a operačnom systéme.
- Validačné testovanie – slúži na overenie toho, že softvér spĺňa „rozumné očakávania“ zákazníka, ktoré sú definované v špecifikovaných požiadavkách. Validačné testovanie sa vykonáva black‑box metódou.
- Preberacie testovanie – je to posledný míľnik pri testovaní projektu. V prípade úspešného zvládnutia nastáva oficiálne prevzatie projektu zákazníkom.
Chyby môžu byť do aplikácie vnesené v každom štádiu životného cyklu vývoja aplikácie, vrátane testovania.
Ak chceme, aby bol produkt úspešný z hľadiska používateľa, musíme akceptovať päť základných aspektov testovania:
Funkčnosť alebo úžitkovosť (utility) – zvyčajne sa testuje zložitosť ovládania produktu, či produkt používateľovi dovoľuje vykonávať najdôležitejšie funkcie, alebo či je finančne efektívny a podobne. Bez ohľadu na to, či je produkt korektný alebo nie, toto sú najdôležitejšie faktory, ktoré by mali byť otestované.
Spoľahlivosť (reliability) – je veľmi dôležité vedieť, ako často produkt zlyháva a aké dôsledky môže mať zlyhanie. Keď produkt zlyhá, je dôležité odhadnúť, za aký dlhý čas sa podarí chybu odstrániť a ešte dôležitejšie je, za aký čas sa podarí odstrániť následky chyby.
Priemerný čas bezchybného fungovania softvérových produktov (napríklad informačných systémov), čiže čas medzi dvomi zlyhaniami je asi šesť mesiacov. Ak nastane zlyhanie a proces obnovy (recovery) je dlhší ako dva dni, môžeme konštatovať, že spoľahlivosť systému je nízka.
Odolnosť (robustness) – robustnosť je v podstate množina faktorov ako rozsah ovládacích podmienok, neakceptovateľné výsledky získané po zadaní správnych vstupných údajov a ďalšie. V prípade testovania funkčnosti musia byť výstupné údaje získané po zadaní určitých vstupných údajov správne. Pri testovaní robustnosti sú na vstup zámerne poslané údaje, ktoré nezodpovedajú pôvodným vstupným požiadavkám a testuje sa, ako na nich produkt reaguje.
Výkonnosť (performance) – produkty pracujúce v reálnom čase sú charakterizované časovými obmedzeniami, ako napríklad odozva na konkrétnu akciu, čas vzorkovania a iné. Pri testovaní výkonnosti je veľmi dôležité otestovať práve tie parametre systému, ktoré sú životne dôležité na jeho činnosť. Napríklad zber údajov z reaktora sa vykoná každú desatinu sekundy. Ak by systém nedokázal spracovať a vyhodnotiť tieto údaje v požadovanom časovom intervale, správal by sa ako systém, ktorý nemá dostatočnú výkonnosť.
Správnosť, korektnosť (correctness) – produkt je korektný, ak vyhovuje stanoveným technickým podmienkam a je nezávislý od použitých zdrojov [2].
5.2 Spôsoby testovania
V súčasnosti je možné konštatovať, že existuje množstvo postupov verifikácie a validácie informačných systémov, avšak nie exaktných. Existuje síce norma ISO/IEC 9126 stanovujúca kritériá kvality softvéru, ale aj v nej sa zdôrazňuje, že doteraz neboli vypracované všeobecne použiteľné postupy ich merania. Najbližšie k problematike je norma DIN 66 285 (od mája 1995 sa označuje ako DIN ISO/IEC 12 119) „Softvérové produkty. Požiadavky na kvalitu a testovanie.“ Pritom je jasné, že nestačí posudzovať iba kvalitu výsledného produktu, ale aj kvalitu jednotlivých komponentov, ako napríklad bázu údajov, procesy, moduly atď. [2].
Zásady, ktoré musia byť dodržané pri procese testovania:
- Zamerať sa na verifikáciu a validáciu všetkých fáz vývoja, t. j. koncepciu, požiadavky, riešenie, implementáciu, testy, inštaláciu, prevádzku a údržbu.
- Štandardizovať postupy (umožňujú redukovať námahu pri písaní a protokolovaní).
- Zaručiť opakovateľnosť testovania.
- Vylúčiť subjektívne vplyvy.
- Vypracovať detailnú skúšobnú dokumentáciu (ktorá umožňuje skúšku opakovať).
- Časovo usporiadať postup (predbežná kontrola, skúšanie, skúšanie zmenených častí).
- Logicky usporiadať postup (zoskupenie podobných funkcií a ich kontrolu, kontrolu jednotlivých samostatných častí systému, interakciu medzi subsystémami, celkovú kontrolu).
- Hierarchické usporiadanie postupu (dotýka sa dokumentácie) [2].
Iní autori pri testovaní rozlišujú tieto úlohy:
- Nevyhnutnosť vytvoriť obsah skúšok tak, aby sa preskúšali všetky prípady opisované v dokumentácii. Preveruje sa nielen informačný systém, ale povinne všetky podklady na strane skúšajúceho, t. j. predpoklady skúšky, inštalácia, opis produktu, dokumentácia, aplikácia, neprotirečivosť dokumentácie a aplikácie, neprotirečivosť produktu a dokumentácie, a podobne.
- Zhodnotiť obsah skúšok (v súvislosti s komplexnosťou, náchylnosťou na vznik chýb, frekvenciou ich výskytu a dôležitosťou).
- Celkovo zhodnotiť a zoskupiť obsahy skúšok.
- Určiť hĺbku skúšania (povinné skúšky a polovica skupín s najväčšou dôležitosťou sa označí ako majoritná a testuje sa s veľkou hĺbkou, ostatné skupiny sa označia ako minoritné a netestujú sa hĺbkovo).
- Zadať obsahy skúšok – prideliť jednotlivé skúšky skúšajúcim.
- Skontrolovať predpoklady skúšky a inštalácie. Skontroluje sa, či je produkt nainštalovaný (na minimálnej hardvérovej konfigurácii) a či sú k dispozícii všetky potrebné podklady.
- Kontrolovať opis produktu.
- Vyhotoviť skúšobnú správu [2].
5.3 Dôsledky nedostatočného testovania
Dôsledky nedostatočného testovania môžeme zhrnúť do troch základných kategórií, ktoré podrobnejšie opisujeme v nasledujúcich podkapitolách.
5.3.1 Chyby spôsobené nízkou kvalitou testovania
Najnevhodnejším efektom nedostatočnej testovacej technológie je nárast zlyhaní a chýb produktov, ktoré sa objavili potom, ako bol produkt testovaný.
Softvérové chyby sú klasifikované typom chyby, miestom vzniku, časom vzniku, úrovňou vážnosti, frekvenciou vznikania a nákladmi. Individuálne chyby potom môžu byť agregované podľa nasledujúceho prístupu:
- Nedostatočné podriadenie sa štandardom – problémom je, že softvérové funkcie, údajové reprezentácie, preklady alebo interpretácie neboli prispôsobené procedurálnym procesom alebo formátu, ktorý špecifikuje štandard.
- Nedostatočná prevádzkyschopnosť s inými produktmi – problémom je neschopnosť softvérových produktov vymieňať a zdieľať údaje s inými systémami.
- Slabá výkonnosť – problémom je, že aplikácie síce pracujú, ale nie tak, ako by sa od nich očakávalo – ako je to požadované [3].
5.3.2 Nárast nákladov na vývoj softvéru
Z krátkej histórie vývoja softvéru je dobre známe, že proces identifikovania a odstránenia chýb v procese vývoja softvéru reprezentuje viac ako polovicu nákladov na celý vývoj. V závislosti od použitej metódy zaberajú testovacie aktivity od 30 do 90 percent práce vynaloženej na vytvorenie funkčného produktu. Včasné odhalenie chyby môže výrazne redukovať náklady. Chyby môžu byť klasifikované na základe toho, v ktorej etape životného cyklu vývoja softvérového produktu boli objavené. Konkrétne ide o tieto etapy: formulácia požiadaviek, návrh, programovanie, testovanie modulov, integračné testovanie, systémové testovanie, inštalačné a akceptačné testovanie a prevádzkovanie a údržba [3].
5.3.3 Zvýšený čas na umiestnenie softvéru na trh
Nedostatok štandardizovaných technológií testovania má tiež vplyv na nárast času, ktorý je potrebný na umiestnenie produktu na trh. To úzko súvisí s potenciálnou stratou príležitosti na dobrý výsledok predajnosti a tým aj návratnosti nákladov na vytvorenie produktu. Strata príležitosti na dobrý výsledok predajnosti má za následok podobný efekt, ako objavenie chyby už v distribuovanom produkte. Ak by boli ľahko dostupné štandardizované testovacie procedúry, zamestnanci poverení testovaním by strávili menej času vývojom vlastných testovacích technológií [3].
Štandardizované testovacie technológie by mali urýchliť vývoj tým, že sa zníži potreba:
- vyvíjať špecifický testovací softvér pre každú aplikáciu,
- vyvíjať špecifické testovacie údaje pre každú aplikáciu,
- používať metódu „pokus a omyl“ pri určení, ako používať neštandardné testovacie nástroje [3].
Zhrnutie 5. kapitoly
Počas fázy testovania sa skúša výkon, zabezpečenie a integrita údajov v spojení s ďalšími aplikáciami. Životný cyklus testovania zahŕňa: testy funkcií a modulov, integračné testy, regresné testovanie, nezávislé testy, alfa a beta testovanie, systémové testovanie, inštalačné testy, validačné testovanie a preberacie testovanie.
Aby bol produkt úspešný, musí spĺňať tieto aspekty: utility (funkčnosť alebo úžitkovosť), reliability (spoľahlivosť), robustness (odolnosť), performance (výkonnosť) a correctness (správnosť, korektnosť).
Dôsledky nedostatočného testovania:
- chyby spôsobené nízkou kvalitou testovania,
- nárast nákladov na vývoj softvéru,
- zvýšený čas na umiestnenie softvéru na trh.
Otázky na zopakovanie
- Vlastnými slovami opíšte proces testovania softvérových produktov.
- Čo všetko testujeme v softvérových systémoch?
- Vymenujte a opíšte základné aspekty úspešného softvérového produktu.
- Čo môže spôsobiť nedostatočné testovanie systémov?
- Opíšte alfa a beta testovanie, vysvetlite rozdiel medzi nimi.
Doplňujúci materiál ku štúdiu
- Otte, Lukáš: Databázové systémy – Životní cyklus databáze. Ostrava : Vysoká škola Baňská, Technická univerzita Ostrava, Fakulta strojní, 2013. [Cit. 2020‑14‑05]. Dostupné na internete: ⟨
http://projekty.fs.vsb.cz/463/edubase/VY_01_044/Datab%C3%A1zov%C3%A9%20syst%C3%A9my.pdf
⟩.
- Tanuška, Pavol – Schreiber, Peter. Proces testovania softvérových produktov. STU v Bratislave, MTF v Trnave, Katedra aplikovanej informatiky a automatizácie. [Cit. 2020‑14‑05]. Dostupné na internete: ⟨
https://www.mtf.stuba.sk/buxus/docs/internetovy_casopis/2005/5/tanuska.pdf
310,28 kB (303,00 KiB), 12. 12. 2021⟩.
- The Economic Impact of Inadequate Infrastructure for Software Testing. US Department of Commerce Technology Administration, 2002. [Cit. 2020‑14‑05]. Dostupné na internete: ⟨
https://www.nist.gov/system/files/documents/director/planning/report02‑3.pdf
1,42 MB (1,36 MiB), 21. 5. 2019⟩.
- Mastráková, Soňa: Porovnávacie testy databáz založených na rôznych paradigmách. Masarykova univerzita, Fakulta informatiky, 2013. Dostupné na internete: ⟨externdown:https:/{is.muni.czthz145x/bc_dbms.pdf}⟩.