Testování softwaru

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 22. prosince 2020; kontroly vyžadují 19 úprav .

Testování softwaru  je výzkumný proces, testování softwarového produktu , jehož cílem je ověřit shodu mezi skutečným chováním programu a jeho očekávaným chováním na konečné sadě testů vybraných určitým způsobem ( ISO /IEC TR 19759:2005) [ 1] .

Definice testů

Testování byly dány různé definice v různých časech a v různých zdrojích, včetně:

Historie

První softwarové systémy byly vyvíjeny v rámci vědeckovýzkumných programů nebo programů pro potřeby resortů obrany. Testování těchto produktů bylo prováděno přísně formalizovaným způsobem se záznamem všech testovacích postupů, testovacích dat a získaných výsledků. Testování bylo rozděleno do samostatného procesu, který začal po dokončení kódování, ale obvykle jej prováděli stejní pracovníci.

V 60. letech minulého století byl kladen velký důraz na „vyčerpávající“ testování, které by mělo být prováděno pomocí všech cest v kódu nebo všech možných vstupů. Bylo poznamenáno, že za těchto podmínek není úplné testování softwaru možné, protože za prvé je počet možných vstupů velmi velký, za druhé existuje mnoho cest a za třetí je obtížné najít problémy v architektuře a specifikacích. Z těchto důvodů bylo „vyčerpávající“ testování odmítnuto a považováno za teoreticky nemožné.

Na počátku 70. let bylo testování softwaru označováno jako „proces demonstrování správnosti produktu“ nebo „činnost ověřování správného fungování softwaru“. V rodícím se softwarovém inženýrství bylo ověření softwaru označováno jako „důkaz správnosti“. Zatímco koncept byl teoreticky slibný, v praxi byl časově náročný a nebyl dostatečně komplexní. Bylo rozhodnuto, že důkaz správnosti je neefektivní metoda testování softwaru. V některých případech se však prokázání správného fungování používá dodnes, například akceptační zkoušky. V druhé polovině 70. let bylo testování chápáno jako spouštění programu se záměrem najít chyby, nikoli prokázat, že funguje. Úspěšný test je test, který odhalí dříve neznámé problémy. Tento přístup je přímo opačný než ten předchozí. Tyto dvě definice představují „paradox testování“, který je založen na dvou opačných tvrzeních: na jedné straně vám testování umožňuje ujistit se, že produkt funguje dobře, a na druhé straně odhaluje chyby v programech, což ukazuje, že produkt nefunguje. Druhý cíl testování je produktivnější z hlediska zlepšování kvality, protože neumožňuje ignorovat softwarové chyby.

V 80. letech se testování rozšířilo o prevenci defektů. Návrh testu je nejúčinnější známou technikou prevence chyb. Zároveň se začaly vyjadřovat myšlenky, že je potřeba metodika testování, konkrétně, že testování by mělo zahrnovat kontroly v průběhu celého vývojového cyklu, a mělo by jít o řízený proces. Při testování je nutné kontrolovat nejen sestavený program, ale také požadavky, kód, architekturu a samotné testy. „Tradiční“ testování, které existovalo až do počátku 80. let, se týkalo pouze zkompilovaného hotového systému (dnes běžně označovaného jako systémové testování), ale od té doby se testeři zapojují do všech aspektů životního cyklu vývoje. To umožnilo dříve najít problémy v požadavcích a architektuře, a tím zkrátit dobu vývoje a rozpočet. V polovině 80. let se objevily první nástroje pro automatizované testování. Počítač měl být schopen provést více testů než člověk a navíc spolehlivěji. Zpočátku byly tyto nástroje extrémně jednoduché a neuměly psát skripty ve skriptovacích jazycích.

Počátkem 90. let začal pojem „testování“ zahrnovat plánování, navrhování, vytváření, údržbu a provádění testů a testovacích prostředí, a to znamenalo přechod od testování k zajišťování kvality, pokrývající celý cyklus vývoje softwaru. V této době se začaly objevovat různé softwarové nástroje na podporu testovacího procesu: pokročilejší automatizační prostředí s možností vytvářet skripty a generovat sestavy, systémy pro správu testů a software pro zátěžové testování. V polovině 90. let, s rozvojem internetu a rozvojem velkého množství webových aplikací, si začalo získávat zvláštní oblibu „agilní testování“ (obdoba agilních programovacích metodologií).

