CATEGORII DOCUMENTE |
Bulgara | Ceha slovaca | Croata | Engleza | Estona | Finlandeza | Franceza |
Germana | Italiana | Letona | Lituaniana | Maghiara | Olandeza | Poloneza |
Sarba | Slovena | Spaniola | Suedeza | Turca | Ucraineana |
DOCUMENTE SIMILARE |
|
TERMENI importanti pentru acest document |
|
Ke správnému pochopení problematiky testování softwaru je nezbytné nejprve vyložit několik základních pojmů, na kterých testování softwaru postaveno.
Softwarová chyba (angl. Software bug) je chyba, vada, omyl nebo selhání v počítačovém programu které brání vykonávání původně zamýšlené činnosti (tj. produkování správného výsledku) [WIKI3]. Jedná se o běžný, jev který se nevyhne žádnému složitějšímu softwarovému projektu. Jeden z axiomů testování tvrdí, že čím více chyb najdete, tím více jich v testovaném softwaru ještě je [PAT02] a námi nalezené chyby tvoří pouze špičku pomyslného ledovce. Další z axiomů testování říká, že testování nám nikdy nezaručí, že v aplikaci žádné chyby nejsou [PAT02]. Můžeme se tedy alespoň pokusit vyčistit testovanou aplikaci od těch nejzávažnějších.
Kvalita představuje dle [VEE07] míru, jakou testovaný software splňuje specifikované požadavky, uživatelské potřeby a očekávání. Vyčerpávající definici kvality nám poskytne mezinárodní standard pro hodnocení kvality softwaru ISO 9126, který definuje kvalitu na základě šesti hlavních charakteristik (funkcionalita, spolehlivost, použitelnost, efektivnost, udržovatelnost a přenositelnost) rozdělených dále do celkem 21 vedlejších charakteristik. Každá vedlejší charakteristika obsahuje soubor atributů, které můžou být měřeny a ověřovány na konkrétním softwarovém produktu [WIKI7].
Testování software je termín, který můžeme definovat několika způsoby podle pohledu na danou problematiku. Pokud se na testování softwaru díváme jako na činnost, můžeme se spokojit s nejčastěji se vyskytující a všeobecně přijímanou definicí tj. testování softwaru je hledání chyb v softwaru. Toto tvrzení je pravdivé, i když nepokrývá všechny aspekty testování softwaru. I když je provádění testů a hledání chyb hlavní náplní testování softwaru mezi další aktivity patří také činnosti s plánováním, přípravou a vyhodnocením testů. Pokud bychom tedy chtěli testování softwaru definovat na základě prováděných činností, mohli bychom ho popsat jako plánování, přípravu, provedení a vyhodnocení testů za účelem odhalení chyb v softwaru. Dle [VEE07] je testování softwaru proces sestávající ze statických a dynamických aktivit napříč všemi životními cykly softwarového produktu, který má odhalit chyby, určit že produkt splňuje specifikované požadavky a splňuje svůj účel.
Při pohledu na testování softwaru jako na samostatný obor v rámci vývoje softwaru narazíme na odlišné definice, např. dle [WIKI1] je testování softwaru proces užívaný k měření správnosti, úplnosti, bezpečnosti a kvality vyvinutého softwaru.
Testování softwaru má své pevné místo prakticky ve všech metodikách vývoje softwaru. Ať již prováděno zkušeným testovacím týmem v případě velkých projektů nebo samotnými programátory v případě projektů menších.
Vodopádový model představuje klasický způsob vývoje softwaru. Fázi testování v tomto modelu nacházíme po fázi implementace, kdy je vše naprogramováno a aplikace je připravena k otestování a případnou opravu chyb. Tento přístup je vhodný pro malé projekty, u kterých je možné nalezené chyby v rámci časového úseku naplánovaného pro testování opravit. Růst velikosti a náročnosti projektu je přímo úměrný času a prostředkům nutným na nalezení a opravu chyb.
Obrázek : Pozice testování softwaru vodopádovém modelu vývoje
Iterativní model rozděluje proces vývoje do několika iterací. Výsledkem každé iterace je spustitelná verze softwaru. Testování je zařazeno, podobně jako u vodopádového modelu, po implementační fázi. Díky opakujícím se iteracím a menším celkům, které se testují, je proces testování efektivnější a flexibilnější než u vodopádového modelu.
U některých metodik, používajících iterativní model vývoje softwaru, byly hranice mezi jednotlivými fázemi odstraněny a každá z nich, včetně testování, probíhá s různou intenzitou souběžně s ostatními. Díky tomuto přístupu můžeme při pokrytí postupného vývoje aplikace vhodnými druhy testů zvýšit šance na nalezení a odstranění chyb v ranném stádiu, kdy je jejich odstranění nejjednodušší a nejlevnější.
Základním principem manuálního testovaní je procházení testovanou aplikaci, hledání a záznam chyb. Postup testera testovanou aplikací je dle zvolené metody testování zcela náhodný nebo se drží předem připraveného scénáře s přesně definovaným průchodem testovanou aplikací a akcemi, které se mají provést. Manuální testování je pracný proces a od testera vyžaduje značnou dávku trpělivosti, všímavosti, kreativity a důmyslnosti [WIKI3].
Výhodou manuálního testování je jednoduchost. Jeho provádění může při dobré organizaci a vedení probíhat bez nákladných softwarových nástrojů. Při jednoduchých manuálních testech také nejsou potřeba příliš zkušení a proškolení testeři. Díky lidskému důvtipu a nepředvídatelnosti lze v testované aplikaci docílit mnoha zajímavých stavů, které by se jinak obtížně navozovali a otestovat tak chování aplikace v extrémních podmínkách.
Mezi nevýhody manuálního testování patří časová náročnost a s ní souvisejí náklady na lidské a finanční zdroje. S růstem projektu dochází k odpovídajícímu, téměř lineárnímu růstu času a nákladů nutných k dostatečnému otestování vyvíjené aplikace.
Dalším problémem manuálního testování je volba rozsahu testů.
Při obrovském množství kombinací vstupů, podmínek a postupů,
které můžeme při testování použít, je úplné manuálního otestování libovolné
aplikace prakticky nemožné. Náklady na testování stoupají úměrně s
požadovanou kvalitou a rozsahem testů, a proto musí být zvolen kompromis mezi
rozsahem testů a náklady.
Princip automatického testování spočívá v zaznamenání nebo vyvolání požadované činnosti v testované aplikaci pomocí určitého nástroje pro automatické testování softwaru a následné přehrání a vyhodnocení této činnosti. Lidský zásah je nutný pouze v počáteční fázi záznamu a tvorby automatického testu a případně při jeho vyhodnocení. Samotný test probíhá zcela automaticky.
Mezi výhody patří nízké náklady na samotný provoz, protože veškerou činnost obstarává samotný nástroj bez nutnosti lidského zásahu. Absence lidského faktoru v procesu testování také eliminuje případné chyby a omyly, které vznikají díky lidské nepozornosti.
I přes zjevné výhody se automatické testování potýká s mnoha překážkami. Největší z nich jsou vysoké počáteční náklady, časová a organizační náročnost celého řešení a potřeba kvalifikovaných lidských zdrojů.
Problematice automatického testování softwaru se budu dále podrobněji věnovat ve 3. kapitole mé bakalářské práce.
Manuální testování |
Automatické testování |
+ Jednoduchost + Obejde se bez drahých nástrojů + Vystačí s méně zkušenými pracovníky - Časová náročnost - Náklady rostoucí lineárně s počtem testerů - Není možné otestovat vše |
+ Nízké náklady na samotný provoz + Eliminace lidské chyby + Je možné otestovat veliké množství vstupů a výstupů - Vysoké počáteční náklady - Potřebuje zkušené pracovníky - Časová náročnost na tvorbu testů - Potřebuje drahé softwarové nástroje |
Tabulka : Výhody a nevýhody automatického a manuálního testování
Při testování černé skříňky přistupujeme k testované aplikaci jako k automatu, do kterého vložíme vstupní hodnoty a očekáváme výsledek, který by měl podle specifikace z automatu vypadnout. Nevidíme vnitřní strukturu testované aplikace, tj. její zdrojový kód, funkce, které se odehrávají uvnitř ani způsob jakým bylo z námi zadaných vstupů dosaženo výsledku. Zajímá nás pouze správnost dosažených výsledků.
Pokud jsme při testování černé skříňky zkoumali výsledky bez znalosti vnitřních pochodů, pak je testování bílé skříňky jejím pravým opakem. Známe zdrojový kód a vnitřní strukturu testované aplikace a na základě těchto znalostí můžeme co nejefektivněji určit vstupní data pro otestování dané aplikace. Testování bílé skříňky klade zvláštní nároky na testera, který se mimo znalostí z oblasti testování softwaru neobejde bez znalosti programování a dokonalé orientace ve zdrojovém kódu testované aplikace.
Testování šedé skříňky je kombinací předchozích typů. Testovanou aplikaci testujeme jako černou skříňku, ale zároveň jako doplnění testů nahlížíme do její činnosti [PAT07].
Vzhledem k náročnosti a variabilitě testovacího procesu v různých prostředích, je důležitou otázkou volba typů testů, které budou navrženy, implementovány a provedeny. V testovacím procesu by měl být vždy kladen důraz na to, aby testy pokryly všechny rozměry kvality softwaru. Pro tento účel můžeme použít model FURPS sloužící ke specifikaci požadavků a sledování jejich naplnění. Jednotlivé rozměry kvality v tomto modelu (funkčnost, použitelnost, spolehlivost, výkon a podpora) lze pokrýt určitými typy testů.
Účelem funkčního testování je ověřit zda testovaná aplikace splňuje svými funkcemi business požadavky dané specifikací [WIKI1].
Testování použitelnosti zahrnuje testování všech částí aplikace, které se dostanou do přímého kontaktu s uživatelem. Jedná se o uživatelské rozhraní, dokumentaci, nápovědu nebo školící materiály. Účelem je ověřit, zda je daná část aplikace použitelná a srozumitelná pro běžného uživatele.
Cílem testování spolehlivosti je ověřit stabilitu systému a jeho chování v nestandardních a krizových situacích.
Testování výkonu se zaměřuje na testování práce systému pod vysokou zátěží, rychlostí odezvy systému za určitých podmínek a schopnosti zvládat přístupy více uživatelů najednou.
Testováním podpory se rozumí ověření práce systému na různých konfiguracích, jeho udržovatelnost a adaptabilita.
Progresní testování probíhá při prvním spuštění testu který testuje novou funkcionalitu.
Účelem re-testů je otestování určité oblasti funkcionality poté, co byla v této oblasti opravena chyba a ověření skutečného odstranění této chyby.
Regresní testování je opakované provádění stejné sady testů, které je v ideálním případě prováděno vždy se změnou aplikace nebo testovacího prostředí. Jeho účelem je ověřit stávající funkce nové verze testované aplikace a zjistit, zda změny a opravy nepřinesly žádné další chyby v dosud fungujících částech aplikace.
Testování jednotlivých částí zdrojového kódu, konkrétně nejmenších testovatelných částí (funkcí a procedur u procedurálního nebo metod u objektového programování). Účelem je ověřit že tyto individuální části zdrojového kódu pracují správně [WIKI4]. Takto otestované moduly slouží jako vstupy pro integrační testy.
Účelem integračních testů je odhalit chyby v rozhraních a interakcemi mezi jednotlivými komponentami [VEE07]. Jako vstupy pro integrační testování slouží moduly, které byly otestovány pomocí Unit testů.
Systémové testování je testování provedené na kompletním, integrovaném systému, které má ohodnotit jeho shodu se specifikovanými požadavky [WIKI5]. Jako vstupy slouží softwarové komponenty, které prošly integračními testy.
Formální testování
s důrazem na uživatelské požadavky a business procesy sloužící
k ověření zda systém splňuje nebo nesplňuje
akceptační kritéria, a které umožňuje zadavateli, uživatelům
nebo jiným pověřeným osobám vyslovit svůj souhlas nebo nesouhlas
s předkládaným systémem [VEE07]. Uživatelský
akceptační test se provádí před samotným dodáním hotového systému a jsou
do něj zapojeni koncoví uživatelé a ostatní zainteresované osoby. Pokud
proběhnou úspěšně, testovaná aplikace je přijata a
připravena k implementaci u zadavatele. V opačném
případě nastává další kolo testování a opravy chyb, které je u chyb
nalezených v takto pokročilé fázi vývoje aplikace značně
nákladné a nepříznivě ovlivňuje náklady na celý projekt.
Z obecné definice testování softwaru vyplývá, že jeho cílem je ověření shody testované aplikace a její specifikace. Pokud bychom zvolili konkrétnější definici cíle testování můžeme říci, že cílem testování je objevit co možná nejvyšší počet softwarových chyb [WIKI1]. Tento jednoduše definovaný cíl doplňuje definice cíle testování z [PAT02], který tvrdí že cílem softwarového testera je vyhledávat chyby, vyhledávat je co nejdříve a zajistit jejich nápravu.
Vhodné rozdělení rolí a odpovědnosti v testovacím týmu je důležité k hladkému průběhu a efektivitě celého testování. Hlavou testovacího týmu je vedoucí testů. Jeho úkolem je příprava plánu testů, rozděluje práci mezi jednotlivé členy týmu a dohlíží a zodpovídá za celý testovací proces. Na přípravě plánu testů spolupracuje s analytikem testů, k jehož dalším úkolům patří vyhodnocení provedených testů a vhodné nastavení testovacího procesu. Příprava samotných testových procedur spadá do kompetence designéra testů. Samotní testeři vykonávají jednotlivé testy a zaznamenávají nalezené chyby.
Před začátkem testování je nutné shromáždit kvalitativní a kvantitativní požadavky na testovanou aplikaci. Tyto požadavky se nejčastěji získávají z jejího návrhu a specifikace. Takto sebrané požadavky slouží jako podklad pro vytvoření testovacího plánu.
Základ pro plánování a tvorbu testů tvoří plán testů. Jedná se o dokument obsahující zaměření, přístup, zdroje a časový harmonogram zamýšlených testovacích aktivit. Jsou v něm identifikovány a popsány testovací objekty, vlastnosti, které mají být otestovány, rozdělení testů mezi jednotlivé členy testovacího týmu, testovací prostředí, techniky návrhu testů, vstupní a výstupní kritéria s důvodem jejich volby [VEE07].
Na základě plánu testů jsou vytvořeny příslušné testy, resp. testové procedury. Jedná se o záznam specifikující postup akcí nutných pro vykonání testu [VEE07]. K nim se váže příprava příslušných testovacích dat.
Poslední akcí předcházející samotnému spuštění testů je tvorba testovacího prostředí. Jedná se o prostředí obsahující hardware, software, simulátory, softwarové nástroje a další prvky potřebné pro provedení testů [VEE07]. Jeho hlavním účelem je oddělení testování od procesu vývoje, popřípadě opravy chyb, které by se mohly vzájemně ovlivňovat a narušit přesnost a správnost testovacího procesu.
Podle plánu testů je spuštěno samotné testování. Výsledky provedených testů se zaznamenávají a slouží k pozdější dokumentaci. Nalezené chyby a problémy jsou předány vývojovému týmu, který má na starosti jejich řešení. Po jejich opravě se znovu otestují nebo jsou otestovány v rámci dalšího kola testování, které probíhá až do dosažení požadovaných akceptačních kritérií ze strany zadavatele.
Nutno podotknout že ne všechny chyby musí být odstraněny okamžitě po jejich nalezení. V závislosti na čase a prostředcích vyčleněných na jejich opravu může být oprava některých chyb odsunuta, nemusí být z časových a technických důvodů vůbec opravena, popřípadě může být šalamounsky vyřešena prohlášením za dodatečnou vlastnost systému.
Testování je ukončeno, pokud aplikace projde závěrečnými akceptačními testy a je připravená k implementaci.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 643
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved