Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

BiologieBudovaChemieEkologieEkonomieElektřinaFinanceFyzikální
GramatikaHistorieHudbaJídloKnihyKomunikaceKosmetikaLékařství
LiteraturaManagementMarketingMatematikaObchodPočítačůPolitikaPrávo
PsychologieRůznéReceptySociologieSportSprávaTechnikaúčetní
VzděláníZemědělstvíZeměpisžurnalistika

Automatické testování softwaru

počítačů



+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

TERMENI importanti pentru acest document

Automatické testování softwaru

Automatické testování spočívá v použití softwarových nástrojů pro kontrolu provádění testů, porovnávání získaných výsledků s očekávanými, nastavování podmínek pro testování a dalších kontrolních a záznamových funkcí souvisejících s testováním [WIKI6]. Nutno podotknout, že celý proces automatického testování vyžaduje minimální lidský zásah a při vhodných nástrojích a zvolených testech může běžet zcela samostatně.



Problémy manuálního testování

Klasický manuální přístup k testování softwaru se při nasazení na větší projekty potýká s mnoha problémy. Některé z nich mohou být odstraněny nebo alespoň částečně kompenzovány zavedením automatických testů

Náklady na testování

Při testování větších projektů je nutné počítat s odpovídajícím zvýšením nákladů, které se budou muset vynaložit na testování. Čím větší oblast funkčnosti budeme testovat, tím více testerů budeme muset zaměstnat. Dá se tedy říci, že při použití manuálního testování rostou náklady na testování lineárně s velikostí projektu.

V případě nasazení automatického testování se v oblasti nákladů uplatňuje jiný princip. Vzhledem k tomu, že je samotný průběh testů automatizován, vystačí si testovací tým s menším počtem testerů, kteří píší a udržují automatické testové skripty. Samotné testování probíhá automatizovaně se zanedbatelnými náklady. Počáteční náklady na nákup testovacích nástrojů jsou sice v porovnání s manuálním testováním vyšší, ale náklady na samotný provoz testů nestoupají s velikostí projektu tak strmě jako u manuálního testování. Celou situaci můžeme vidět schématicky na následujícím obrázku.


Opakování testů

Několikanásobné opakování manuálních testů, například při regresním testování, vede k větším časovým nárokům na testování.

Zavedením automatických testů tento problém eliminujeme. Automatické testy se výborně uplatní právě tam, kde je nutné časté opakování testů. Jednou vytvořený automatický test můžeme opakovaně spustit a výsledky rychle analyzovat bez větších časových nároků.

Přesnost testů

Tester se může při provádění manuálních testů přehlédnout nebo udělat jinou lidskou chybu která výsledky testu bez vědomí testera znehodnotí.

Díky absenci lidského zásahu během provádění automatických testů jsou jejich běh a výsledky, pokud nenastane chyba technického charakteru, vždy naprosto přesné. Lidská chyba může automatické testy znehodnotit pouze při jejich vytváření.

Rozsah testů

Pomocí manuálním testování není prakticky možné otestovat veškeré možné kombinace průchodů testovanou aplikací, vstupů a dalších podmínek. Vždy musíme zvolit rozumný kompromis mezi rozsahem testů a požadovanou kvalitou (viz. obrázek 3).

Při dobře napsaných automatických testech můžeme pokrýt větší kombinaci výše zmíněných podmínek, než při použití manuálních testů. Softwarové nástroje pro automatické testování umožňují generovat náhodné hodnoty a otestovat tak obrovské množství různých vstupních hodnot, což by bylo při použití manuálního testování nemožné. Podobný postup můžeme použít i pro náhodné generování procházení aplikací.

Rychlost testování

Rychlost manuálního testování je omezena rychlostí práce testera, který pracuje s testovanou aplikací, zadává vstupní hodnoty, kontroluje výsledky a zapisuje chyby.

Při běhu automatických testů probíhá klikání na jednotlivé objekty aplikace, zadávání vstupních hodnot a ověřování testovaných hodnot téměř okamžitě a rychlost testování je tak omezena pouze rychlostí odezvy testované aplikace.

Pracovní doba testování

Doba, po kterou mohou být prováděny manuální testy, je omezena pracovní dobou testerů, kterou nemůžeme žádnými prostředky trvale prodloužit.

Pracovní doba automatických testů je omezena pouze volným počítačovým časem, během kterého automatické testy běží.

Nevýhody automatického testování