Normy týkající se testování

Klasifikace typů a metod testování

Existuje několik kritérií, podle kterých je obvyklé klasifikovat typy testování. Obvykle jsou následující:

Podle předmětu testování Znalost vnitřní struktury systému Podle stupně automatizace Podle stupně izolace [7] [8] Časem testování Na základě pozitivních scénářů
  • pozitivní testování
  • Negativní testování
Podle stupně připravenosti na testování
  • Testování dokumentace (formální testování)
  • Intuitivní testování ( eng.  ad hoc testování )

Testovací úrovně

  • Testování komponent −  Testuje se nejmenší možná komponenta k testování, jako je jedna třída nebo funkce. Testování komponent často provádějí vývojáři softwaru.
  • Testování integrace  − Testují se rozhraní mezi komponentami, subsystémy nebo systémy. Pokud je v této fázi časová rezerva, provádí se testování iterativně s postupným připojováním navazujících subsystémů.
  • Testování systému  – Integrovaný systém je testován na shodu s požadavky .
    • Alfa testování je imitace skutečné práce se systémem vývojářů na plný úvazek nebo skutečné práce se systémem potenciálními uživateli/zákazníky. Nejčastěji se alfa testování provádí v rané fázi vývoje produktu, ale v některých případech může být aplikováno na hotový produkt jako interní akceptační testování. Někdy se alfa testování provádí pod debuggerem nebo pomocí prostředí, které pomáhá rychle identifikovat nalezené chyby. Nalezené chyby lze odeslat testerům k dalšímu prošetření v prostředí podobném tomu, ve kterém bude program používán.
    • Beta testování  – V některých případech je předběžná verze distribuována (v případě proprietárního softwaru někdy s omezenou funkčností nebo dobou běhu) nějaké větší skupině lidí, aby se zajistilo, že produkt obsahuje málo chyb. Někdy se beta testování provádí s cílem získat zpětnou vazbu o produktu od jeho budoucích uživatelů.

U bezplatného softwaru s otevřeným zdrojovým kódem fáze alfa testování charakterizuje funkční obsah kódu a beta testování charakterizuje  fázi opravy chyb. Zároveň jsou zpravidla v každé fázi vývoje koncovým uživatelům k dispozici průběžné výsledky práce.

Statické a dynamické testování

Níže popsané techniky – testování bílé skříňky a testování černé skříňky – předpokládají, že se kód spouští, a rozdíl je pouze v informacích, které má tester k dispozici. V obou případech se jedná o dynamické testování .

Při statickém testování se programový kód nespouští - program je analyzován na základě zdrojového kódu, který je načten ručně nebo analyzován speciálními nástroji. V některých případech se neanalyzuje zdrojový kód, ale přechodný kód (jako je bytecode nebo MSIL kód ).

Statické testování také zahrnuje požadavky na testování , specifikace , dokumentaci .

Regresní testování

Po provedení změn v další verzi programu regresní testy potvrdí, že provedené změny neovlivnily výkon zbývajících funkcí aplikace. Regresní testování lze provádět ručně i pomocí nástrojů pro automatizaci testování .

Testovací skripty

Testeři používají testovací scénáře na různých úrovních: jak při testování komponent, tak při integraci a testování systému. Testovací skripty jsou obvykle psány pro testování komponent, které s největší pravděpodobností selžou, nebo chyba, která není včas nalezena, může být drahá.

Testování bílé krabice, černé krabice a šedé krabice

V závislosti na přístupu vývojáře testu ke zdrojovému kódu testovaného programu se rozlišuje mezi „ testováním (strategií) bílé skříňky “ a „ testováním (strategií) černé skříňky “.

Při testování bílé skříňky (také nazývané testování průhledné skříňky ) má vývojář testu přístup ke zdrojovému kódu programů a může psát kód, který odkazuje na knihovny testovaného softwaru. To je typické pro testování komponent, kdy se testují pouze části systému. Zajišťuje, že konstrukční prvky jsou do určité míry funkční a stabilní. Testování bílého pole používá metriky pokrytí kódu nebo testování mutací .

Při testování černé skříňky má tester přístup k programu pouze přes stejná rozhraní jako zákazník nebo uživatel, nebo přes externí rozhraní, která umožňují připojení jiného počítače nebo jiného procesu k systému za účelem testování. Testovací komponenta může například virtuálně stisknout klávesy nebo tlačítka myši v testovaném programu pomocí mechanismu procesní komunikace s jistotou, že vše probíhá dobře, že tyto události způsobí stejnou odezvu jako skutečné stisknutí kláves a tlačítek myši. Testování černé skříňky se zpravidla provádí pomocí specifikací nebo jiných dokumentů, které popisují požadavky na systém. Typicky je u tohoto typu testování kritériem pokrytí součet pokrytí struktury vstupních dat , pokrytí požadavků a pokrytí modelu (v testování založeném na modelu ).

Při testování v šedém poli má vývojář testu přístup ke zdrojovému kódu, ale při přímém spouštění testů přístup ke kódu obvykle není vyžadován.

Zatímco „alfa“ a „beta testování“ se týkají fází před uvedením produktu na trh (a také implicitně velikosti testovací komunity a omezení testovacích metod), testování bílé skříňky a černé skříňky označuje způsoby, jakými tester dosáhne cíle.

Beta testování je obecně omezeno na techniky černé skříňky (ačkoli konzistentní podskupina testerů obvykle pokračuje v testování bílé skříňky souběžně s beta testováním). Pojem "beta testování" tedy může označovat stav programu (blíže k vydání než "alfa") nebo může označovat určitou skupinu testerů a proces, který tato skupina provádí. To znamená, že tester může pokračovat v práci na testování white-box, i když je program již "beta", ale v tomto případě není součástí "beta testování".

Pokrytí kódu

Pokrytí kódu ukazuje procento zdrojového kódu programu, který byl během testování spuštěn („pokryt“). Podle metod měření, pokrytí operátora, pokrytí podmínek, pokrytí trasy, pokrytí funkcí atd.

Viz také

Poznámky

  1. 1 2 ISO/IEC TR 19759:2005 ( SWEBOOK )
  2. Myers G. Spolehlivost softwaru. M: Svět, 1980
  3. Beiser B. Techniky testování softwaru, druhé vydání. — NY: van Nostrand Reinhold, 1990
  4. ANSI/IEEE standard 610.12-1990 Glosář technologie SE NY:IEEE, 1987
  5. Sommerville I. Softwarové inženýrství, 8. vydání. Harlow, Anglie: Pearson Education, 2007
  6. Standardní glosář pojmů používaných při testování softwaru, verze 2.3, ed. Erik van Veenendaal // International Software Testing Qualifications Board (ISTQB), 2014
  7. GOST R 56920-2016 | NÁRODNÍ STANDARDY . protect.gost.ru. Získáno 12. března 2017. Archivováno z originálu 12. března 2017.
  8. Softwarové a systémové inženýrství Testování softwaru Část 1: Pojmy a definice  // ISO/IEC/IEEE 29119-1:2013(E). — 2013-09-01. — S. 1–64 . - doi : 10.1109/IEEEESTD.2013.6588537 . Archivováno z originálu 18. prosince 2016.

Literatura

  • Glenford Myers, Tom Badgett, Corey Sandler. The Art of Software Testing, 3rd Edition = The Art of Software Testing, 3rd Edition. - M .: "Dialektika" , 2012. - 272 s. — ISBN 978-5-8459-1796-6 . Archivováno 19. července 2012 na Wayback Machine
  • Lisa Crispin, Janet Gregory. Agilní testování: Praktický průvodce pro testery a agilní týmy. - M. : "Williams", 2010. - 464 s. - (Podpisová řada Addison-Wesley). - 1000 výtisků.  - ISBN 978-5-8459-1625-9 .
  • Kaner Kem, Folk Jack, Nguyen Yong Kek. Testování softwaru. Základní pojmy řízení podnikových aplikací. - Kyjev: DiaSoft, 2001. - 544 s. — ISBN 9667393879 .
  • Culbertson Robert, Brown Chris, Cobb Gary. Rychlé testování. - M .: "Williams", 2002. - 374 s. — ISBN 5-8459-0336-X .
  • Sinitsyn S. V., Nalyutin N. Yu. Ověření softwaru. - M. : BINOM, 2008. - 368 s. - ISBN 978-5-94774-825-3 .
  • Beizer B. Testování černé skříňky. Technologie funkčního testování softwaru a systémů. - Petrohrad. : Peter, 2004. - 320 s. — ISBN 5-94723-698-2 .

Odkazy