Testování softwaru: Porovnání verzí

 
(Nejsou zobrazeny 4 mezilehlé verze od stejného uživatele.)
Řádek 1: Řádek 1:
 
{{Pracuje se}}
 
{{Pracuje se}}
Testování softwaru je oblast, která se zabývá kontrolou kvality nebo chyb [[Program|programů]].
+
Testování softwaru je oblast, která se zabývá kontrolou kvality nebo chyb [[Program|programů]]. Při testování je kladen důraz na kvalitu a na nalézání chyb, které by v budoucnu mohly negativně ovlivnit celý projekt, na kterém vývojový tým pracuje. Vše začíná stanovením vizí a cílů, které by mělo testování naplnit. Poté je na řadě určení rozsahu testování. Testování pak je zaměřené na zkoumání produktu v různých úrovních a nesmí chybět ani pravidelné reportování o stavu produktu. <ref name=":0" />
 
==Charakteristika==
 
==Charakteristika==
 
    
 
    
Testování softwaru je jednou z několika složek [[Informační technologie (IT)|IT]] struktury, která se může jevit jako nepříliš důležitá, ale opak je pravdou. Na správném testování softwaru velice závisí. V realitě je testování softwaru pomyslnou špičkou ledovce – dle přání zákazníka je navržen softwarový [[produkt]], ale je dokončen a předán až v momentě, kdy na něm odvede svou práci tester. Tester kontroluje, zda výsledný produkt odpovídá zadání zákazníka, obsahuje všechny potřebné funkce a zda správně pracují. Důležitá je i uživatelská přívětivost pro budoucího uživatele softwaru.  <ref>Co je testování softwaru? Kitner [online]. [cit. 2021-11-21]. Dostupné z: https://kitner.cz/testovani_softwaru/co-je-testovani-softwaru/</ref>
+
Testování softwaru je jednou z několika složek [[Informační technologie (IT)|IT]] struktury, která se může jevit jako nepříliš důležitá, ale opak je pravdou. V realitě je testování softwaru pomyslnou špičkou ledovce – dle přání zákazníka je navržen softwarový [[produkt]], ale je dokončen a předán až v momentě, kdy na něm odvede svou práci tester. Tester kontroluje, zda výsledný produkt odpovídá zadání zákazníka, obsahuje všechny potřebné funkce a zda tyto funkce správně pracují. Důležitá je i uživatelská přívětivost pro budoucího uživatele softwaru.  <ref>Co je testování softwaru? Kitner [online]. [cit. 2021-11-21]. Dostupné z: https://kitner.cz/testovani_softwaru/co-je-testovani-softwaru/</ref>
  
 
==Testovací cyklus==
 
==Testovací cyklus==
 +
[[Soubor:Programmer writing code with Unit Tests.jpg|náhled|Tester]]
 
Testování softwaru má několik fází, které je důležité dodržovat:   
 
Testování softwaru má několik fází, které je důležité dodržovat:   
  
Řádek 31: Řádek 32:
 
*'''Testování vývojářem'''
 
*'''Testování vývojářem'''
  
- Veškerá kontrola probíhá na úrovni [[Zdrojový kód|zdrojového kódu]], jeden vývojář kontroluje kód po druhém. Pro kvalitní testování je potřeba mít mezi programátory jednotný přístup k psaní kódu.
+
- Při vývoji jsou prvotní testy označovány jako assembly testy. Veškerá kontrola probíhá na úrovni [[Zdrojový kód|zdrojového kódu]], jeden vývojář kontroluje kód po druhém. Samotná kontrola tak probíhá na úrovni samotného testování kódu. Pro kvalitní testování je potřeba mít mezi programátory jednotný přístup k psaní kódu. Při assembly testování může docházet například k zavádění dalších chyb do kódu, z důsledku nepozornosti či nedostatku času. Pokud není sjednocena znalost jazyka, ve kterém je software tvořen, ubírá se čas celému týmu zbytečnou kontrolou.  
  
 
*'''Testování jednotek'''
 
*'''Testování jednotek'''
  
- Jedná se o formu testování, která přestála veškerý vývoj agilních metodik bez větší změny.
+
- Poté, co zdrojový kód ověří programátor, je na řadě test jednotek neboli unit testing. Testovaná jednotka je testovatelná část aplikačního programu. Samotné testy se v tomto případě zapisují ve formě programového kódu, proto se jím zabývají většinou vývojáři. Platí, že pokud se testují jednotky, nesmí projekt běžet. Jedná se o formu testování, která přestála veškerý vývoj agilních metodik bez větší změny. Platí zde pravidlo, že čím dříve je chyba nalezena a opravena, tím méně času oprava zabere.
  
 
*'''Integrační testování'''
 
*'''Integrační testování'''
  
- Integrační testy připravuje testovací tým. Jedná se o sadu testů, které zkoumají správnost vnitřní integrity aplikace.
+
- Integrační testy připravuje testovací tým. Jedná se o sadu testů, které zkoumají správnost vnitřní integrity aplikace. Je testováno, zda komunikace mezi jednotlivými komponenty uvnitř aplikace je bezproblémová. Dále se testuje integrita mezi komponentou a operačním systémem, hardwarem nebo rozhraním různých systémů. V této fáze je tak testována integrace dosud jednotlivě ověřených částí. Pokud by chyba nebyla objevena v této části, projevila by se v průběhu dalších úrovní testování.
  
 
*'''Systémové testování'''
 
*'''Systémové testování'''
  
- Tyto testy ověřují aplikaci jako celek. Jsou používány v pozdějších fázích vývoje. Ověřují aplikaci z pohledu zákazníka.
+
- Tyto testy ověřují aplikaci jako celek. Jsou používány v pozdějších fázích vývoje. Ověřují aplikaci z pohledu zákazníka. Jsou simulovány podle různých scénářů kroky, které by se v reálném životě mohly stát. Chyby se opravují, a dále jsou tyto chyby opět testovány. Součástí tohoto testování jsou jak funkční, tak i nefunkční testy. Jedná se o poslední úroveň testování, která probíhá před tím, než je produkt předán zákazníkovi.  
  
 
*'''Akceptační testování'''
 
*'''Akceptační testování'''
  
- Akceptační testy probíhají na straně zákazníka. Pokud všechny předchozí etapy testů proběhly v pořádku, je možné předat aplikaci zákazníkovi.
+
- Akceptační testy probíhají na straně zákazníka. Pokud všechny předchozí etapy testů proběhly v pořádku, je možné předat aplikaci zákazníkovi. Pokud jsou nalezeny nějaké nesrovnalosti mezi zadáním a dodanou aplikací, je zpětná vazba předána zpět vývojovému týmu. V této fázi už je o dost těžší chyby najít, a tak se často oprava prodlouží. 
  
 
===Testy dle přístupu ke kódu===
 
===Testy dle přístupu ke kódu===
Řádek 54: Řádek 55:
 
*'''„Black box“ testování'''
 
*'''„Black box“ testování'''
  
- Při použití těchto testů nemá tester žádný přístup ke kódu, neví tedy jak přesně systém spolupracuje s daty.  
+
- Při použití těchto testů nemá tester žádný přístup k programovanému kódu, neví tedy jak přesně systém spolupracuje s daty. Jeho hlavním úkolem je tedy sledovat a vyhodnotit, jaký výsledek je získán po vložená různych vstupních dat.  
  
 
*'''„White box“ testování'''
 
*'''„White box“ testování'''
  
– Zde tester zná vnitřní strukturu softwaru. Testují se průchody zdrojovým kódem, reakce kódu na prázdné nebo nestandardní hodnoty.
+
– Zde tester zná vnitřní strukturu softwaru, narozdíl od předchozího příkladu testování. Testují se průchody zdrojovým kódem, reakce kódu na prázdné nebo nestandardní hodnoty.
  
 
*'''„Grey box“ testování'''
 
