Verifikácia a validácia v testovaní softvéru

Verifikácia a validácia v testovaní softvéru
4 MIN
25 júl 2023

Testovanie softvéru, ktoré je neoddeliteľnou súčasťou vývoja softvéru, zabezpečuje, aby vyvíjané softvérové produkty neobsahovali chyby, boli v súlade s normami kvality a spĺňali požiadavky zákazníka. Je to v podstate súhrn dvoch činností – verifikácie a validácie (V&V). 

V&V pri testovaní softvéru sú dva nezávislé postupy, ktoré spolupracujú s cieľom overiť, či konkrétny produkt spĺňa stanovené požiadavky a či spĺňa svoj účel. Mnohí ľudia si tieto dva pojmy často mýlia a používajú ich zameniteľne. Je však dôležité si uvedomiť, že ide o nezávislé procesy s rôznymi cieľmi. 

Overovanie je proces skúmania kvality softvérového produktu. Inými slovami, zahŕňa kontrolu, či produkt spĺňa stanovené požiadavky a špecifikácie návrhu. Naproti tomu pri validácii ide o analýzu softvérového produktu s cieľom skontrolovať, či spĺňa požiadavky zákazníka. Bez V&V nemôžu tímy QA alebo testeri dokončiť testovanie softvéru. Sú to kritické prvky, pretože určujú kvalitu, spoľahlivosť a funkčnosť softvérových produktov. Tento článok ti ozrejmí verifikáciu a validáciu (verification, validation) pri testovaní softvéru a podrobné rozdiely medzi nimi.

Obsah

Čo je verifikácia?

Je to proces hodnotenia artefaktov vývoja softvéru, ako sú dokumenty, návrh a kód, s cieľom zabezpečiť, aby vyvíjaný produkt spĺňal špecifikované požiadavky. Keďže tento proces analyzuje len artefakty, a nie konečný produkt, často sa označuje ako statické testovanie. 

Špecifikácie slúžia ako vstup do procesu vývoja softvéru. Vývojári píšu kód na základe týchto špecifikácií. Overovanie kontroluje, či je softvérový kód v súlade so špecifikáciami alebo ich dodržiava v každej fáze SDLC. 

Činnosti, ktoré sa podieľajú na overovaní, sú kontrola, preskúmanie kódu a technické preskúmanie.

Tento proces pomáha určiť kvalitu softvérového produktu, ale nezaručuje, že bude užitočný. Je spojený len s hodnotením produktu s cieľom skontrolovať, či neobsahuje chyby alebo omyly.

Čo je validácia?

Je to proces hodnotenia softvérového produktu s cieľom skontrolovať, či zodpovedá požiadavkám a očakávaniam zákazníka. Inými slovami, určuje, či produkt spĺňa obchodné požiadavky zákazníka. Pomáha určiť, či produkt splnil svoj účel vo vhodnom prostredí.

Proces validácie skôr ako hodnotenie artefaktov hodnotí skutočný produkt. Často sa označuje ako dynamické testovanie. Zaoberá sa len výstupom, a nie vnútornými postupmi procesu vývoja. 

Činnosti zahrnuté do tohto procesu sú funkčné a nefunkčné testovanie.

Rozdiel medzi verifikáciou a validáciou

Americký softvérový inžinier Barry W. Boehm jasne opisuje tieto dva procesy, čo ti pomôže pochopiť primárny rozdiel medzi nimi. 

Verifikácia: „Vytvárame produkt správne?“

Validácia: „Budujeme správny produkt?“

Ako vidíš, tieto dve tvrdenia sú odlišné, s malým rozdielom. Prvé tvrdenie znamená kontrolu, či produkt staviame správne podľa požiadaviek a špecifikácií. Naopak, druhé tvrdenie predpokladá overenie, či staviame správny výrobok, ktorý spĺňa svoj pôvodný zámer alebo slúži zamýšľanému účelu.

Verifikácia vs. validácia – porovnanie bok po boku

Hoci sú tieto procesy podobné a prispievajú k vysokej kvalite konečného produktu, sú rozdielne. Poďme si teraz podrobne osvetliť rozdiel medzi validáciou a verifikáciou.

