Regresní testování
Author
Albert FloresRegresní testování je technika softwarového testování, která je zaměřena na zjištění možných chyb v aplikaci poté, co byla provedena změna nebo doplnění kódu. Cílem tohoto testování je zajistit, že nové úpravy nepřinesly žádné negativní dopady na již existující funkčnost aplikace. Regresní testování je důležitou součástí životního cyklu softwarového vývoje a mělo by být prováděno při každé změně, která je provedena na aplikaci. Tento typ testování se zaměřuje na ověřování, zda změny provedené v rámci aplikace neovlivnily žádnou jinou část systému negativně. Regresní testování se skládá z několika kroků, včetně vytvoření regresních testovacích scénářů, které testují kritické funkce a procesy aplikace. Tyto scénáře se poté opakovaně spouštějí, aby se ověřilo, zda nové úpravy nezpůsobily žádné komplikace. Regresní testování může být prováděno manuálně nebo pomocí automatizovaných nástrojů. Manuální testování je náročné a časově náročné, ale umožňuje testerům lépe porozumět aplikaci a identifikovat potenciální chyby. Na druhou stranu automatizované testování je efektivnější a rychlejší, ale vyžaduje znalost skriptovacích jazyků a nástrojů. Regresní testování je nezbytné pro zajištění kvality a stabilitu softwarové aplikace. Pomáhá odhalit chyby a problémy dříve, než se dostanou k uživatelům. Je to důležitý proces, který by neměl být opomíjen při vývoji softwaru.
Regresní testování ( ale i ) je provedení funkčních a nefunkčních testů pro zjištění, zda dříve vyvinutý a otestovaný software po změně stále funguje. Pokud se chyby objeví, říkáme, že došlo k regresi. Náprava chyb nalezených při regresním testování může zahrnovat opravy softwarových chyb, vylepšování softwaru, změny konfigurace, a dokonce i náhradu elektronických součástek. Sady regresních testů se obvykle zvětšují s každou nalezenou závadou, takže bývají velmi rozsáhlé, a proto se pro ně často využívá automatizace testů. Někdy se provádí analýza vlivu změn pro určení vhodné podmnožiny testů .
Pozadí
Při aktualizaci, změnách nebo znovupoužití softwaru pro jiný účel je běžné, že se objevují chyby; ne vždy jsou to chyby nové, často se jedná i o chyby v minulosti již opravované. K opětovnému objevování starých chyb může dojít kvůli ztrátě opravy v důsledku špatných postupů (nebo jednoduše lidské chyby) při verzování. +more Další příčinou může být fakt, že oprava obecnější chyby byla provedena pouze pro určitý speciální případ, ve kterém byla chyba původně pozorována. Tomuto jevu se někdy říká „softwarová křehkost“. Často oprava problému v jedné oblasti neúmyslně způsobí softwarovou chybu v jiné oblasti. Může se také stát, že při přepracování určité vlastnosti se část chyb, které se objevily v původní implementaci, objeví i v přepracované verzi.
Při procesu lokalizace a opravy chyby se považuje za dobrý kódovací postup vytvoření testu, který je schopen příslušnou chybu odhalit, a ověření, že se chyba znovu neobjevila jeho provedením po dalších úpravách programu. I když toho může být dosaženo pomocí postupů manuálního testování, vhodnější je používání automatizovaných testovacích nástrojů. +more Taková sada testů obsahuje softwarové nástroje, které umožňují testovacímu prostředí automaticky provádět všechny regresní testovací případy automaticky; součástí některých projektů jsou automatizované systémy, které zajišťují, aby se všechny regresní testy znovu spouštěly v zadaných intervalech a oznamovaly všechna selhání (která mohou znamenat regres nebo chybný či zastaralý test). Obvyklou strategií je spustit takovou sadu po každém úspěšném překladu (u malých projektů), každou noc nebo jednou týdně. Tyto strategie lze automatizovat externími nástroji.
Regresní testování je nedílnou součástí metodiky extrémní programování. U této metody je vývojová dokumentace nahrazena širokým, opakovatelným a automatizovaným testováním celého softwarového balíčku v každé fázi procesu vývoje softwaru. +more Regresní testování se provádí po dokončení funkčního testování pro ověření, že ostatní funkcionality jsou stále funkční.
Ve firemním světě je regresní testování tradičně prováděno týmem zajištění kvality softwaru na závěr práce vývojového týmu. Závady odhalené v této fázi bývá drahé opravit, proto se přistupuje k rozšiřování unit testingu. +more Vývojáři často vytvářeli testovací případy jako část vývojového cyklu, ale většinou se jednalo o funkční testy nebo unit testy, které verifikují pouze určené výsledky. Testování nutí vývojáře, aby se zaměřili na unit testy a aby zahrnuli kladné i záporné testovací případy.
Techniky
K technikám regresního testování patří:
Opakované testování všeho
Při této technice se provádějí všechny testovací případy na aktuálním programu, aby se zkontrolovala jeho integrita. Přestože je nákladné, protože je nutné znovu spustit všechny testovací případy, zaručuje, že změny v kódu nezanesly žádné chyby.
Výběr regresních testů
Na rozdíl testování všeho se při této technice spouští pouze část sady testů (kvůli ceně opakovaného testování všeho), jestliže cena výběru části testů ze sady je menší než kompletní provedení všech testů.
Prioritizace testovacích případů
Prioritizuje testovací případy, aby se zvýšila rychlost s jakou sada testů detekuje chyby. Techniky prioritizace testovacích případů plánuje pořadí provádění testovacích případů tak, že testovací případy, které mají vyšší prioritu, se provádějí před testovacími případy, které mají nižší prioritu.
Typy testovací případ prioritizační
Obecná prioritizace - prioritizují se testovací případy, které budou prospěšné v následujících verzích * Prioritizace závislá na verzi - prioritizují se testovací případy vzhledem k určité verzi softwaru.
Hybridní
Kombinuje výběr a prioritizaci regresních testů.
Výhody a nevýhody
Regresní testování se provádí při provádění změn v existující funkčnosti softwaru nebo po opravě chyb v softwaru. Pro regresní testování se používají různé přístupy. +more Při opakovaném testování všeho je jistota, že změny provedené v softwaru neovlivní existující funkcionality, které nebyly měněny.
Při agilním vývoji softwaru, kdy životní cykly vývoje softwaru jsou velmi krátké, prostředky jsou omezené a změny softwaru jsou velmi časté, může regresní testování vnášet do vývojového procesu příliš velkou režii.
V prostředí vývoje softwaru, kde se často používají komponenty třetích stran, které fungují jako černá skříňka, může být provádění regresních testů obtížné, protože jakákoli změna v komponentech třetích stran může narušovat zbytek systému (a regresní testování komponentů třetích stran je obtížné, protože se jedná o neznámé entity).
Použití
Regresní testování lze používat nejen pro testování korektnosti programu, ale často také pro sledování kvality jeho výstupů. Například při návrhu překladače může regresní testování sledovat velikost kódu a dobu, kterou překlad trvá, a provádět sadu testovacích případů.
Regresní testy lze zhruba rozdělit na funkční testy a unit testy. Zatímco funkční testy aplikují různé vstupy na kompletní program, unit testy zkoušejí jednotlivé funkce, podprogramy a metody objektů. +more Nástroje pro funkční testování a pro unit testing jsou obvykle automatizovány a často se jedná o výrobky třetích stran, které nejsou součástí nástrojů dodávaných s překladačem. Funkční testy obvykle pomocí skriptů testují chování pro různé vstupy programu, mohou dokonce obsahovat automatizovaný mechanismus pro řízení pohybu myši a klikání. Unit testy bývají realizovány jako sada zvláštních funkcí v samotném kódu nebo ve vrstvě ovladačů, které se připojují k testovanému kódu bez jeho modifikací.
Odkazy
Reference
Související články
Nástroje pro řízení kvality * Programování řízené testy
Externí odkazy
[url=http://msdn. microsoft. +morecom/en-us/library/aa292167(VS. 71). aspx]Doporučení firmy Microsoft pro regresní testování[/url] * [url=http://smartbear. com/products/qa-tools/what-is-regression-testing/]What is Regression Testing[/url] Co je to regresní testování od Scotta Barbera a Toma Hustona.
Kategorie:Testování softwaru Kategorie:Extrémní programování