*'''„Grey box“ testování'''
Řádek 70: Řádek 71:
 
*'''Statické testování'''
 
*'''Statické testování'''
  
– Toto testování nevyžaduje běh programu. Využívá se v prvotních fázích životního cyklu softwaru.
+
– Toto testování nevyžaduje běh programu. Využívá se v prvotních fázích životního cyklu softwaru. Kontrolují se specifikace požadavků a revizí kódu.  
  
 
*'''Dynamické testování'''
 
*'''Dynamické testování'''
  
– Tady je již vyžadován běh aplikace. Používá se v pozdějších fázích vývoje a je zaměřeno na bezchybnost provozu.  <br><ref>KAJAN, Miroslav. Metody a organizace testování software [online]. Brno, 2015 [cit. 2021-11-21]. Dostupné z: https://www.vut.cz/www_base/zav_prace_soubor_verejne.php?file_id=115100. Diplomová práce. Vysoké učení technické. Vedoucí práce Jitka Kreslíková.</ref>
+
– Tady je již vyžadován běh aplikace. Používá se v pozdějších fázích vývoje a je zaměřeno na bezchybnost provozu.  <br><ref name=":0">KAJAN, Miroslav. Metody a organizace testování software [online]. Brno, 2015 [cit. 2021-11-21]. Dostupné z: https://www.vut.cz/www_base/zav_prace_soubor_verejne.php?file_id=115100. Diplomová práce. Vysoké učení technické. Vedoucí práce Jitka Kreslíková.</ref>
 +
 
 +
<br />
 +
 
 +
== Chyby v testování ==
 +
Po testování je na řadě detekce chyb. Ta může bát onačena jako správná, tedy true positive, nebo nesprávná, false positive. Pokud nebyla nalezena žádná detekce, která by byla relativní, označuje se jako správně vyhodnocená, true negative a nebo jako chybně vyhodnocená, tedy false negative.
 +
 
 +
Z počtu správných a chybných detekcí a celkové velikosti vzorku je možné následně odvodit počet metrik, které charakterizují úspěšnost nástroje. Každý detektor chyb a skupinu detektorů na jeden typ chyb byly určeny a vypočteny číselné charakteristiky:
 +
 
 +
* '''Senzitivita''' (Sensitivity) – Část chyb, která byla odhalena mezi konstrukcemi s chybou
 +
* '''Specificita''' (Specificity) – Část bezchybných konstrukcí, ve kterých nebyla ani hlášena chyba
 +
* '''Preciznost''' (Precision) – Část správných detekcí mezi všemi ostatními detekcemi
 +
* '''Přesnost''' (Accuracy) – Relativní počet správných rozhodnutí, zda konstrukce chybu obsahuje či ne<ref>FORMÁNEK, David. Nástroje pro statickou a dynamickou analýzu kódu se zaměřením na bezpečnostní chyby [online]. Brno, 2014 [cit. 2021-11-26]. Dostupné z: https://is.muni.cz/th/pngje/bp.pdf. Bakalářská práce. Masarykova univerzita. Vedoucí práce Petr Švenda.</ref>
  
 
==Automatizace testů a testovací nástroje==
 
==Automatizace testů a testovací nástroje==

Aktuální verze z 26. 11. 2021, 16:42

Stránka ve výstavbě
Inkwell icon - Noun Project 2512.svg Na této stránce se právě pracuje. Prosím needitujte tuto stránku, dokud na ní zůstává tato šablona. Předejdete tak editačnímu konfliktu. Jestliže uběhla od poslední editace doba alespoň dvou dnů, neváhejte tuto šablonu odstranit. Inkwell icon - Noun Project 2512.svg

Testování softwaru je oblast, která se zabývá kontrolou kvality nebo chyb programů. Při testování je kladen důraz na kvalitu a na nalézání chyb, které by v budoucnu mohly negativně ovlivnit celý projekt, na kterém vývojový tým pracuje. Vše začíná stanovením vizí a cílů, které by mělo testování naplnit. Poté je na řadě určení rozsahu testování. Testování pak je zaměřené na zkoumání produktu v různých úrovních a nesmí chybět ani pravidelné reportování o stavu produktu. [1]

Charakteristika

Testování softwaru je jednou z několika složek IT struktury, která se může jevit jako nepříliš důležitá, ale opak je pravdou. V realitě je testování softwaru pomyslnou špičkou ledovce – dle přání zákazníka je navržen softwarový produkt, ale je dokončen a předán až v momentě, kdy na něm odvede svou práci tester. Tester kontroluje, zda výsledný produkt odpovídá zadání zákazníka, obsahuje všechny potřebné funkce a zda tyto funkce správně pracují. Důležitá je i uživatelská přívětivost pro budoucího uživatele softwaru. [2]

Testovací cyklus

Tester

Testování softwaru má několik fází, které je důležité dodržovat:

  • Plánování testů

Stanovení testovacích požadavků, určení strategie testování, identifikace zdrojů pro testy a příprava testovacího plánu.

  • Analýza a příprava testů

Návrh jednotlivých testů, které ověří, zda jsou požadavky na systém správné.

  • Provedení a vyhodnocení testů

V této fázi jsou samotné testy provedeny a jsou vyhodnoceny výsledky, i zda nedošlo k chybě.

  • Sledování chyb

Tato fáze řeší chyby, které mohly nastat. Řeší jejich závažnost a jak je možné je odstranit. [3]

Typy testů

Testy lze dělit na dělit na tři základní oblasti:

Testy z hlediska chronologizace

- Kdy daná testovací aktivita nastává z pohledu vývojového modelu

  • Testování vývojářem

- Při vývoji jsou prvotní testy označovány jako assembly testy. Veškerá kontrola probíhá na úrovni zdrojového kódu, jeden vývojář kontroluje kód po druhém. Samotná kontrola tak probíhá na úrovni samotného testování kódu. Pro kvalitní testování je potřeba mít mezi programátory jednotný přístup k psaní kódu. Při assembly testování může docházet například k zavádění dalších chyb do kódu, z důsledku nepozornosti či nedostatku času. Pokud není sjednocena znalost jazyka, ve kterém je software tvořen, ubírá se čas celému týmu zbytečnou kontrolou.

  • Testování jednotek

- Poté, co zdrojový kód ověří programátor, je na řadě test jednotek neboli unit testing. Testovaná jednotka je testovatelná část aplikačního programu. Samotné testy se v tomto případě zapisují ve formě programového kódu, proto se jím zabývají většinou vývojáři. Platí, že pokud se testují jednotky, nesmí projekt běžet. Jedná se o formu testování, která přestála veškerý vývoj agilních metodik bez větší změny. Platí zde pravidlo, že čím dříve je chyba nalezena a opravena, tím méně času oprava zabere.

  • Integrační testování

- Integrační testy připravuje testovací tým. Jedná se o sadu testů, které zkoumají správnost vnitřní integrity aplikace. Je testováno, zda komunikace mezi jednotlivými komponenty uvnitř aplikace je bezproblémová. Dále se testuje integrita mezi komponentou a operačním systémem, hardwarem nebo rozhraním různých systémů. V této fáze je tak testována integrace dosud jednotlivě ověřených částí. Pokud by chyba nebyla objevena v této části, projevila by se v průběhu dalších úrovní testování.

  • Systémové testování

- Tyto testy ověřují aplikaci jako celek. Jsou používány v pozdějších fázích vývoje. Ověřují aplikaci z pohledu zákazníka. Jsou simulovány podle různých scénářů kroky, které by se v reálném životě mohly stát. Chyby se opravují, a dále jsou tyto chyby opět testovány. Součástí tohoto testování jsou jak funkční, tak i nefunkční testy. Jedná se o poslední úroveň testování, která probíhá před tím, než je produkt předán zákazníkovi.

  • Akceptační testování