I přes výše uvedená pozitiva   má nasazení a použití automatických testů také své negativní stránky.

Počáteční finanční investice

S nasazením automatického testování jsou spojeny veliké počáteční investice do nákupu speciálních softwarových nástrojů pro jeho podporu. Cena licencí se pohybuje v řádech statisíců korun a může představovat citelný zásah do rozpočtu celého projektu.

Tvorba testových skriptů

Tvorba testových skriptů pro automatické testování klade na testera větší časové a profesionální nároky než tvorba skriptů pro manuální testování. I když je většina robustních testovacích nástrojů vybavena řadou ulehčujících funkcí, tvorba složitějších testových skriptů se neobejde bez zkušenosti s programováním a vyžaduje více času než tvorba manuálního skriptu, který testuje stejnou funkcionalitu.

Udržování testových skriptů

Správný běh automatických testů je náchylný ke změnám v testované aplikaci. Testové skripty v sobě obsahují mimo logického postupu celého testu také konkrétní způsob provedení v dané aplikaci. Tento způsob provedení je úzce svázán s uživatelským rozhraním testované aplikace, umístěním tlačítek, menu a dalších ovládacích prvků. Pokud nastane jakákoliv změna v uživatelském rozhraní aplikace, musíme tuto změnu řešit úpravou příslušných částí testových skriptů, jinak hrozí, že testové skripty nebudou fungovat správně.

Některé robustní nástroje pro automatické testování obsahují uživatelsky nastavitelné mechanismy pro rozpoznávání objektů v testované aplikaci. Pokud dojde k přesunu některých ovládacích prvků nebo jejich přejmenování jsou stále schopné najít a použít ten správný ovládací prvek.

Pokud je ale změna v testované aplikaci natolik veliká, že si s ní rozpoznávací mechanismus testovacího nástroje neporadí, jsme nuceni testový skript upravit podle aktuálního stavu testované aplikace.

Výhody automatického testování

Nevýhody automatického testování

+ Zanedbatelné náklady na provoz testů

+ Opakovatelnost testů

+ Vyloučení lidské chyby při běhu testů

+ Přesné a spolehlivé

+ Větší rozsah testování než u manuálních __testů

+ Větší rychlost testování než u manuálních __testů

+ Volná pracovní doba

- Veliké počáteční investice

- Delší doba nutná k vytvoření testových skriptů

- Potřeba kvalifikovanějších testerů

Nutnost při způsobovat vytvořené skripty při každé větší změně v testované aplikaci

- Drahé testovací nástroje

Tabulka : Výhody a nevýhody automatického testování

Využití automatického testování

Jednou z hlavních předností automatických testů je, jak již bylo řečeno výše, jejich snadná opakovatelnost. To z nich činí ideální nástroj pro nasazení na testy, které musí při stejném postupu proběhnout několikrát za různých vstupních a provozních podmínek. Jedná se například o opakování testů pro více různých platforem, lokálních nastavení, verzí, datových sad, při chování uživatele závislé na jeho roli nebo regresní testy. Díky modifikacím těchto podmínek získáme jednoduše a rychle mnohem komplexnější otestování než by tomu bylo v případě manuálních testů.

Nasazení automatických testů je také praktické při časově náročném testování vstupních hodnot a následné kontrole správného výstupu. Může se jednat například o ověřování výpočtů nebo opakované zadávání údajů. Díky rychlému generování vstupních dat můžeme snadno zkontrolovat obrovské množství vstupů a výstupů, což by bylo při použití manuálního testování neuskutečnitelné.

Nasazení automatického testování

Samotné nasazení automatického testování provází nejčastěji tyto otázky: kdy nasadit automatické testování a které testy automatizovat. V následujících odstavcích se pokusím sumarizovat informace z nejrůznějších zdrojů, které se těmito otázkami zabývají.

Kdy nasadit automatické testování

Tato otázka je pro nasazení automatického testování zcela zásadní ale odpověď na ní není jednoduchá. Obecné pravidlo tvrdí, že bychom měli nasadit automatické testování všude tam, kde vícekrát opakujeme stejný test, popřípadě stejný postup testu s jinými vstupními hodnotami. V některých případech to ale nemusí platit. Může se stát, že manuální opakování testů bude stále časově i finančně výhodnější než vývoj, údržba a provoz automatických testů.

