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:

  1. testovanie výkonnosti (výkonu),
  2. testovanie zabezpečenia,
  3. testovanie integrity údajov,
  4. 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]:

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:

Iní autori pri testovaní rozlišujú tieto úlohy:

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:

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:

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:

Otázky na zopakovanie

  1. Vlastnými slovami opíšte proces testovania softvérových produktov.
  2. Čo všetko testujeme v softvérových systémoch?
  3. Vymenujte a opíšte základné aspekty úspešného softvérového produktu.
  4. Čo môže spôsobiť nedostatočné testovanie systémov?
  5. Opíšte alfa a beta testovanie, vysvetlite rozdiel medzi nimi.

Doplňujúci materiál ku štúdiu