- Akceptační testy probíhají na straně zákazníka. Pokud všechny předchozí etapy testů proběhly v pořádku, je možné předat aplikaci zákazníkovi. Pokud jsou nalezeny nějaké nesrovnalosti mezi zadáním a dodanou aplikací, je zpětná vazba předána zpět vývojovému týmu. V této fázi už je o dost těžší chyby najít, a tak se často oprava prodlouží.

Testy dle přístupu ke kódu

- Je hledisko viditelnosti zdrojového kódu ze strany samotného testera

  • „Black box“ testování

- Při použití těchto testů nemá tester žádný přístup k programovanému kódu, neví tedy jak přesně systém spolupracuje s daty. Jeho hlavním úkolem je tedy sledovat a vyhodnotit, jaký výsledek je získán po vložená různych vstupních dat.

  • „White box“ testování

– Zde tester zná vnitřní strukturu softwaru, narozdíl od předchozího příkladu testování. Testují se průchody zdrojovým kódem, reakce kódu na prázdné nebo nestandardní hodnoty.

  • „Grey box“ testování

– Zde hovoříme o kombinaci předchozích dvou kategorií. Může se jednat o situaci, kdy software testujeme přes například uživatelské rozhraní.

Testy dle běhu programu

- dle nutnosti běhu programu

  • Statické testování

– Toto testování nevyžaduje běh programu. Využívá se v prvotních fázích životního cyklu softwaru. Kontrolují se specifikace požadavků a revizí kódu.

  • Dynamické testování

– Tady je již vyžadován běh aplikace. Používá se v pozdějších fázích vývoje a je zaměřeno na bezchybnost provozu.
[1]


Chyby v testování

Po testování je na řadě detekce chyb. Ta může bát onačena jako správná, tedy true positive, nebo nesprávná, false positive. Pokud nebyla nalezena žádná detekce, která by byla relativní, označuje se jako správně vyhodnocená, true negative a nebo jako chybně vyhodnocená, tedy false negative.

Z počtu správných a chybných detekcí a celkové velikosti vzorku je možné následně odvodit počet metrik, které charakterizují úspěšnost nástroje. Každý detektor chyb a skupinu detektorů na jeden typ chyb byly určeny a vypočteny číselné charakteristiky:

  • Senzitivita (Sensitivity) – Část chyb, která byla odhalena mezi konstrukcemi s chybou
  • Specificita (Specificity) – Část bezchybných konstrukcí, ve kterých nebyla ani hlášena chyba
  • Preciznost (Precision) – Část správných detekcí mezi všemi ostatními detekcemi
  • Přesnost (Accuracy) – Relativní počet správných rozhodnutí, zda konstrukce chybu obsahuje či ne[4]

Automatizace testů a testovací nástroje

Aby testy proběhly precizně a úspěšně ke spokojenosti všech zapojených stran, je do celého procesu investovat nemálo času. I tato oblast IT se proto automatizuje. Existuje proto celá řada testovacích nástrojů, které mohou být využity ke zrychlení testovacího procesu. Můžeme využít nástroje, které jsou uskutečňované pomocí standardních rozhraní testované aplikace. Pro tyto typy testů existuje velké množství komerčně dostupných nástrojů, například ATF (Softbridge), WinRunner (Mercury Interactive), Rational Robot (Rational) a další. Pokud se jedná o nestandardní rozhraní, je nutné si vytvořit vlastní testovací nástroj, jež bude vyvíjen společně s aplikací, která se podrobí testu. [5]

Manuální testování x automatizované testování