Verifikácia Validácia
Proces hodnotenia návrhu, kódu a dokumentov s cieľom zabezpečiť, aby vyvíjaný produkt spĺňal stanovené požiadavky.Softvérový produkt sa hodnotí s cieľom skontrolovať, či zodpovedá obchodným požiadavkám klienta a potrebám zákazníkov.
Kontroluje sa porovnanie dokumentu, návrhu a kódu so špecifikovanými požiadavkami.Kontroluje sa spoľahlivosť, použiteľnosť a funkčnosť konečného produktu.
Tento proces si nevyžaduje vykonanie kódu.Tento proces si vyžaduje spustenie zdrojového kódu.
Verifikácia sa často nazýva statické testovanie.Validácia sa často nazýva dynamické testovanie.
Riadi sa prístupom orientovaným na proces.Sleduje prístup orientovaný na produkt.
Odpovedá na otázku – „Vytvárame produkt správne?“.Odpovedá na otázku – „Budujeme správny produkt?“
Chyby zistené počas tohto procesu si vyžadujú menšie náklady/zdroje na opravu ako chyby zistené počas fázy validácie.Chyby zistené počas validácie si vyžadujú väčšie náklady/zdroje. Neskôr objavená chyba si vyžaduje vyššie náklady na jej opravu.
Zahŕňa činnosti, ako je preskúmanie dokumentov, preskúmanie testovacích prípadov, prechádzky a kontrola kódu.Zahŕňa činnosti ako funkčné testovanie a nefunkčné testovanie.
Overovanie vykonáva len tím QA (Quality Assurance).Tím testovania softvéru a tím QA spoločne vykonávajú proces overovania.
Uskutočňuje sa pred validáciou a v počiatočnej fáze procesu vývoja.Začína sa až po ukončení verifikácie.
Overovanie sa zameriava na interné aspekty, ako sú návrh, databáza, kód, požiadavky a architektúra.Validácia sa zameriava na celý konečný produkt.
Ide o prevenciu chýb.Ide o detekciu chýb.
Vyžaduje menšie náklady.Dosť nákladné.

Verifikácia vs. validácia – príklad

Na pochopenie týchto procesov si uveďme príklad z reálneho života. 

Zoberme si, že ideme do reštaurácie a objednáme si čučoriedkové palacinky. Ako si overíte, že objednané jedlo je presne to, čo chcete? 

Po prvé, viete, ako čučoriedkové palacinky vyzerajú. Takže začnete hodnotiť jedlo podľa jeho vzhľadu. Skontrolujete, či: 

  • jedlo vyzerá tak, ako očakávaš. 
  • sú okolo čučoriedky. 
  • vonia ako zvyčajne. 

Toto nie je nič iné ako overovanie, pretože netestujete skutočný výrobok. 

Ak pokrm spĺňa uvedené parametre, pokračujete ďalej a dáte si ho. Keď pokrm skonzumujete, aby ste si overili, či chutí tak, ako má, ide o validáciu.

Kedy by si mal overovať a validovať? 

Ide o nezávislé a rozhodujúce procesy pri vývoji softvéru, ktoré majú zabezpečiť, aby produkt spĺňal stanovené požiadavky a plnil zamýšľaný účel. Oba zohrávajú dôležitú úlohu pri zabezpečovaní kvality softvérových produktov. 

Verifikácia prebieha v počiatočnej fáze procesu vývoja, zatiaľ čo validácia sa vykonáva až po verifikácii. Prvý z nich sa používa ako interný proces, zatiaľ čo druhý je externý postup, pretože zahŕňa schválenie zainteresovaných strán.

Záver

Toto bolo všetko o verifikácii a validácii pri testovaní softvéru. Oba procesy sú kritické a nevyhnutné na zabezpečenie kvality, spoľahlivosti a funkčnosti softvérových produktov. Kým verifikácia sa zaoberá zostavením produktu správnym spôsobom, validácia sa zaoberá vývojom správneho produktu. Dúfame, že ti tento článok pomohol pochopiť rozdiely medzi týmito procesmi.