Regresní testování - Regression testing - Wikipedia
Vývoj softwaru |
---|
Hlavní činnosti |
Paradigmata a modely |
Metodiky a rámce |
Podpůrné disciplíny |
Praxe |
Nástroje |
Standardy a subjekty znalostí |
Glosáře |
Obrysy |
Regresní testování (zřídka neregresní testování[1]) se znovu spouští funkční a nefunkční testy zajistit, aby dříve vyvinutý a testovaný software fungoval i po změně.[2] Pokud ne, nazvalo by se to a regrese. Mezi změny, které mohou vyžadovat regresní testování, patří Chyba opravy, vylepšení softwaru, konfigurace změny a dokonce i nahrazení elektronické komponenty.[3] Protože sady regresních testů mají tendenci růst s každou nalezenou vadou, často se jedná o automatizaci testů. Někdy a změna dopadové analýzy se provádí k určení vhodné podmnožiny testů (neregresní analýza[4]).
Pozadí
Vzhledem k tomu, že je software aktualizován nebo měněn nebo znovu použit na upravený cíl, je výskyt nových poruch a / nebo znovuobjevení starých poruch zcela běžný. Někdy dochází k opětovnému objevení, protože oprava se ztratí v důsledku špatné kontrola revizí postupy (nebo jednoduché lidská chyba v revizní kontrole). Oprava problému bude často „křehký „v tom, že opravuje problém v úzkém případě, kdy byl poprvé pozorován, ale nikoli v obecnějších případech, které mohou nastat po celou dobu životnosti softwaru. Oprava problému v jedné oblasti často způsobí nechtěné softwarová chyba v jiné oblasti. Nakonec se může stát, že při přepracování některé funkce dojde při přepracování ke stejným chybám, které byly provedeny při původní implementaci funkce.
Proto se ve většině situací vývoje softwaru uvažuje správná praxe kódování, když je chyba nalezena a opravena, k zaznamenání testu, který chybu odhalí, a po dalších změnách programu jej pravidelně znovu spusťte.[5] Ačkoli to lze provést prostřednictvím ruční testování postupy využívající programovací techniky, často se to provádí pomocí automatizované testování nástroje.[6] Takový testovací sada obsahuje softwarové nástroje, které umožňují testovacímu prostředí provést veškerou regresi testovací případy automaticky; některé projekty dokonce nastavují automatizované systémy k opětovnému spouštění všech regresních testů ve stanovených intervalech a hlášení případných poruch (což by mohlo znamenat regresi nebo zastaralý test).[7] Běžnou strategií je spuštění takového systému po každé úspěšné kompilaci (pro malé projekty), každou noc nebo jednou týdně. Tyto strategie lze automatizovat pomocí externího nástroje.
Regresní testování je nedílnou součástí extrémní programování metoda vývoje softwaru. V této metodě jsou návrhové dokumenty nahrazeny rozsáhlým, opakovatelným a automatizovaným testováním celého softwarového balíčku v každé fázi proces vývoje softwaru. Regresní testování se provádí po ukončení funkčního testování, aby se ověřilo, že ostatní funkce fungují.
V podnikovém světě regresní testování tradičně provádí a Zabezpečení kvality softwaru tým poté, co vývojový tým dokončil práci. Vady zjištěné v této fázi jsou však nejnákladnější k odstranění. Tento problém je řešen vzestupem testování jednotky. Ačkoli vývojáři vždy psali testovací případy jako součást vývojového cyklu, tyto testovací případy obecně byly buď funkční testy nebo jednotkové testy které ověřují pouze zamýšlené výsledky. Testování vývojářů nutí vývojáře zaměřit se na testování jednotek a zahrnout pozitivní i negativní testovací případy.[8]
Techniky
Různé techniky regresního testování jsou:
Znovu otestovat vše
Tato technika kontroluje všechny testovací případy aktuálního programu a kontroluje jeho integritu. Ačkoli je to drahé, protože je třeba znovu spustit všechny případy, zajišťuje to, že kvůli upravenému kódu nedojde k žádným chybám.[9]
Výběr regresního testu
Na rozdíl od Znovu otestovat vše, tato technika běží část testovací sada (z důvodu nákladů na opakované testování všeho), pokud jsou náklady na výběr části testovací sady nižší než technika Retest all.[9]
Upřednostnění testovacího případu
Upřednostněte testovací případy, abyste zvýšili míru detekce chyb testovací sady. Techniky prioritizace testovacích případů plánují testovací případy tak, aby se testovací případy s vyšší prioritou provedly před testovacími případy, které mají nižší prioritu.[9]
Druhy stanovení priorit testovacích případů
- Obecné stanovení priorit - Upřednostněte testovací případy, které budou prospěšné pro následující verze
- Priorita specifická pro verzi - Upřednostněte testovací případy s ohledem na konkrétní verzi softwaru.
Hybridní
Tato technika je hybridem výběru regresního testu a upřednostňování testovacích případů.[9]
Výhody a nevýhody
Regresní testování se provádí, když jsou provedeny změny ve stávající funkčnosti softwaru nebo pokud je v softwaru opravena chyba. Regresní testování lze dosáhnout několika přístupy, pokud a vyzkoušet vše Tento přístup poskytuje jistotu, že změny provedené v softwaru neovlivnily stávající funkce, které jsou nezměněny.[10]
v agilní vývoj softwaru —Kde jsou životní cykly vývoje softwaru velmi krátké, zdroje jsou vzácné a změny softwaru jsou velmi časté - regresní testování může přinést spoustu zbytečných režijních nákladů.[10]
Ve vývojovém prostředí softwaru, které má tendenci používat Černá skříňka komponenty od třetí strany, provádění regresního testování může být obtížné, protože jakákoli změna v komponentě třetí strany může interferovat se zbytkem systému (a provádění regresního testování na komponentě třetí strany je obtížné, protože se jedná o neznámou entitu ).[10]
Použití
Regresní testování lze použít nejen pro testování správnost programu, ale často také ke sledování kvality jeho výstupu.[11] Například v designu a překladač, regresní testování může sledovat velikost kódu a čas potřebný ke kompilaci a provedení případů testovací sady.
Také v důsledku zavedení nových chyb vyžaduje údržba programu mnohem více testování systému na jeden napsaný příkaz než jakékoli jiné programování. Teoreticky po každé opravě musíte spustit celou dávku testovacích případů, které byly dříve spuštěny proti systému, aby bylo zajištěno, že nebyl poškozen obskurním způsobem. V praxi takový regresní testování musí skutečně přiblížit tuto teoretickou myšlenku a je velmi nákladná.
— Fred Brooks, Mýtický muž měsíc, str. 122
Regresní testy lze obecně rozdělit na funkční testy nebo jednotkové testy. Funkční testy procvičují celý program s různými vstupy. Jednotkové testy provádějí jednotlivé funkce, podprogramy, nebo objektové metody. Nástroje pro testování funkcí i nástroje pro testování jednotek mají tendenci být automatizované a často jsou produkty třetích stran, které nejsou součástí sady kompilátorů. Funkčním testem může být skriptovaná řada vstupů programu, možná dokonce zahrnujících automatizovaný mechanismus pro ovládání pohybů myši a kliknutí. Test jednotky může být sada samostatných funkcí v rámci samotného kódu nebo vrstva ovladače, která odkazuje na kód, aniž by změnila testovaný kód.
Viz také
Reference
- ^ Pezzè, Mauro; Young, Michal (2008). Testování a analýza softwaru: proces, principy a techniky. Wiley.
Testovací aktivity zaměřené na regresní problémy se nazývají (ne) regresní testování. Obvykle je „non“ vynecháno
- ^ Basu, Anirban (2015). Zajištění kvality softwaru, testování a metriky. Učení PHI. ISBN 978-81-203-5068-7.
- ^ Národní rada pro výzkum Výbor pro stárnutí avioniky ve vojenských letadlech: Stárnutí avioniky ve vojenských letadlech. National Academies Press, 2001, strana 2: „Každý cyklus obnovy technologie vyžaduje regresní testování.“
- ^ Boulanger, Jean-Louis (2015). Normy CENELEC 50128 a IEC 62279. Wiley. ISBN 978-1119122487.
- ^ Kolawa, Adam; Huizinga, Dorota (2007). Automatizovaná prevence defektů: Osvědčené postupy ve správě softwaru. Wiley-IEEE Computer Society Press. p. 73. ISBN 978-0-470-04212-0.
- ^ Automatizujte regresní testy, pokud je to možné, Automatické testování: Vybrané osvědčené postupy, Elfriede Dustin, Knihy Safari online
- ^ daVeiga, Nada (06.02.2008). „Změňte kód beze strachu: Využijte regresní bezpečnostní síť“. Dr. Dobb's Journal.
- ^ Dudney, Bill (08.12.2004). „Developer Developer Is 'In': Interview with Alberto Savoia and Kent Beck". Citováno 2007-11-29.
- ^ A b C d Duggal, Gaurav; Suri, Bharti (2008-03-29). Porozumění technikám regresního testování. Národní konference o výzvách a příležitostech. Mandi Gobindgarh, Punjab, Indie. CiteSeerX 10.1.1.460.5875.
- ^ A b C Yoo, S .; Harman, M. (2010). "Minimalizace regresního testování, výběr a stanovení priorit: průzkum". Testování, ověřování a spolehlivost softwaru. 22 (2): 67–120. doi:10,1002 / stvr.430.
- ^ Kolawa, Adam. „Regresní testování, programátor na programátora“. Wrox.
externí odkazy
- Doporučení regresního testování společnosti Microsoft
- Co je regresní testování Scott Barber a Tom Huston