Při testování softwaru se můžeme setkat se dvěma druhy testování, s manuálním a automatizovaným. Jak již bylo řečeno výše, při automatizovaném testování je možné ušetřit čas a využít testovací nástroje. Velkou nevýhodou je ale neustálá údržba zkoušek. Manuální testování oproti tomu je prováděno ručně testerem, který vše poctivě proklikává a nemusí se starat o údržbu nástroje pro testování. [6]

Testování softwaru x Quality Assurance

V oblasti testování softwaru se můžeme setkat s pojmem Quality Assurance neboli zajištění kvality. Na první pohled se může zdá, že mezi oběma pojmy není rozdíl, ale je. Quality Assurance je nadřazený pojem pro testování softwaru. Obě oblasti si kladou stejné cíle – zlepšení softwaru, ale QA zvyšuje kvalitu díky zlepšení procesu a testování díky hledání chyb. Je důležité mezi těmito pojmy vidět rozdíl, který je zásadní. [7]

Softwarový tester

Osoba, která v testování softwaru má největší uplatnění je softwarový tester. Kromě testera se ale na testování podílí i další osoby, jako vývojář softwaru, projektový manažer, ale i koncový uživatel.

Kvalifikovaný tester musí zvládat celou řadu činností, například:

  • Analýza požadavků na testování
  • Tvorba a aktualizace testovací dokumentace
  • Příprava testovacích dat
  • Provádění testů podle testovací dokumentace
  • Dokumentace průběhu testování
  • Reportování chyb a výsledků testů
  • Podpora vývojového týmu [8]

Odkazy

Reference

  1. 1,0 1,1 KAJAN, Miroslav. Metody a organizace testování software [online]. Brno, 2015 [cit. 2021-11-21]. Dostupné z: https://www.vut.cz/www_base/zav_prace_soubor_verejne.php?file_id=115100. Diplomová práce. Vysoké učení technické. Vedoucí práce Jitka Kreslíková.
  2. Co je testování softwaru? Kitner [online]. [cit. 2021-11-21]. Dostupné z: https://kitner.cz/testovani_softwaru/co-je-testovani-softwaru/
  3. ZELINKA, Bořek. Testování softwaru [online]. In: . [cit. 2021-11-26]. Dostupné z: https://d3s.mff.cuni.cz/legacy/teaching/commercial_workshops/previous/1213/zelinka-zajisteni_kvality_softwarovych_produktu.pdf
  4. FORMÁNEK, David. Nástroje pro statickou a dynamickou analýzu kódu se zaměřením na bezpečnostní chyby [online]. Brno, 2014 [cit. 2021-11-26]. Dostupné z: https://is.muni.cz/th/pngje/bp.pdf. Bakalářská práce. Masarykova univerzita. Vedoucí práce Petr Švenda.
  5. Testování a diagnostika softwaru. Automa [online]. [cit. 2021-11-21]. Dostupné z: https://automa.cz/cz/casopis-clanky/testovani-a-diagnostika-softwaru-2000_08_27838_702/
  6. Automatizované testování. Testování softwaru [online]. [cit. 2021-11-21]. Dostupné z: http://testovanisoftwaru.cz/automatizovane-testovani/
  7. Co je testování softwaru? Kitner [online]. [cit. 2021-11-21]. Dostupné z: https://kitner.cz/testovani_softwaru/co-je-testovani-softwaru/
  8. Softwarový tester. Národní soustava povolání [online]. [cit. 2021-11-21]. Dostupné z: https://nsp.cz/jednotka-prace/softwarovy-tester

Související stránky

Softwarová studia

Software

Popište proces vývoje softwaru, jeho jednotlivé fáze a charakterizujte profese, které se na něm podílejí. Odlište vodopádový a spirálový styl vývoje. Vysvětlete, jak se typicky

označují jednotlivé verze

Knihovnické automatizované systémy a knihovnický software

Kultura a umění kódů a dat: software, simulace, vizualizace

Zdrojový kód

Klíčová slova

IT, Informatika, Software, Tester, PC