Pokud se na celý problém podíváme z hlediska nákladů na testování, můžeme vycházet ze schématického grafu (obrázek 6, strana 20), na kterém je zobrazen růst nákladů na testování v závislosti na rozsahu testování. Na něm je vidět, že od určitého bodu se stává použití automatického testování finančně výhodnějším než použití manuálního testování. Tento bod můžeme přibližně určit pomocí kalkulace odhadovaných celkových nákladů na automatické a manuální testování pro různé úrovně rozsahu testování.

Podobný pohled je možný i z hlediska času potřebného na testování. Opět použijeme schématický graf (obrázek 6, strana 20), kde vzrůstající náklady nahradíme časem, který se v tomto případě chová podobně jako náklady.

Testování různých aplikací je natolik odlišné, že přesné pravidlo o nasazení automatických testů bohužel nemáme. Můžeme se pokusit rozhodnout na základě výše uvedených postupů nebo se spolehnout na vlastní zkušenosti.

Které testy automatizovat

Dalším důležitým rozhodnutím při nasazení automatických testů je otázka výběru vhodných testů k automatizaci. Dle [SEA07] jsou nejvhodnějšími kandidáty vícenásobně opakované testy, testy hodnotící rizikové podmínky, testy, které je nemožné nebo velmi nákladné provánět manuálně, testy, u kterých můžeme testovat mnoho datových hodnot k vykonání stejné akce a testy, které testují stejnou funkcionalitu na různých platformách a konfiguracích. Stejný zdroj dále uvádí, že se máme před samotným výběrem testů k automatizaci definovat cíl automatického testování a příslušné typy testů a procesů, jejichž automatizace bude tento cíl podporovat. Na základě takto definovaných podmínek poté vybíráme konkrétní testy.

Další z postupů, který můžeme pro výběr testů vhodných k automatizaci použít, je zmíněn v [HOX07]. Jeho základem je definování sady hodnotících kritérií. Těmito kritérii může být například frekvence použití testu, ušetřený čas v případě automatizace testu nebo náročnost jeho implementace. Pro každé kritérium dále definujeme několik bodově ohodnocených kategorií. Každý navrhovaný test poté v rámci jednotlivých kritéria zařadíme do příslušné kategorie a získané bodové ohodnocení za všechny kategorie použijeme jako základ pro rozhodnutí o automatizaci testu.

Výhodou tohoto postupu je jeho flexibilita. Jednotlivá kritéria, jejich kategorie a bodová ohodnocení můžeme libovolně modifikovat. Při celkovém hodnocení a rozhodnutí o automatizaci záleží opět na námi definovaných podmínkách. Pro zkušeného test managera představuje tento postup, při správném nastavení podmínek, dobrý nástroj pro objektivní rozhodování o automatizaci testů.


Nebezpeční automatického testování

Nasazení automatických testů sebou přináší bezesporu řadu výhod. Avšak je také nutné zmínit se o některých úskalích, které sebou může tento krok přinést.

Tato tématika je zajímavě rozebraná v článku [IBA06]. Jedná se o interview, ve kterém se dotazovaný zmiňuje o nasazení automatických testů na projektu testování rozsáhlé webové aplikace. Krátce po jejich nasazení došlo ke špatně řízenému vytváření jednoduchých testových skriptů. S jejich vzrůstajícím počtem začala testerů jejich údržba zabírat většinu pracovní doby a už nezbýval téměř žádný čas na vývoj dalších. Dotazovaný tento neúspěch připisuje dvěma faktorům. Testeři, kteří vyvíjeli testové skripty, neměli dostatečnou znalost programování a v krátkém čase vytvořili veliké množství jednoduchých testových skriptů. Takto ušetřený čas si ale vybral svou daň na jejich obtížné údržbě, která potom zabrala většinu pracovní doby testerů. Ti se tak nevědomky stali otroky své vlastní práce. Druhý faktor podílející se na neúspěchu vidí autor v nedostatečném ošetření celého testování z hlediska řízení a organizace. Dotazovaný podotýká, že pro úspěch automatického testování je k němu nutné přistupovat jako k vývojovému projektu s vhodným designem a architekturou.

Další problém souvisí s použitými testovacími nástroji. Jejich pořízení představuje značnou investici a musí být věnováno dostatečné úsilí na vybrání nástroje přesně odpovídajícího našim požadavkům. Výběr špatného nástroje se nemusí projevit ihned, a pozdní odhalení takové skutečnosti vede ke značným finančním a časových ztrátám.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 618
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved